the Dungeonmaker


The DungeonMaker2 is finished! It creates labyrinths and dungeons using artificial life methods. Whereas the labyrinths were already in version 1 and are made by Crawlers that lay down walls, the dungeons are new. They are created by Tunnelers that build corridors in solid rock, and by Roomies that carve out rooms. We have also added a feature for creating rooms in labyrinths, though this takes a lot of computing time and is probably not practical in larger labyrinths. Finally, we have the capacity now to plonk down stuff like treasure and MOBs (formerly monsters). All in all, the Dungeonmaker is probably the most sophisticated random dungeon generator on the planet right now. It works best on larger maps.

The DungeonMaker is written in pure C++ and should run on any system. However, the demo program that shows the dungeon creation process as a movie uses the the SDL library, so that you will need to have SDL-devel installed in order to build the program, and the SDL-runtime to execute it. We used SDL version 1.08, but later versions work also.

The program is neatly divided into 3 parts: The DungeonMaker.cpp and DungeonMaker.h files contain the full capability of the DungeonMaker. They are placed in namespace alifegames and you would include these files them in your program to get random dungeons into it. The files SDLRenderer.cpp and SDLRenderer.h contain nothing but the rendering code. They are written in such a manner that another renderer could easily be plugged in. Finally, main.cpp contains the main()-function, and ties the other two program parts together. This function is relatively complicated because it has the options to render dungeons while they are being created, to show a dungeon-creation-movie after the dungeon is done, or to show the finished map.

The interactive portion of the program uses not only an SDL-window, but also cin and cout, and may have problems on Windows. We have included a non-interactive main()-function that should run on Windows, though unelegantly: It produces one dungeon and then shuts down. To see a different design, you have to rename the design file manually. We also have included a simplified and extensively commented main()-function that demonstrates how to use the DungeonMaker interface to get its functionality into your own program.

If you have any suggestions or feature requests for the DungeonMaker, or problems with it, please subscribe to the mailing list and let us know your concerns. We want to make the DungeonMaker into the very best it can be, but for that we have to know its weaknesses. Speak out, ye brave dungeoneers!

The ReadMe-file that comes with the code explains how to build and run the DungeonMaker demo program, and you can check out the manual for a better description of what the DungeonMaker does and how to use it for your own project. The old manual contains some info that did not make it into the new one (particularly "How WallCrawlers Work" and "Dungeon Design HowTo"), but other parts of it are outdated.

hosted on
SourceForge Logo