I took the framework previously developed for HarvestRL and converted it to use for this game: all the UI elements, the mapping functionality, and basic AI were working nicely with the next project. I was also able to properly create an executable that runs outside my IDE, which was a serious problem last year.
Most of my work on the first day, aside from getting all that stuff copied over, was to build a proper level generator. The extended version of HarvestRL creates a world map and generates outdoor landscapes according to the overworld terrain. That is not what I wanted here; there will only be one map, and it needs to be an interconnected set of rooms. I turned to the BSP generator in LibTCoD again and fired that up. It worked out okay, but it will need to be tweaked. Below is a screenshot of a dungeon it created. Notice that the varied land tiles work properly (this was from HarvestRL already).
I'm ignoring walls in the game (that's how I can move and see through walls in that screenshot), but that's from having debug mode turned on. Two more things need to be added to this generator. First, there need to be paths leading out of the dungeon to the edge of the map. These paths will be one of the two ways enemies will enter to attack that player. Second, I need to add caverns. Since this is meant to be a fort built underground, there needs to be a feeling of "undergroundness" and this will come across more easily with some cavern-like areas. There are several empty-space areas of the map, so most likely that's where I'll put them. If they cross existing corridors, that's even better.
After playing around with this though, I realized that my initial idea for the game was going to be very tedious. The plan was to have the player clear out the dungeon, then more enemies would spawn, and you'd repeat this until some end-game condition was met. Looking at the size of this dungeon, and remembering that backtracking will occur, such a cycle of play sounds boring. That's no good.
Instead, what I will do next is fill the dungeon with enemies already, have more enemies spawn from uncontrolled regions, and the spawned enemies will seek out and attack the player (capturing rooms along the way). Since I had planned to let the player make traps and barricades and such, this change in enemy behavior will still work. It will probably add significant tension to the game too, which is something I wanted.
I won't have much time on Days 2 and 3 of the challenge, but my plan for those days includes:
- Add caverns and doors to the dungeon layout
- Have monsters start in most rooms, with the Guard AI
- Spawn monsters, and have these hunt the player character
There is already rudimentary combat and health, so that will help with testing how well I can clear out the dungeon and potentially die. This will give me the opportunity to add the losing and winning screens back in, and have a way of properly ending the game. If all that can be finished by Day 3, then the rest of the week will just be adding in more content and polish.