In the process of making the Python bindings for DungeonMaker, I came across various shortcomings of the original code. There were behaviours I wanted to limit or inhibit, and various features were missing. I went about implementing some of these, and code started accumulating. I eventually made the decision to fork the original source tree, and thus was born DungeonSpawn: a version of DungeonMaker with extensions. The first public release of this is version 3.0, and it incorporates the following changes (these will only make sense if you've used DungeonMaker before):
- DungeonSpawn keeps track of anterooms (DungeonMaker only kept track of rooms).
- When a Tunneler runs out of space, the probability of spawning two narrow tunnelers at its end can be controlled.
- Playability tests: a ‘reachability’ test has been incorporated to ensure every part of the map is connected to every other one (or to ensure some parts are disconnected).
- Added small API methods that make life easier for SWIG-based bindings.
- Various minor additions to the library API
- Code clean-ups. Many more coming (by necessity, as the original code is sometimes difficult to follow).
Aside from these changes, this release is completely compatible with DungeonMaker. The design file format is unchanged1, and the API is 100% compatible. If you're using a library version of DungeonMaker, DungeonSpawn is a drop-in replacement for it, and you should see no changes (unless you choose to use the extensions).
You can find DungeonSpawn here.
Unlike DungeonMaker, DungeonSpawn is made available under the terms of the GNU Public License (GPL) only. It is not within my power to give people commercial licenses of this code, as I extended it under the terms of the GPL. If you are building commercial software and these terms are unsatisfactory, I suggest contacting the DungeonMaker authors and obtaining a commercial license.
- 1 there is one minor extension to it, but it's backwards compatible.