[WIP] Ultima Underworld level conversion
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
[WIP] Ultima Underworld level conversion
New mapper here! A couple weekends ago I was inspired to try Doom mapping, and I just replayed Ultima Underworld and thought I could create it's levels for Doom. So here I go, learning a lot, and still got lots to go. I just figured out polyobjects and swinging doors, so the level is now full of those. I'm writing in UDMF in a PK3 file, and targeting GZDoom, it seems to have the most features.
Latest Tutorial (2022-05-14)
Latest Download Link (2022-04-22)
Update 2023-12-15: I've been working on this again in the past few months. I didn't like the direction I was going with that tutorial project, so I scrapped most of that code and started over. Tis project I'm calling "Take Two". My new idea is to put the interface in the inventory bar. Here's a demo of how that's coming along:
Update 2022-05-14: Posted a snapshot of the [unfinished] tutorial. See this post for details.
Update 2022-04-22: Playable set of maps - A cluster hub with proper enter/exit points so the whole game is explorable. Many textures have materials and for test I've attached a dynamic light to the player. Have a look around! And have a look at the zanium mines.
Update 2022/4/13: Video showing normal maps vs plain textures
Update 2022/4/9: Video of the title sequence:
Update 2022-01-09: Added all the loose items into the level. Few are animated, fewer are interactive, so it's mostly static decorations. But it's s start. Now the levels don't look so empty.
Update 2022-01-05: Added Monsters - 75 in total. UW1 defines 75 sets of monster sprites but only calls 63 in the actual game, so you'll see monsters here never seen in-game. To see the monster zoo, touch the inscription on the west wall in the start room.
Latest Tutorial (2022-05-14)
Latest Download Link (2022-04-22)
Update 2023-12-15: I've been working on this again in the past few months. I didn't like the direction I was going with that tutorial project, so I scrapped most of that code and started over. Tis project I'm calling "Take Two". My new idea is to put the interface in the inventory bar. Here's a demo of how that's coming along:
Update 2022-05-14: Posted a snapshot of the [unfinished] tutorial. See this post for details.
Update 2022-04-22: Playable set of maps - A cluster hub with proper enter/exit points so the whole game is explorable. Many textures have materials and for test I've attached a dynamic light to the player. Have a look around! And have a look at the zanium mines.
Update 2022/4/13: Video showing normal maps vs plain textures
Update 2022/4/9: Video of the title sequence:
Update 2022-01-09: Added all the loose items into the level. Few are animated, fewer are interactive, so it's mostly static decorations. But it's s start. Now the levels don't look so empty.
Update 2022-01-05: Added Monsters - 75 in total. UW1 defines 75 sets of monster sprites but only calls 63 in the actual game, so you'll see monsters here never seen in-game. To see the monster zoo, touch the inscription on the west wall in the start room.
Last edited by Sir Robin on Sat Dec 16, 2023 2:26 am, edited 8 times in total.
-
- Posts: 150
- Joined: Mon Jan 21, 2019 10:10 am
Re: Ultima Underworld
Looks great. Good work on this The Ultima Underworld games are some fantastic games, they look basic enough to make a replica happen so hopefully
-
-
- Posts: 26540
- Joined: Tue Jul 15, 2003 4:58 pm
- Location: Scotland
Re: Ultima Underworld
Given that you said you are a new mapper (and given your interest in in the Ultima games), I assume that your name is just coincidence and that you are not the same Sir Robin as the one who used to run Sir Robin's Doom Castle
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
I think so! Yeaah, the layouts are pretty simple. I actually was inspired when I found another person had made a UW level for doom. But they changed the scale, textured it with standard Doom textures, changed the flow of the level, basically took a lot of liberties with the design. It made me wonder what it would take to create the levels authentically and inspired me to try so now here I am.thugsta wrote:Looks great. Good work on this The Ultima Underworld games are some fantastic games, they look basic enough to make a replica happen so hopefully
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
Well, given that I'm a new mapper and he looks experienced and established, I'm going to say "no"Enjay wrote:Given that you said you are a new mapper (and given your interest in in the Ultima games), I assume that your name is just coincidence and that you are not the same Sir Robin as the one who used to run Sir Robin's Doom Castle
I picked this name because it's the name I used in the Ultima games, from the Monty Python character. I've actually got a buddy who LARPs in a full Sir Robin costume, shield with a giant chicken on it and everything, he's hilarious.
Well, sorry I chose a name of someone who's already established. Maybe I'll think of another one.
-
- Posts: 473
- Joined: Sun Mar 21, 2021 9:40 pm
- Preferred Pronouns: He/Him
- Operating System Version (Optional): linux mint 21
- Graphics Processor: ATI/AMD (Modern GZDoom)
Re: Ultima Underworld
Freaking sweet! I'm a diehard Ultima fan too,so I would love to test this when you get something out! If you need any help on monsters or weapons please hit me up!
-
-
- Posts: 17456
- Joined: Mon Oct 27, 2003 12:07 am
- Location: Kuala Lumpur, Malaysia
Re: Ultima Underworld
I love both the Underworld games and at one point I was wishing someone made a UW -> Doom WAD converter. :)
It's particulary impressive that your recreation has the proper scale and everything. I hope you finish the maps!
It's particulary impressive that your recreation has the proper scale and everything. I hope you finish the maps!
-
-
- Posts: 17924
- Joined: Fri Jul 06, 2007 3:22 pm
Re: Ultima Underworld
I don't think you have to worry about it, since that other Sir Robin doesn't seem to have been active during the last 15 years...Sir Robin wrote:Well, sorry I chose a name of someone who's already established. Maybe I'll think of another one.
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
Awesome! I've got a lot of things to learn - lots of things I want to implement that I don't know how to do yet. Anything you can help with would be great!kalensar wrote:Freaking sweet! I'm a diehard Ultima fan too,so I would love to test this when you get something out! If you need any help on monsters or weapons please hit me up!
I'm not going to flood this thread with those questions, but keep an eye out for my posts in other areas.
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
Yup, I'm writing a script to convert UW levels to Doom levels. Right now all the level geometry and texturing works, but I've got no objects like monsters and items and doors and bridges. And I have a scale factor in my script, right now its set so that one UW world tile is 64x64 in Doom because that feels right. But the UW levels look a little short and squatty in comparison, so maybe I need to have a separate ScaleXY and ScaleZ settings.Nash wrote:I love both the Underworld games and at one point I was wishing someone made a UW -> Doom WAD converter.
It's particulary impressive that your recreation has the proper scale and everything. I hope you finish the maps!
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
Here's a link to what I have so far
GZDOOMUW
Give it a try, tell me what you think. Here's some notes:
Darkness - I set all sectors to 64, because that's what looks right on my system. I understand different people with different systems and settings are going to be rendered differently. Adjust what you need to, but basically you shouldn't be able to see more than about 15 feet in front of you. Here's a screenshot of the original if you want to try to match it, give me feedback on what settings you used.
The geometry and texturing should be complete, but there are no things like monsters and pickups, other than a couple I just put in for testing. I've manually put in some doors and bridges to test them. Switches are working too. The pillars puzzle room is implemented, kinda hacky, but it works for now. The lever on the far left resets the room. The rest should be obvious after that.
There shouldn't be anywhere you can get stuck. If you fall off the platforms in the southeast (between the shrine and the fortune teller) behind the locked door without getting the key, you might think you're stuck but there is a way out, same way you do it in the real game.
Textures should be all good. The exception is that for secret doors the textures are a bit off, as a clue that there is a door there. Also, around grates and drains and plaques and other "decals" you may notice texture misalignments. These were present in the original game. I haven't decided if I want to try to fix them or just leave them "authentic"
One of the liberties I had to take was in scale. In the original game, doors were 32x52. DoomGuy won't fit through that, so I've scaled them to 48x56. If doors look different, that's why.
Also - the level works in GZDOOM, but UDB doesn't show my textures or doomed objects, is there a way to get that to work?
GZDOOMUW
Give it a try, tell me what you think. Here's some notes:
Darkness - I set all sectors to 64, because that's what looks right on my system. I understand different people with different systems and settings are going to be rendered differently. Adjust what you need to, but basically you shouldn't be able to see more than about 15 feet in front of you. Here's a screenshot of the original if you want to try to match it, give me feedback on what settings you used.
The geometry and texturing should be complete, but there are no things like monsters and pickups, other than a couple I just put in for testing. I've manually put in some doors and bridges to test them. Switches are working too. The pillars puzzle room is implemented, kinda hacky, but it works for now. The lever on the far left resets the room. The rest should be obvious after that.
There shouldn't be anywhere you can get stuck. If you fall off the platforms in the southeast (between the shrine and the fortune teller) behind the locked door without getting the key, you might think you're stuck but there is a way out, same way you do it in the real game.
Textures should be all good. The exception is that for secret doors the textures are a bit off, as a clue that there is a door there. Also, around grates and drains and plaques and other "decals" you may notice texture misalignments. These were present in the original game. I haven't decided if I want to try to fix them or just leave them "authentic"
One of the liberties I had to take was in scale. In the original game, doors were 32x52. DoomGuy won't fit through that, so I've scaled them to 48x56. If doors look different, that's why.
Also - the level works in GZDOOM, but UDB doesn't show my textures or doomed objects, is there a way to get that to work?
-
-
- Posts: 17924
- Joined: Fri Jul 06, 2007 3:22 pm
Re: Ultima Underworld
You could define a custom [wiki]PlayerPawn[/wiki] with slimmer proportions. This would also allow you to adjust the view height, as that may play a role in the perception of levels as being "squattier" than in the original game.Sir Robin wrote:One of the liberties I had to take was in scale. In the original game, doors were 32x52. DoomGuy won't fit through that, so I've scaled them to 48x56. If doors look different, that's why.
For the DB issue, are you loading your resources as, well, resources? Does UDB complain about errors when you open a map?
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
I'm defining a custom player so I can control the start-out weapons. Is that the same place I can set the height and view height? I'll look into that.Gez wrote:You could define a custom [wiki]PlayerPawn[/wiki] with slimmer proportions. This would also allow you to adjust the view height, as that may play a role in the perception of levels as being "squattier" than in the original game.Sir Robin wrote:One of the liberties I had to take was in scale. In the original game, doors were 32x52. DoomGuy won't fit through that, so I've scaled them to 48x56. If doors look different, that's why.
For the DB issue, are you loading your resources as, well, resources? Does UDB complain about errors when you open a map?
Part of the squattiness I was seeing is that I had Dosbox running at 320x200. I set it to stretch to 320x240 and now it looks much better.
If I make the player pawn smaller does that make the game easier? Like baddies are less likely to hit the smaller hitbox? What are the other effects of changing the player size that I should consider?
In the original game, it would set the door and frame to nonblocking as soon as the door opened, maybe I could do that here? How complicated would that be to do? The doors are swinging polyobject doors. The frames are built with sectors and voids. I guess I could change that to be polyobjects or 3d floors, whatever would be easier/better.
The issue with UBD seems to be that it doesn't look more than 1 folder deep for resources. I noticed that all the stuff that is working is right in the textures or sprites folder or whatever, but the stuff deeper than that isn't working. Maybe that's just a limitation of UDB?
-
-
- Posts: 26540
- Joined: Tue Jul 15, 2003 4:58 pm
- Location: Scotland
Re: Ultima Underworld
This is looking really nice. Despite the fact I was (and am) a huge Eye of the Beholder fan, I never really got into the Ultima games (I think because my computer couldn't handle them at a the critical time when I would have been sucked in by the games). So I can't really comment on how authentic it is, but it certainly seems to have the right kind of vibe going on.
[edit]Actually, I just checked and your polyobjects seem to be made of 2s lines already. So you could just try giving the lines that make them a tag and changing their blocking with [wiki]Line_SetBlocking[/wiki] in a script.
However, I have loaded resources from PK3s with nested folders and I have not had a problem with those. I realise it might not be your choice of workflow setup, but you could try loading a PK3 instead of a folder.
Yes, you can set the height, viewheight etc in your player definition.Sir Robin wrote:I'm defining a custom player so I can control the start-out weapons. Is that the same place I can set the height and view height? I'll look into that.
Honestly, I'm not sure if it would make it easier or not. I guess, given that you are making every element of this game, you would "just" need to ensure that the enemies that you create can hit and do the sort of damage that you expect them to. The other consequence of size changing that springs to mind is the obvious one - if the player is a different (smaller) size he could fit between or under gaps that the Doom player couldn't. Again, given that you are designing the whole game, you "just" need to ensure that the player can only get through gaps that you want him to.Sir Robin wrote:If I make the player pawn smaller does that make the game easier? Like baddies are less likely to hit the smaller hitbox? What are the other effects of changing the player size that I should consider?
I think it would be easier to set the doors so that they always swing away from the player regardless of which side they are opened from. Would that be suitable? Generally, polyobjects cannot be made nonblocking because they are usually made of 1 sided solid lines. But there are ways of making polyobjects using 2 sided lines and you might be able to change their blocking status with a script when you open them. Polyobjects made in this way do come with their own limitations though - though I suspect with the map layout that you have, this might not be a problem.Sir Robin wrote:In the original game, it would set the door and frame to nonblocking as soon as the door opened, maybe I could do that here? How complicated would that be to do? The doors are swinging polyobject doors. The frames are built with sectors and voids. I guess I could change that to be polyobjects or 3d floors, whatever would be easier/better.
[edit]Actually, I just checked and your polyobjects seem to be made of 2s lines already. So you could just try giving the lines that make them a tag and changing their blocking with [wiki]Line_SetBlocking[/wiki] in a script.
I don't usually load stuff from a folder in UDB so I can't say if it has problems with that or not. If it does, it seems like it might not be intended. You should perhaps ask in the UDB thread.Sir Robin wrote:The issue with UBD seems to be that it doesn't look more than 1 folder deep for resources. I noticed that all the stuff that is working is right in the textures or sprites folder or whatever, but the stuff deeper than that isn't working. Maybe that's just a limitation of UDB?
However, I have loaded resources from PK3s with nested folders and I have not had a problem with those. I realise it might not be your choice of workflow setup, but you could try loading a PK3 instead of a folder.
-
- Posts: 537
- Joined: Wed Dec 22, 2021 7:02 pm
- Graphics Processor: Intel (Modern GZDoom)
- Location: Medellin, Colombia
Re: Ultima Underworld
Yeah, I played those back in the day - Eye of the Beholder, Lands of Lore, Might and Magic, Xeen, etc - they all kinda blur together in my mind now. UW blew me away because I was so used to those 8-foot strides and 90-degee turns, the freedom of UW was just mind boggling. And yeah, lots of Origin games required a hardware upgrade, but they pushed the envelope. I remember when it came out I had a low-end 486, my brother had a mid-grade 386. Mine would play it fine, his would play it on lower graphic settings, but still played it.Enjay wrote:This is looking really nice. Despite the fact I was (and am) a huge Eye of the Beholder fan, I never really got into the Ultima games (I think because my computer couldn't handle them at a the critical time when I would have been sucked in by the games). So I can't really comment on how authentic it is, but it certainly seems to have the right kind of vibe going on.
A while back I saw someone did a rip of EotB graphics for Doom - I don't remember if it was in this forum or somewhere else.
I'm a big fan of game where the doors always open away from whoever is opening them - doesn't make sense from a reality perspective but it's better playability. I did my doors in this map to open the ways they did in the original game. It's one of those points I have to decide if I want to stay authentic or take liberties.Enjay wrote:I think it would be easier to set the doors so that they always swing away from the player regardless of which side they are opened from. Would that be suitable? Generally, polyobjects cannot be made nonblocking because they are usually made of 1 sided solid lines. But there are ways of making polyobjects using 2 sided lines and you might be able to change their blocking status with a script when you open them. Polyobjects made in this way do come with their own limitations though - though I suspect with the map layout that you have, this might not be a problem.
[edit]Actually, I just checked and your polyobjects seem to be made of 2s lines already. So you could just try giving the lines that make them a tag and changing their blocking with [wiki]Line_SetBlocking[/wiki] in a script.
What I meant was that the original game just makes the entire door and door frame non-blocking when the door opens. Think of a game like the old Wolf3d - when the door opened the entire square was open, no door frame or anything to get hung up on. That's about how UW did it, I need to look in to how difficult that would be to script.
That's an idea to change the size of the player. I'd also have to change the monsters to be small enough to fit through. I don't know if that makes the game feel weird if the hit boxes are small and monster are hard to hit. I'll have to do some experimenting when I get that far.
Yeah, I haven't look into it to deep yet. I write scripts that generate the levels for me, I just use UDB to verify that it looks about right, then launch GZdoom to try it out. So it doesn't bother me too much that it doesn't work right, but I'd like to fix it at some point.Enjay wrote:I don't usually load stuff from a folder in UDB so I can't say if it has problems with that or not. If it does, it seems like it might not be intended. You should perhaps ask in the UDB thread.
However, I have loaded resources from PK3s with nested folders and I have not had a problem with those. I realise it might not be your choice of workflow setup, but you could try loading a PK3 instead of a folder.
Loading a folder is just like a PK3 - you build a folder with the same structure as you would have built in the PK3. But it's better for editing because you don't have to keep unpacking and repacking it every time you want to change something, you just edit the files directly. You only need to pack it up to upload it somewhere or give it to someone.
Anyway, I've taken a break from mapping and have been working on getting some monsters in. UW1 had 75 monsters defined with over 4000 animation frames. I've got most of those pulled in now. UW only used 63 of them so I'll have 12 new unused monsters. So I've got my work cut out for me