[DM-dev] Dungeonmaker going on version 2 ...
Brought to you by:
acdalton,
henningsen
From: Henningsen <pe...@al...> - 2002-02-08 23:33:19
|
Hi everybody, I've been very busy lately with the DungeonMaker, and have been in intense private communication with Stephan Beal over the project. Since I'm entering a critical stretch, I thought I'd report to the list on what's going on, and Stephan and I can have our discussion here for a bit, and see if anyone wants to add to the conversation. So here goes: I have rewritten the entire Dungeonmaker from scratch. The DungeonMaker class, together with a lot of new struct and enum datatypes has been put in a namespace "alifegames". It now uses STL programming throughout, using vectors for the map, etc... the program is not finished yet, it will react to corrupt input files on occasion with asserts, and it will throw an uncaught exception if it runs out of memory. The program consists of 3 cpp-files , the DungeonMaker, the SDL-Renderer, and main(). The creation of the dungeon is completely decoupled from the rendering code, and one could easily drop in a different renderer. The user interface in the main()-program consists of cin-cout-code, and thus can only run where it is possible to simultaneously have a console open and an SDL-window. This seems to make it impossible to run the compiled program on Windows, though it may be possible to run it in a debugger where one has access to cout and cin. The WallCrawlers have been totally rewritten, using the insights I have gained from observing them a lot, and they are now much better. Also, I have implemented Tunnelers, which make tunnels in closed areas, and Roomies, which build rooms branching off from the tunnels. These Tunnelers have very complex code, with lots of special cases getting special treatment, and I expect the code to be rewritten for version3. I'll just have to observe them for quite a while, and gain a deep understanding of their behavior. The Tunnelers act totally different from the Crawlers, there is almost no code reuse between the two, and the Dungeons (made by Tunnelers and Roomies) are completely different from the Labyrinth (made by Crawlers). Oh, BTW, I also have a function that makes rooms in the labyrinth. And I can seed Crawlers into the Tunnels after they are done, and build a labyrinth inside the tunnel system. It can get *very* complex. Right now the program uses just one design file (though I plan on introducing other options for file input in the future), and the Dungeonmaker is initialized through one Config-object. Eventually it will be possible to pass Config-objects in and out of the DungeonMaker, for interactive design and other things that Stephan may want to do. My own assessment of the DungeonMaker is that its main weakness is that it cannot show its virtues on small maps. It needs maps of substantial size to really shine, and thus cannot be used for every game design that calls for dungeons or labyrinths. But I'm quite sure that for large dungeons, this is far and away the best random dungeon generation program on the planet. Right now this version of the DungeonMaker is closed source, and only available under NDA. I will show it to a few game companies, but I don't really expect anyone to license it, and then I will soon make a release under GPL, so everyone can check things out. My main thrust then will be to develop MOB's (mobile objects) which move around in the dungeons and give the player a challenge like it has not been seen in RPG or DungeonHack-type games. Once I have these going, I'll seriously try to sell a commercial license. Parallel to this email, I send Stephan (who is under NDA) the latest version of the DungeonMaker, and he'll hopefully post his response to seeing the Tunnelers in action (and the new Crawlers, and whatever...) here. Happy hacking, Peter Henningsen alifegames.com |