Maze Maker 1.0 for Doom 3
Readme:
Map name: mazeMaker1
PK4 includes: new map w/scripts, new GUI w/graphic
-----------------------------------------
To run:
* Copy "mapMaker1" directory included in this ZIP to your "Doom
3" directory.
* Run Doom 3.
* Click "mods" on the main menu
* Select "mazeMaker1".
* Pull down the console (press CTRL-ALT-tilde, tilde being the ~
key to the left of the 1)
* Type "map mazeMaker1"
* Controls are on the panel to your left. Enjoy!
-----------------------------------------
Description:
Essentially, maze maker is a simple proof-of-concept for recursive
scripting in Doom 3. I wanted to know if it was possible to
program things like mazes and tree-based pathing with recursion,
and the answer is yes, but only for very simple tasks (see notes,
below). When a button on the GUI is clicked, the program randomly
generates a "perfect" maze, meaning a maze where any one square
has a path to any other square. You can drop down and run through
the maze if you want, but the lighting might make that a little
difficult.
-----------------------------------------
Notes:
* THE LEVEL WILL RANDOMLY CRASH when it tries to generate a
level, dropping out to the console and generating a stack
overflow. This error is not, to the best of my knowledge, due to
a bug in the map or its scripting. Doom 3 has a very intolerant
limit on recursion; it looks like around 20-30 calls or so will
cause it to error out (that's less than Flash!). So recursion is
an option only on VERY limited problems. If anyone knows a way to
increase this limit (not just how to work around it to make the
maze - I could do that, but this is a proof of concept, not an
actual map) drop me an e-mail.
* The only difference between the 3 speeds of maze generation is
the length of "sys.wait()" commands issued at each step. They are
functionally identical.
* I've used the ceiling tiles here as a sort of stopgap boolean
array (if the square over a space is hidden, we've visited that
square before). If anyone knows how to make Doom 3 create an
actual array, please let me know.
* You can increase/decrease the size of the maze generated in the
source code; look for the maxSizeX and maxSizeY declarations.
However, note that a larger map will increase the possibility of a
stack overflow error.
* The mazeMaker1.script file in the PK4 contains extensive
comments on exactly how the maze is created. Please look there
for more specific info. To open a PK4, just rename it to ZIP and
use WinZIP, WinRAR, or a similar program to unpack it.
-----------------------------------------
License:
Feel free to use this code in your own levels, though the current
stack limit will probably make its usefulness quite limited.
However, I do ask that any releases that include my source - whole
or partial - abide by the following rules, which apply to all my
work:
* Brief mention in the README, include my e-mail address
* Mention in the script file where the code appears, again
including my e-mail address
* I would greatly appreciate if you'd drop me an e-mail and let
me know where I can get your mod. I'd like to see examples, if
they exist, of recursion in action.
-----------------------------------------
Thanks for reading; please enjoy!