
I thought the idea of making a "demo" level with a couple simple goals (kill some enemies, dig out some tiles, etc) was a good one so I started implementing that idea. I have gotten the creature combat AI at least functioning (thanks to Bodsda for his suggestions) and I have also tweaked a couple more things relating to the combat AI to make it a bit more sane.
I have also implemented a polymorphic virtual base class called "Goal". The goal class cannot be instantiated directly (since it has pure virtual methods) but is meant to serve as an interface for other goal classes to interact with the rest of the game. The first of these classes is, I believe, created in the true spirit of the game and is called "GoalKillAllEnemies". Although it is not yet fully functional, I have already added support to the level loading/saving routines to read in this class and it should be fairly simple to actually make it function (most of the code is already written, it is just not called yet). Once this is done (and one or two other minor fixes) we will have a simple "elimination" game type to use as a demo. The game engine will simply declare the last person who has surviving creatures the winner (actually the first player to remove all the goals from their "todo" list is the winner, but currently there is only the one goal on that list). It should be fairly easy to create more goal classes, of which one or more can be added to a level file to make a game scenario.
Something I could use help on currently would be the creation of a goal list. The list should contain only items which the game can algorithmically determine (for example I can check if KillAllEnenmies succeeded by checking the color of every creature in the game and seeing if they are all the same color). Some suggestions that have been mentioned or I have thought of to get you started:
* KillNEnemies - takes an argument N, which is a number of enemy creatures which must be killed to satisfy the goal.
* DigOutNTiles - takes an argument N, which is a number of tile sqares which must be dug out to satisfy the goal.
* ClaimNTiles - takes an argument N, which is a number of tile sqares which must be claimed to satisfy the goal.
It would be nice to have a list of 10 or so of these so we could build a sort of "tutorial campaign" to introduce new players to how the game works.
-Buck