Jump to content
The Dark Mod Forums

hank morgan

Member
  • Posts

    63
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by hank morgan

  1. It's ugly with default textures and the scaling has to be tweaked but here are some shots of the hospital level of System Shock. The tool can now handle variable ceiling heights, steeper slopes and a number of new tile types that SS needs.
  2. To be honest I'm not sure how well the Underworld maps lend themselves towards a stealth experience. Gameplay has been a minor part of my thinking on this since I just find it a lot more interesting at the moment just to see these games that I love recreated somewhat in a modern engine. Once I'm happy with things I intend to do a proper release of Underworld Level 1 with Thief like objectives that mesh with the original game. I've only just nibbled at System Shock so there is a fair bit of work to get that in a state where I'm happy with it (for instance there are almost twice as many tile types in that game that) but I think maybe there is real potential there for something fun with Doom3 itself since Doom3 is closer to System Shock than Underworld is to the DarkMod.
  3. I've cleaned up my code a bit so I think it's high time I released the latest version of the program code as I have not done so since the initial demo map. A lot of stuff is still hardcorded but it should be in good enough shape for anyone interested to play around with. You can download the code* from https://www.mediafir...5j3ffw4k5yy41d9 What new since I last posted? -System Shock support. This is in very very early stages and I only just got started on it but I can read in tile data and produce basic flat levels. Shock has a lot of new tile types which I have to add support for. -Underworld Demo support. -Underworld 2 support. -Original texture extraction -Game strings extraction Note that most of the implementation is based around Underworld 1 Level 1 so if you go beyond that level expect alot more default textures/placeholder objects. I will be making improvements in passing off texture mapping to config files in the near future. * I do want to emphasise my gratitude for some of the resources from previous Underworld/System Shock projects that I have been able to draw on. I have given credit to those projects in the code credits.txt and readme.txt file.
  4. Releasing my latest version of Level 1. http://www.mediafire...dyxr5x4101lt7g8 Apart from the player start, player equipment, lighting and the bridges all of this level is generated automatically. It now includes wall textures and water as well as most of the other improvements since the last map release I made. Known issues No visportals. Doors not positioned yet Items stacked in piles Container contents not included AI's will go to war with each other and you. Steps on staircases are slightly too high. Currently I'm treating wall textures that have banners or other special details on them such as grates as it they are normal. No switches etc. Some screenshots P.s. this will be the last update I'll be making for about a week or so due to real world commitments.
  5. As far as it matters to my implementation water is just a texture in Underworld. Seeing as I already know the texture numbers I'm planning to just add a special case for when the tile has a water texture. In my current implementation I already extend the base of every tile down to the same depth across the entire map so it's should just be a matter of extending the base around water tiles down a bit more and adding a water entity and base to the bottom. I just knocked up a simple room in DarkRadiant with a water entity in it's middle and it looks like this in a text editor. // entity 3 { "classname" "atdm:liquid_water" "name" "atdm_liquid_water_1" "model" "atdm_liquid_water_1" "origin" "-789 541 30" "underwater_gui" "guis\underwater\underwater_green_thinmurk.gui" // primitive 0 { brushDef3 { ( 0 0 1 -21 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/water_source/water_clear2" 0 0 0 ( 0 1 0 -176 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/common/nodraw" 0 0 0 ( 1 0 0 -126 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/common/nodraw" 0 0 0 ( 0 0 -1 -21 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/common/nodraw" 0 0 0 ( 0 -1 0 -176 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/common/nodraw" 0 0 0 ( -1 0 0 -126 ) ( ( 0.015625 0 0 ) ( 0 0.015625 0 ) ) "textures/common/nodraw" 0 0 0 } } } If I'm right in how I understand the map format I just create the entity entry for the water at it's origin and any brush (which I'm already generating) within that entity will become water with the correct texture settings. I need to clean the code up a lot more and move some of my hardcoded stuff into config files before I move on to water but I'm very confident that it's possible to do water.
  6. Say to hello to Bragit. Bragit is a mellow outcast. I've managed to pair up objects from Underworld with similar or placeholder objects in Dark Mod and populate an entire level with almost all of it's objects and npcs.
  7. New features implemented. Heights and slopes now work. Tiles can be rendered in any x:y:z scale. Placeholder texture loading for Level 1 of Underworld. (hardcoded) Code will not generate brushes for hidden solids. Code will attempt to merge neighbouring tiles of identical properties (height,texture etc) together. Structured the tile data for easier handling. I'm attaching the latest version of my code. It's a bit messy but hopefully it makes some bit of sense. Known issues. UW data file is in little-endian. I switch the bytes around in code so I'm not sure how that will affect you on non-windows platforms. Parameters are hard-coded. Change x,y,z ratios in void exportMaps(). Don't forget to point the file path to your copy of Underworld 1 Ascii print and other printout of tile data need to be commented out in order to run them. Ascii will be inverted unless you change the loop. I need to add an higher offset to the ceiling so I can have a smaller z scale for gentler slopes. Textures are a bit messed at the moment since I am not reading the texture blocks yet (next weeks project). Any tile with a brass texture is not right. All those printfs need to be cleared out. That code for calculating the dimensions of the normal to an angled plane is just incomprehensible to me and I wrote it. Water is still to be done. Hence the ice. Future plans -doors & visportals -load objects into a level (match with darkmod equivalent or place-holder) including wall decals such as the abyss door,the stairs and readables such as notes and graffiti. -Friendly Npc's and monsters. -Generate light/sounds automatically -caulk texturing on hidden surfaces -working switches & elevators -hopefully level transitioning if supported by engine. -better texturing handling -Support of Underworld demo and Underworld 2. (The demo level is just a single file so in theory it's just a matter of loading that file into the leveldata data structure. main.txt
  8. Latest update. I've just spent some time prototyping the export from the tilemap to .map in a spreadsheet macro to get familiar with the formats and I can now use that to create a nearly functional level based on the tile data. I've yet to implement textures, floor heights or slopes but all in it's own good time. You can download the level from http://www.mediafire...cm98tx8cav6rwrz. Here are a couple of screenshots of the level P.s. I tried looking for that Ascii to Dr tool that a few of you have mentioned but I could not find a download for it. I assume it's not been released yet?
  9. Okay. I've updated my code. It now returns an ascii representation of the following: 1 Level heightmap. Heights in the range of 0 to 15 2 Tilemap of the level. 3.Index numbers for the floor textures (these refer to another block of data in the file that I have yet to look at) 4.Index numbers for the wall textures. 5.Door positions. This is slightly odd since it only shows about half of the doors I expect to see on a level. I'm guessing some doors are actually implemented as tile objects 6.Object map. Unverified. Still need to reference the objects to their types in their data block. I'm uploading a copy of my code. Please forgive my sloppy programming. It's been 10 years since I last touched C so this has been a bit of a learning experience. Note this doesn't support Uw2 yet. main.txt
  10. Not in what I just posted but the values I'm looking at to get that info also contain the index numbers for the textures so it would just be a simple matter of masking those particular bits to get the texture indices. All of this work is passed on the Uw1/2 formats specification. http://bootstrike.com/Ultima/Online/uwformat.php. Basically there are two 4bit entries that set the floor and wall textures. That is my next step.
  11. Hopefully this doesn't come out as gibberish but here is some ascii output direct from lev.ark. What I'm showing here is a height map of the first level and an ascii tilemap of it's geometry. Heights range from 0 to 15 and according to uw-formats.txt the tiles are as follows: Underworld tile types are: 00 Solid (wall tile) 01 Open (square tile of empty space) 02 Diagonal, open SE 03 Diagonal, open SW 04 Diagonal, open NE 05 Diagonal, open NW 06 Sloping up to the north 07 Sloping up to the south 08 Sloping up to the east 09 Sloping up to the west Trust me if you stare at it long enough it will make sense. File opened successfully There are 0x87 blocks in this file. Header val is 135 Now Printing Height Map. 15151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515040404040404040415151515151515151515 15151515151515151515151515151515151212151515151515151515040904040404040404040404040404040404040404040404040415151515151515151515 15151515151212121212121212121212121212151515151504040415150505050409091004090809040909090909120909090909090909090909090915151515 15151515151207070707070707070707151212121515151504040415150505051208121004090909040909121212121212090909090909091212090915151515 15151515121207070606070706060707151512121215150404040405050606060708091112101010040912121212121212121212121212121212090915151515 15151212121207070607070707060707151515121215040404041515110909040404121204111111040909121209090909121010101012091212090909151515 15151212121207070707070707070707151515120912040404111111121212121212121212121212121209121212121109121010101012090912090909151515 15151212121207070607070707060707151515090915040404040411111212120909090909091212121209121212121209121009091012121212120909151515 15151515121207070606070706060707151509090915151504040404151515121204040404040404121209121212121209121009091012121212120909151515 15151212151207070707070707070707151509090909091515040404151515121204041111111115121209090912121309121009091012121212120909151515 15151212121212121212121212120707151509090909090815150404041512111215101011111115121212121212090009121010101012090912090909151515 15151212121215151215151515120707151515090909090815151504041504101515101004110404121209121212090912121110101112091212121212151515 15151512121212121212121215120707151515040404040805050404040410101515100909040404121212121212121212121212121212091312121212151515 15151512121212121212121215120707151515040404040404040404150410101015090909030315121204151515040404040404041212090909091513151515 15151515121212121212121215120707151515040404040404040404150909101009090910100304121204010203040506070809090912121212121512151515 15151512121212121213121215120707151515040404040808050408080909151509090309090304121215000404040404040400100912120912120909151515 15151512121515151515151515120707151515040404040808080808080803030303030309090304121215000000000000000000110912090909090909151515 15151512121511121212121212120707151515040404040409040808080803030303030303030315121215000000000000000000121212121212121209151515 15151512121512131213121315120707151512120404040404040808080303030303030303030303121210000000000000000000000012091212121209151515 15151512121512121212121212120707151512121204040404040808030303030303030303030303121215020003000400050000000012090909090909151515 15151512121512121212121212120707151512121212040404040403030303030303030303031212121215000000000000000000000012090909090909151515 15151512121212121112121212120707151512121204040404040303030303030303030303031212121215070008000900100900000012151515151515151515 15151515091515151515151515120707151512121204040404040303030303030303030303030303030303030303120404101010000012151515151515151515 15150909090909090909090909110707151512121203030404040403030303030303030303030303030303030303121210101010040412151515151515151515 15150911121212121512121215100707151512120303030315151503030303030303151212030303030303030303031515121515151212121515151515151515 15150912121212121212121215090707151512120303030303030303030303031515151212121212121203030303121212121212121212121212121212121515 15150912041204041204151515080707120707121203030303030303030303031212151212121212121203030303121211100908080710070808091011121515 15121212121212121212151515070707070707120403040303031515151515151212121212121215150303030303031515151515081012100815151515151215 15151200001100001212151515070707070715150415150415151515121212121212121212121515150303030303031515151508081008100808151515151515 15151212151000000112111015070707070715150404040404050607121215000015121211121515150303030303031515150807071009070707151515151515 15151212150900000201010915070707070707070707070707070707121504040404151210121515030303030303031515150807121210121207121212151515 15151512150915000301010815070707070707070707070708091011120004000004001210121515030303030303040404040808121211121208121212040415 15151515080909150405060715070707070707070707070708091011120004000004001210121515030303030303040404040809121212121209121212040415 15151515080909151515151515070701011515151515150015151515121504040404151210120303030303030303030315150810101112111010121204040415 15151515080909090807070707070707070809101112121212151515121215120015121211120303030303030303030304040404040400041212121204040415 15151515150915150101010505060707010101121212121212151515121212121212121212121210030303030303030304040404040400041212121204040415 15151515150915150101010101010101010101121212121212151515151515151515151212121210030303030303151515151504040404041212121210040415 15151515150915150101010101010101010101010101121215151515121212121215151212121203030303030312151515150505040405040404040404040415 15150909090915150101020202020101010101011212121211101011121212120202020202020303030315151512121215150505050505050505040404040415 15150909090915150101020202020101010101010101020202020202020202020202020202020303031515151212121212151515050505050505060606060415 15150909090915150101010101010101010101010101010202020202020202020202020212121215151515121212121212121515050505050505060707071515 15150909090915150101010101010101010101010101010202021010020202020202020212121215001515121212151212121515050505050505060707071515 15150909090915150101010101010101010101010101020202021002020202020202020202121015001515121215151512121515050506060606060707071515 15150909090915151515121212010101010101010113121212131010121212121212121010111015001515121215151512121515050506060606060607071515 15150909090910111212121212010101010101010113121212121213121211101011121010101015001515121212151212121515050506060606060607071515 15150909090900000000090909090101010101010113121212121212121211101011121010101515001215121212121212151212050505050505060707071515 15150909090900000000000000000101010101010101121512121212121212121212121010101515001212121212121212121212151515151507070707071515 15150000000000000000000000000101121201010101121512121212121212121212121212101515001212121212121212121212151515090807070715151515 15150101000000000000000000000112121212121212121212111009080707070707121212101515001212121212121215151212151515101515150015151515 15150101000000000000000000011212121212010101111512121212121207070707121212101515001215121512121215151515151515101011111115151515 15150000000000000000000000151212121512151010111010101009091207070707121212101515001515151512121212121212151515101511131115151515 15150000000000000001010100151515151512151010101010121010091206070707121212101515001212121212111212121212151515091511111115151515 15150000000000000001000009091011121212151010101010050510121212121212121212101515001515151512101215151515151515081111111115151515 15150000000000000101000009080815151212150909151010101210101010101012101010101012001515151212091212151515151515081515151515151515 15040001010101010101000000150715151515150912101010101210101010101012101010101015001215121212091212121515151515080815151515151515 15040401010100010101010105060715121212151215101010101210101312101010101010101015000000000000090000000009151515150815151515151515 15040401010100010101010101010115121212151212151510121210101012101012121210121515000000000001010101090101151515150815151515151515 15040401010100010111111212121212121212151215151010101210101012101012091010101009080815150101090101010101090908080808081515151515 15040401010100010111110101011112121212111010101010101010101212101012121211121015130815150101090109090101090908080815071515151515 15151501000000010101010101121015121212151210151010101010101512101012121211121012130812120101010101010101010110080810061515151515 15151501010101010101010101120915151512151111151010101012121512111112121011101012130808080909090101010101010108081515051515151515 15151515010101020301050607080915151511111111111212121212121512121212151212121515131515151515150101090901010102020304051515151515 15151515151515151515151515151515151515151515121515151515151512121212151515151515151515151515151515151515151515151515151515151515 15151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515 Now Printing Tilemap. 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000001130021301810273000000000000000000000000 0000011111111111000000001150077706070777000211113000000011000000 0000211111111111000000021181811881070777000111111111111111000000 0011111111111111000000211500000000010777000110000111111011000000 0011111111111111000020111000011111111111110111110111111000000000 0011111111111111000150411130011100000011110111110111111111300000 0000411111111111002130004113000100000000110411110111111111100000 0000011111111111001112300411000130021130110000010111111111500000 0000011111111111004111170041302650461150110213010171171001000000 0000000010000111000415460001100600210000110111002171171011111000 0001101111110111000000012321502100463000111111111111111011111000 0001101111110111000000211111004130215000110000000000041000001000 0000101111010111000021111115028119181300110111111111101111101000 0001111111010111000011513002815004506600110100000000101001100000 0001100000000111000011041891130023004500110111111111101000000000 0001101000000111000011300021152111130000110111111111111111110000 0001101111110111000041113011701154111300110111111111111011110000 0001101111111111000000411045021100115000110111111111111000000000 0001101111110111000000211302111500413011110111111111111000000000 0001111111110111000002111191150000011311110111111104111000000000 0000000000000111000001154195000021111111000000000113001000000000 0000000000000611000006600000000111115411302110000115001000000000 0001111101110611000021130000021115000011111113000000021300000000 0001111111110611000041113211111100021111111111111111111111111100 0000010000000611011001111111111500011111111111119999100018888100 0011111111000611111011111500000000011150004115000000100010000000 0010010001000111150010000000111111111100000110000002107013000000 0011010111110001000011118881150000416100000110000006607066000000 0011010011110111111111111111102113016100000110000007117117000000 0000010011110111111111188888101111011100000113000007117117000000 0000811011110111111111188888101111011100002111000007111117000000 0000811000000110000000000000104115017100211111300001881991000000 0000811199111111888881111000130000217100111504181130000000000000 0000010000018811000111111000111111111132111000004111100000000000 0000010002111111300111111000000000041111115000000004130000000000 0000010011111111113000100000213000001111150000000000770000000000 0011110011111111111000119988118000211811500000000000110000000000 0010110011111111111300021111130021111815000021113000110000000000 0011110041111111111111811111111111111110000211111300413000000000 0010110004111115011111811515411111154150000115041100077700000000 0011110000000000211115000010000000000100000110001100004130000200 0010110000111000111502110011011111100600000110001100000111181100 0011188811111002111000113000211111100600000413021500000004181500 0010110000000021115004111111111111100100030041115002000000700000 0011110000021811110000104111111111100100011111111111000001110000 0000000000011815210000100000000000000100011111111111000111110000 0011000000211852111111111999991111000100050001110004000100000000 0011000021111021101000600000001111000100000001110000000181110000 0006211111115011101018115029101111000100000001110000000101110000 0011111111150000001011150011701111000100000001610000000101110000 0011111501001888111011500001000000000100000001610000000100000000 0011150001001910011015023001111110111110000021613000000100000000 0000000001000060000050211301111110111110000211111300000110000000 0000111111118810111000111101104111151410000000100000000010000000 0000111111111110111000001001100110001000000002113023000010000000 0000111111811111111000011101100110007019910021111111119111100000 0000111111111060111991111131100110027310010011111111150110600000 0000111111111060111000010111100770016110010041111111132113600000 0000111111111060001000011150002773081910011811111111110000600000 0000118881888810000000000000001111041500000000045114111888100000 0000000000000000000000000000004115000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
  12. Thanks. It's been a fun exercise and I'm tempted to make a single mega Stygian Abyss or Lord British's castle level just to see how it would come out. I had been playing around with DarkRadiant for a few weeks since it went standalone so this was nice opportunity to dive in with something a bit more complex. I don't exactly know where I want to go with this next but I do feel committed towards at the least seeing if I can come up with a tool to take the raw level data of an Underworld level and convert it to a usable format once I wrap my head around it all.
  13. Edit: I've moved on from the stuff in the OP about converting from blender and have since written a program to extract and build a Darkmod level directly from the game files. See my posts from later in this thread to learn more. The current status is that the program can : -Extract and generate level geometry (DarkMod/Doom3 .map format) from Underworld 1&2 and from System Shock -Pull back object lists from Underworld and spawn placeholder NPC's and objects in the level (Underworld 1 only) -Script Level events. -Texture an entire level using original game textures -Extract Underworld Textures -Extract Underworld strings -Dump various ascii info tilemaps such as tiletypes, height maps and object lists. Latest Code releases and map samples https://github.com/hankmorgan/UnderworldExporter The old labour intensive method.
×
×
  • Create New...