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