How ZRDOOM works


This is a breakdown on how I built ZRDOOM 3.0...


I started this project as "Blockmap" in 2024.  It was called that because at first it built maps from procedural alterations of a grid of sectors shaped like square grid spaces or blocks that were all 64 by 64 in units... I first mapped out 10 blocks and copied and pasted them above to form 10x2... Then I multiplied that 5 more times to form 10x10.  I then tagged each sector from 1-100 and filled in all missing textures... This was a bitch in doom builder. I  then tried to find out if I could procedurally make architecture using blocks... I made a script to close certain blocks like doors... I then made a script to lower certain blocks a bit... Once I did this I placed in mapspots for enemy placement and made a script to teleport in random enemies everywhere and then eventually made the area a huge 200-600 block grid. I also made it possible for each map to be a different texture theme.

I then added in 2 new features. The ability to control size and difficulty of the map. This was hard and involved doing a lot of script changes... Then I also made detail a priority and added in ceiling lights, and pillars on the corners of rooms in places... It soon started to look much better. Doors were in by this point but at this point I decided add some new features like slopes, 64 unit doors (they were all 128 width doors before this) and colored lighting done with gzdoom point lights... I decided to balance the maps like Alien Vendetta and Slaughterwads on purpose because I was sick and tired of how easy randomly generated maps were... I purposely through balance out he window to do this and said to myself, that this map generator mod would be balanced to make brutally hard maps by default. That has never changed in any version of the mod and never will.

At this point I slowly morphed this mod into an RPG mod called Open Doom.  It sort of failed bad but I took the code base and added new features later, like the ability for the mod to undo the level geometry alterations, retexture the map and then redo the map with different random numbers when crossing an exit teleport. The effect was rediculous. I also improved height variations and made it bot controlled for the first time, but those height variations made the bot mess up bad, so I canned them. 


Making the bot not get stuck was a chore. ZCajun cannot navigate without nodes. But how do you place nodes when geometry makes paths randomized to the exit? I came up with a solution. I made it so every 1-2 minutes the maps would undo a redo with everything being done but texture changes... I spawned in new enemies when this happened, and since the bot seeks out enemies to go to, it actually made the bot navigate it well without nodes. This however added a scary new feature accidentally - procedural AI Like deathtraps...

In a doom map, it's expected that the geometry is static. It is not in this mod. As the bot or player navigates the map procedural level changes make insane mean things happen such as being locked in a closet,  then having all the walls open revealing tons of enemies surrounding the player on all sides, when the room before the closet is gone forever... It actually Procedurally reconfigures the map to make the map change shape to do mean things on purpose. This makes lots of weird traps were ANY wall can become a monster closet and is totally random when, if or where it will occur! This can morph the map into another map on the fly instantly completely getting rid of the old geometry forever. I've seen some mean traps in playtests and do to this, a lot of people will find this mod unfair.



  I then, after working on like crazy with tons of bugs and changes to code, added in nukage and eventually put in rare use of skies too.  They were added in last... I also added in a lot more sector detail and made good maps being generated to become a serious priority at this point...

At this point, the mod is mostly perfected. It produces pretty good maps with good detail but lacks good sector height variation and only has decent texture alignment... But what it does have is brutal combat. It's combat and bot control make it worth it and you can play infinite amount of levels and spawn a bot and see if it can handle randomly generated traps that are fun. By the time this mod was finished the ACS script got so bloated that it surpassed 3000 lines of code.  This made it so that adding new features disabled others due to LZDOOM ACS parsing bugs... This was really bad... Due to this this mod is now being finalized...

Get ZRDOOM Enhanced 3.0