Jump to content
The Dark Mod Forums

hank morgan

Member
  • Posts

    63
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by hank morgan

  1. 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.
  2. It's a real screenshot. I resized the image after saving it so there may be some jpeg artifacting going on there. 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.
  3. Fun with sprites from System Shock. That's an animated sprite using "deform sprite" in it's material file that runs through 4 frames of animation. I've also attached it to the head of an AI as a particle just to see it run around randomly. The white halo is human error on my behalf. I assume my reading of this article is right http://wiki.thedarkm...tachment_for_AI and in theory I could create a custom "invisible" ai with a head joint to anchor the particle and depending on ai animation states in the .def file I can trigger different animation loops?
  4. Thanks. I got it working as follows. I set up an an atdm:voice entity and an atdm:voice_trigger that links to it. Then it was just a matter of either triggering that by either using the frob_action_script spawnarg for the pickup event and for opening it by using the trigger_on_open spawnarg of the readable.
  5. How do I get a particular sound to play when I open a readable? I can get the sound to play when I do a page turn (using the page turn sound param) but not on the opening of the readable.
  6. No worries. Critism both good and bad is welcome. The textures were a bit of a hack job when I did them. I just shifted up the bits on my palette by 1 as you suggested and they look a lot better now thanks for the tip. I'm aware of the floor texture issue. Sloped tiles have similar misalignments since I've yet to scale them up to fit.. Most of my work has been on UW1 which doesn't have as many "directional" floor textures apart from shorelines but it is an easy fix once I get around to it. I agree totally on the squashed aspect of the UW levels. UW has a shorter height range than Shock but the big limitation on this is that the player can't go over a step of height 15 units. However I was playing around with the same height shifting code that I needed for System Shock and the latest version can generate UW levels at twice the scale that I had previously used.
  7. Here's a link to a imgur gallery of various screenshots from a bunch of Underworld 1/2 and System Shock maps. http://imgur.com/a/iJiux#0
  8. [quote name='Al_B' timestamp='1389302151' post='330509'] Fantastic to see the work on this - Underworld / Underworld 2 has always been a particular passion of mine so I'm watching this keenly. (I've also taken the liberty of posting a link to this thread [url="http://www.ttlg.com/forums/showthread.php?t=142973"]on TTLG[/url] as there may be some there that miss this thread) [/quote] I like that name you gave it. I'll try and post a whole bunch of screenshots of different levels tonight.
  9. I can't work on it much this week since I'm doing a bit of travelling but I'm planning on dumping a whole lot of screenshots of various levels that I have'nt shown once I get back. It feels a bit silly but this last weekend I implemented some System Shock map features and I felt a bit giddy noclipping throught the levels since I'd finally got things to a stage where they look right for the most part. Cool. If I can be of any assistance in any way just let me know in this thread.
  10. I don't know about full remake even though I'd love to see one make it. I've always felt that if I make a good modders resource out of this then I will be happy with that result but I will try and drive things as far forward as I can. In many ways I'm balancing two projects here. The fantasy RPG Underworld and the SciFi shooter hybrid System Shock. Underworld has a lot more systems to implement such as rpg combat, conversations, bartering, magic and more complex inventory. While Shock isn't a million miles away from Doom 3 and is a lot leaner from a systems point of view so I have higher hopes of making something playable out of it. At the moment I'm still very enthuasiastic about my own experimentations with different aspects of the games but I do recognise that I will have to seek help at a certain stage for some items. For instance I'm not an artist so I know that it's not an area I should tackle myself but at the moment I'm happy just to be working under the hood.
  11. Just set up a github repo for sharing my code as well as sample levels. A lot of support added for System Shock maps and texturing since I last posted. https://github.com/hankmorgan/UnderworldExporter
  12. Thanks. I took that as meaning I write my function as BIT( variable ) but I still get the Unknown Punctuation error on that line.
  13. Bitwise AND (&) , NOT (~) and OR (|) appear to work. However XOR (^) and shift (<< and >>) give me unknown punctuation errors in my script
  14. Are bitwise operations possible in scripting? Eg XOR, shift left etc.
  15. Just uploading my latest code in the OP before the holidays. Lastest features. -Level transitions. I can now move between any number of levels and arrive where I should be if there are multiple entry points. There is no persistance though at the moment so I can't carry stuff in between levels and when I return to a level it resets. -Bug fixes including floor textures being in reversed order versus their string names for some reason (wtf Looking Glass ) -Configurable texture alignments and flagging of water textures. -Teleports, terrain change effects, event text strings outputted to the console. The big change now is in scripting and the dynamism of levels. Basically in UW level events like moving platforms, terrain changes, text messages that flash in your log, magic crystals, door levers etc are handled by a trigger/trap system. Each trigger fires off a trap to do a particular action and each trap can link to another trigger/trap in a chain to fire off further effects. My favourite example of this in action is the section where you get the hilt to the sword of justice. In the game you need to find a hidden room with a switch to reveal a hidden section of the level. Under the hood this works as follows. You have TMAP object (a wall decal, in this case a bunch of vines) which triggers a terrain change trap(turns a tile from one type to another) and a text trap (to tell you what has just happened) and a delete object trap to remove the vines. Inside that room is a lever which fires off another trigger and fires off in turn 3 change terrain traps which removes a pool of water and opens a path for you to reach a hidden shrine. All this now works with almost no hitches (there is some weirdness with water) using my script building system. Basically I extract the following information from the game files representing the flow of events. 588 366 special_tmap_obj 52 12 3 7 96 0 40 152 586 0 { 586 419 a_look_trigger -1 -1 3 3 3 0 52 13 587 6 587 389 a_change_terrain_trap 52 13 0 0 96 0 23 63 620 1 620 400 a_text_string_trap -1 -1 0 0 96 0 4 2 585 0 585 395 a_delete_object_trap -1 -1 0 0 0 0 52 12 588 0 } I then can take that code (and all similar events for a level) and use that to dynamically create matching script code to do all of these actions for me as follows void start_special_tmap_obj_052_012_588() { $a_change_terrain_trap_initial_052_013_587_000.remove(); $a_change_terrain_trap_final_052_013_587.show(); sys.println("You move the vines aside..."); $special_tmap_obj_052_012_588.hide(); }
  16. In my test map I have a body of water that I want to hide and unhide via script. The water entity disappears when I toggle using hide() and find() but when I jump into the space where the water is that area still behaves as if the water is still there? float water_state=1; void hidewater() { if(water_state==1) { $waterentity.hide(); water_state=0; } else { $waterentity.show(); water_state=1; } }
  17. Just dropping off an updated version of the map. This is a release of the retro mod version of the level with the original textures along with a few other extra map features. https://www.mediafire.com/?17ir2ac97nb2p0i
  18. Few questions which are kind of linked together. I'm currently playing around with hub style level transitions in my test map and I have a few basic things working. I can move from one level to the next and back to the first one and I can fire off a script at the level load to teleport my player to a specific spot. The first is about scripting and making this more flexible for my Ultima Underworld tool. UW being a tilebased system refers to teleport co-ordinates as just simple x y values to point at the tile you are going to. Level transitions are just teleporters in that game. So all I need is a way to pass those X&Y values from the first level to the second level where my teleport script will send the player to the correct spot on loading. So can I refer to entities by a key name. E.g. entitycollection["myentityname"] so I can take a couple of global Cvars (x&y) that point to my teleport destination called "teleport_at_x_y" and build the string needed to refer to that destination so I can activate that particular teleporter. Also is there a way to pass an entity in the function call from the call spawnarg? I'm guessing no on this one if what I've read so far is correct. Also I have have a question about persistance and the "inv_persistent" spawnarg. I've set it to 1 on a couple of objects - a key and a water arrow and carried them through my level transition ( a target_endlevel) but they did not carry forward with me. I think I've set the argument right and I even downloaded and looked at No Honour among Thieves in DR to confirm my setting since that mission uses those parameters. Another small thing is that when I return to my first level everything is reset to normal. I'm not bothered about that but I'm just curious to know is there a way to stop that happening.
  19. Latest update: -New code release including config files for objects and textures. -Working door switches, locked doors/keys, better object placement, bridges, wall decals and other fixes -Retro Mode. Code updated in the op. Doubtful using my tool. I pretty much brute-forced each particular tile type through trial and error. If I was smart I'd sit down and figure out a generalised function for generating a brush at any orientation and size but that's above my pay-grade.
  20. Here's a short video showing some features. http://www.youtube.com/watch?v=73PMIgni2FA
  21. Thanks. The solution was indeed to create a entity of class atdm:target_changelockstate, set it's target to the door and it's toggle property to 1 and target the entity from my switch.
  22. Latest update. I've passed off texture selection and object spawning to external files for UW1. Basically a list of each possible object, it's model, it's type and a description. Using that list I am can now spawn items and apply special rules to them. For instance I can now spawn items that were in containers and in the inventories of NPCs and I can now also generate locked doors and have their matching keys open them.
  23. How do I get a locked door to open and close itself using a button. I've tried adding the button name to the used_by property like I would with a key. Is it something I have to use a script for? The button opens and closes the door when I unlock the door with a key. I'm guessing this is something that needs a script to set the locked state to 0 and then open the door.
  24. Some house keeping. OP updated with links to latest versions of the level and the code. As suggested cross-posted the thread at https://www.systemshock.org/index.php?topic=6045.0
  25. I'll probably post about it there in the next week or so once I've tidied up texture and object lookups and documented things. Also for the lark I took a tilemap from UW and tried to bring it into the Legend of Grimrock. Grimrock level files are just lua scripts with the map laid out as a block of characters like a 2d array. # is a solid and '.' is an open space so all I had to do was paste the ASCII dump data from my program into the file. Sadly the Grimrock engine is not as advanced as Underworlds's and only supports 32x32 sized maps so you'd have to do a bit of work to get it to flow. You'd have to generate at least four maps just to fit everything in and probably a few more to disguise the boundaries of the map and hide the map transitions. I probably won't be doing that as part of this project but it was a fun relaxing experiment to get my mind off of calculating the normal distances of angled planes on brushes.
×
×
  • Create New...