I rate the progress I made this week a 3 out of 10 due to available time. I’ve been trying to work on the game as soon as I get home from work because I sometimes have a free hour, but my mental energy tank is proving to be empty at the time of day. The weekday schedule that’s working best for me, in terms of mental sharpness, is early morning (5:30 AM) and later in the evening (8 or 9 PM). I also try to do some design work during lunch so that I know exactly what I’m working on next when it’s time to sit down and code.
Anyway, I continued refining map generation this week. There were a few noteworthy accomplishments:
- Map configuration randomization. This adds another layer of randomization to level generation. It randomizes map configuration parameters such as number and size of rooms, room spacing, and minimum and maximum corridor widths. It has the effect of changing the overall feel of a map and how it’s played.
- Entity collection types. These allow entities to belong to one or more collections in a data-driven manner. These collections are then used during procedural generation to randomly select an entity from a list of applicable entities. For example, a storage room may contain barrels, crates, and/or sacks.
- Implemented new map elements: fountain, fountain area, abandoned area. The fountain map element places a fountain on the map. The fountain area is responsible for finding an area on the map, such as an unoccupied room, to place the fountain. The abandoned area map element adds debris and cobwebs to an area that has been designated as long abandoned. As with all map elements in the game, these elements are parameterized and support random or specific values. For example, a fountain can heal the player, poison the player, or be dry. This can be randomized by the fountain map element, or the fountain area map element can pass a specific value. Map elements can be hierarchical and layered. For instance, the fountain map element is a child of the fountain area map element. The abandoned area map element can optionally be layered on other map elements, such as the fountain area, to make some areas of a map appear abandoned.
Next week, I’ll convert some existing map features, such as hidden and boarded up doors, to map elements. This will enable these features to be placed more effectively. For example, a player may not be able to break down a boarded up door, so those shouldn’t be placed on the critical path through the level. I also want to get a few new map elements in.
Looking forward to Roguelike Celebration 2021!