Jump to content
The Dark Mod Forums

Ultima Underworld to Dark Mod Map conversion sample.


hank morgan

Recommended Posts

The sprite question was more to do with seeing what is possible rather than making a firm decision on using that method. Most original sprites for objects are pretty tiny and I don't think they would scale up well. I'm not sure what my endgame is regarding remakes so at the moment I'm just having fun poking at various things and seeing what I can do and try to make something cool, unique and yet nostalgic. :D

 

Heh... In my wild imagination, I saw -for a brief moment- TDM forking into a new system shock / deus ex branch game.

  • Like 2

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

Ha, the whole thing is a bit mad anyways. A SS/UW remake running on top of a Thief remake running on top of a game that had plenty of System Shock influences in it's design. Lets just get some working level maps out of it first.

 

I hope to do some cool things but I'm grounded as well about running into roadblocks such as level persistance, artwork and new sub-systems that don't currently exist for TDM.

Link to comment
Share on other sites

Hm.. Does it necessarily even need level persistance: deus ex-games, for example, ran pretty well so that each mission was a single encapsulated mission, similarily to TDM missions.

And I think greebo worked on campaign support, and that means there is a way to communicate information between missions. (If you didn't kill baddie A in mission 2, he will be back in mission 4.)

 

EDIT: here: http://wiki.thedarkmod.com/index.php?title=Setting_up_Campaigns#Scripting

Clipper

-The mapper's best friend.

Link to comment
Share on other sites

Hm.. Does it necessarily even need level persistance: deus ex-games, for example, ran pretty well so that each mission was a single encapsulated mission, similarily to TDM missions.

And I think greebo worked on campaign support, and that means there is a way to communicate information between missions. (If you didn't kill baddie A in mission 2, he will be back in mission 4.)

 

EDIT: here: http://wiki.thedarkm...aigns#Scripting

 

Yeah. I've done experiments with moving between levels using the endlevel trigger and I was able to use cvars passed between levels to support multiple entry points using teleports but I was never able to get inventory to stick and of course everything resets when I return to the previous level but then again I'd never used the atdm:campaigninfo entity so that might explain that.

Link to comment
Share on other sites

Hm.. Does it necessarily even need level persistance: deus ex-games, for example, ran pretty well so that each mission was a single encapsulated mission, similarily to TDM missions.

 

If this is going to act in a similar way to the original games then yes, persistence is essential. Unlike Deus Ex the games freely allow you to leave objects in any location and return to them later - it would break quests if essential items could be lost by a level transition. In the Underworld games interactions with NPCs also rely on character specific and global variables being maintained.

 

That's not meant to discourage - I'm sure it's possible to implement but it's potentially a big task.

Link to comment
Share on other sites

  • 2 weeks later...

Just dropping off a screen-shot which also serves as an example of a question I wanted to ask.

 

V9ISHcl.jpg

 

One of the first things you'll see is the way the sloped surfaces are all misaligned. Now when I did the texturing for the vertical walls in the tool I cheated a bit in two ways:

1. I have a config file for scaling each texture and

2. since I knew the textures would be aligned in steps of 1/8th portions(8 "steps" being the height of a non repeated texture) depending on how high up they are so I just set the vertical offset param by that fraction and it just works.

 

Now I had assumed that I could do something similar with sloped surfaces but I can't quite seem to get it to work. I'm able to work out the scaling value from the ratio of a sloped hypotenuse to a flat surface (it's based on a tilemap so everything has fixed dimensions) but not the offset value.

 

What I want to achieve for those sloped textures is for each tile to consist of a 1x1 aligned none repeating texture.

 

I think I need to start doing some calculations based on matrix transformations on the normal of the plane. That's great and all except I don't really understand what that means yet. :blink: Anyone know of a primer on this stuff so I can wrap my head around it a bit? Most googling on the subject of the texture parameters just tells me what I already know about the meaning of the values (scale, offset etc) but not how to calculate them for a given surface at a particular position. I also think there is a related issue with the orientation of the surfaces depending on which way the slope is orientated. I've also looked at the DR code for this stuff but again I think I need to understand the base math behind all this.

  • Like 3
Link to comment
Share on other sites

Screenshot does look good - even with the unaligned textures :)

 

One of the first things you'll see is the way the sloped surfaces are all misaligned. Now when I did the texturing for the vertical walls in the tool I cheated a bit in two ways:

1. I have a config file for scaling each texture and

2. since I knew the textures would be aligned in steps of 1/8th portions(8 "steps" being the height of a non repeated texture) depending on how high up they are so I just set the vertical offset param by that fraction and it just works.

 

I'm not sure I understand the motivation for having a separate scaling per texture. Isn't the scaling factor(s) that you need determined by the world coordinates that you're using when you write the map file rather than the textures themselves?

 

Now I had assumed that I could do something similar with sloped surfaces but I can't quite seem to get it to work. I'm able to work out the scaling value from the ratio of a sloped hypotenuse to a flat surface (it's based on a tilemap so everything has fixed dimensions) but not the offset value.

 

What I want to achieve for those sloped textures is for each tile to consist of a 1x1 aligned none repeating texture.

 

I'm not an expert on this but from what I've seen you essentially need to determine the matrix required to transform surface coordinates of the tile to texture coordinates. This would be something like:

 

[rs0 rs1 tx]

[rs2 rs3 ty]

[ 0 0 1]

 

rs0..3 control scaling and rotation, tx and ty control translation. As the "Z" coordinate isn't useful the last row is always 0,0,1 and not saved in the map file. Even for flat floors you'll eventually need to tackle rs0..3 to ensure textures are rotated correctly although in Underworld at least the rotation is always the same for all tiles from what I remember.

 

The tricky bit is obviously computing this matrix as in a general case I'd guess you'd need to compute the inverse of the world -> surface matrix and then use that to set up the appropriate scaling, rotation and offset. However, in this case I'd guess that you may get away with altering the values of tx and ty by an amount based on the direction of the slope and it's height.

 

As far as specific links, this seems the most useful I spotted in a quick google but obviously it doesn't hold your hand through the matrix maths: http://www.doom3world.org/phpbb2/viewtopic.php?f=1&t=16228

Link to comment
Share on other sites

I'm not sure I understand the motivation for having a separate scaling per texture. Isn't the scaling factor(s) that you need determined by the world coordinates that you're using when you write the map file rather than the textures themselves?

 

It's a bit of a throw back to how it works in Underworld. In Underworld you have different texture sizes for floor and wall textures so at the time it was an easy cheat to get it working without hardcoding values. I was more concerned with having the right texture in the right location rather than the correcly aligned texture but as I see more complex shapes and want to polish things up I have to implement a better solution

 

I'm not an expert on this but from what I've seen you essentially need to determine the matrix required to transform surface coordinates of the tile to texture coordinates. This would be something like:

 

[rs0 rs1 tx]

[rs2 rs3 ty]

[ 0 0 1]

 

rs0..3 control scaling and rotation, tx and ty control translation. As the "Z" coordinate isn't useful the last row is always 0,0,1 and not saved in the map file. Even for flat floors you'll eventually need to tackle rs0..3 to ensure textures are rotated correctly although in Underworld at least the rotation is always the same for all tiles from what I remember.

 

The tricky bit is obviously computing this matrix as in a general case I'd guess you'd need to compute the inverse of the world -> surface matrix and then use that to set up the appropriate scaling, rotation and offset. However, in this case I'd guess that you may get away with altering the values of tx and ty by an amount based on the direction of the slope and it's height.

 

As far as specific links, this seems the most useful I spotted in a quick google but obviously it doesn't hold your hand through the matrix maths: http://www.doom3worl...php?f=1&t=16228

 

Thanks. I'd seen that same page as well in my research and I'm starting to wrap my head around the problem. I think I just need to read up on the math behind it all once I get a block of time for it. It's not a pressing problem and certainly not one without a solution though so I'm not worried at this early stage.

Link to comment
Share on other sites

  • 3 weeks later...

Assuming you're an American, I'd totally cordially urge you to submit this as a mod for the Square Enix Thief mod contest. With some caveats, of course--it's not like you can distribute the UW1 demo, but you can create a video demonstrating your work! :)

yay seuss crease touss dome in ouss nose tair

Link to comment
Share on other sites

Fantastic work. I assume the lighting has been added manually?

 

No. Procedurally generated based on the shade values for the original tiles. It's a bit inefficent at the moment since I don't merge continous areas of light together as one but everything you see is automatically generated. I can barely use a map editor to save my life. My approach to the tool is that it will eventually it will do all the work of extracting assets, building material files, sound shaders, gui files etc so I won't be put in a position where I'm distributing copyrighted material apart from maybe a dmapped .map file and stuff that I can say is original work.

  • Like 1
Link to comment
Share on other sites

No. Procedurally generated based on the shade values for the original tiles. It's a bit inefficent at the moment since I don't merge continous areas of light together as one but everything you see is automatically generated. I can barely use a map editor to save my life. My approach to the tool is that it will eventually it will do all the work of extracting assets, building material files, sound shaders, gui files etc so I won't be put in a position where I'm distributing copyrighted material apart from maybe a dmapped .map file and stuff that I can say is original work.

 

That is absolutely fantastic. It's only been a week, but any new developments since? :P

Link to comment
Share on other sites

  • 1 month later...

I haven't forgotten that this exists. Things turned out busier than I thought they would be but I'm starting to think about where I'm at with the tool and what I want to implement next.

 

I'm leaning towards finally getting wall text(as opposed to wall signs) working but I want to decide what would be a better way to implement them. Do I take the existing art and make fonts which I can then use in XData files or should I just implement the list of possible text strings as wall decals.

 

I'm also hoping to record a video in the near future just to show it working in motion and point out what does and doesn't work to my satisfaction.

  • Like 3
Link to comment
Share on other sites

I'm leaning towards finally getting wall text(as opposed to wall signs) working but I want to decide what would be a better way to implement them. Do I take the existing art and make fonts which I can then use in XData files or should I just implement the list of possible text strings as wall decals.

 

The font would be the best long-term solution, even if it would be more work.

Link to comment
Share on other sites

Pretty cool. Reminds me of a few T2 FMs with scifi backing.

The gameplay can translate if you do it right.

Hope this becomes something playable eventually, or the base for something playable, but anyway it's fun to see the screenshots. :)

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

I really wouldn't mind if another team created a cyberpunk/System Shock-inspired fork for TDM. Those shadowy screenshots look mighty good! B)

Come the time of peril, did the ground gape, and did the dead rest unquiet 'gainst us. Our bands of iron and hammers of stone prevailed not, and some did doubt the Builder's plan. But the seals held strong, and the few did triumph, and the doubters were lain into the foundations of the new sanctum. -- Collected letters of the Smith-in-Exile, Civitas Approved

Link to comment
Share on other sites

Oh yeah, a full-on cyberpunk fork would be awesome!

 

But I think to give it justice, a team would really need to rework most of the UI, tools, and weapons, aside from the almost entire asset overhaul. So even calling it a "fork" is being a bit generous. Still, it'd be worth it. That along with maybe multiplayer are my most-wished-for fork projects.

What do you see when you turn out the light? I can't tell you but I know that it's mine.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 1 reply
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
    • OrbWeaver

      I like the new frob highlight but it would nice if it was less "flickery" while moving over objects (especially barred metal doors).
      · 4 replies
    • nbohr1more

      Please vote in the 15th Anniversary Contest Theme Poll
       
      · 0 replies
×
×
  • Create New...