[DM-dev] Working on new interface
Brought to you by:
acdalton,
henningsen
From: Henningsen <al...@gl...> - 2001-04-19 22:51:57
|
I would like to let the list participants know that Stephan Beal has joined the DungeonMaker team, and that we're very busy - exchanging about a dozen emails daily offlist trying to come up with a better DungeonMaker interface. Stephan is lead developer of the QUB project, a universal boardgame. We want to get the DungeonMaker into shape as a library that can be called from QUB to get random dungeons in there, and also to design dungeons interactively. Right now, the DungeonMaker can only generate dungeons based on its 3 input files, and interface functions for interactive design are missing. In fact, a DungeonMaker object does not even contain the data that would have to be inspected and changed for interactive design - the design data are read from file and directly put on the map without being stored anywhere. My initial goal with the DungeonMaker had been to be able to create high level tools to navigate through the space of all possible dungeons. However, I found that too many randomly generated dungeons sucked, and gave up on this approach. Now I have been re-infested by Stephan's enthusiasm, and have worked out a fresh approach that will hopefully allow the evolution of dungeons based on user ratings - for this to work, several design parameters (mostly from the rooms-file) will have to be pre-selected by the user, and then the other parameters (mostly from the stats-file) will be treated as genes in a genetic algorithm with fitness a quality rating that the user has to supply. In this manner, it should be possible to adapt DungeonMaker's dungeons to every user's individual taste. The interface we are developing should work for all these uses - interactive design, dungeon evolution, ... we hope that by designing an interface that will work for these uses, we will get a universally useful interface. The program is being re-written in many places. Here are some points: Rooms will no longer be a low level construct used by the DungeonMaker - instead we will be using Walls (which can have doors in them). Higher level programs can have different types of Rooms that are all instantiated by calling several Dungeonmaker Walls. All the Rooms code, including placement by the division method, door ornamentation, and legality checking will be ripped out. The DungeonMaker object will keep a full list of all design elements that are needed to produce (or reproduce) a dungeon as class members. These are the random seed used, the parameters from the Constants-file, dimensions, and then variable length arrays of class vector<Element> with Element = OpenSpace, Column, Wall, Crawler, Stats. There will be a full complement of functions to show, change, add and delete any of these elements. This can be used for interactive design and also for programmatic input of dungeon design data (without file reading). As for file in/output, the Dungeonmaker will abandon its 3-file system and go to one unitary file, which it will be able to read and write. For reading, Stephan intends to implement a parser that will allow the most wonderful things re extendability and maintainability of the code. He can explain that better than I. The parser should also be able without much change to work with the different filesystem that will be used by the dungeon-evolution program (name to be determined). This will not be implemented in the core DungeonMaker library, but will be a separate layer on top of it. The dungeon-evolver (still not the right name, suggestions, anyone?) will also be able to be used as a random dungeon generator with minimal input. I intend to supply separate evolutionary paths for Dungeons of type: 1. Solo Dungeon Traversal 2. 2 person confrontational; 3. 4 entry point center quest (for 1 - 4 competing players or 2 teams of 2) and for small, medium and large dungeons, 9 evolutionary environments in all. We are actively developing the program in CVS, but things are pretty chaotic at present, and the Windows build is broken. If you have any suggestions, we listen. Now's the time, here's the place. This will be the last major re-write for 2001. I think, anyway. Peter Henningsen |