I worked on map generation over a month ago, then set it aside; I was spinning wheels on rendering and prioritized the conflict loop instead. It’s back and more robust.

My implementation is a directed acyclic graph; you start from the root node and have a series of choices about where you can go, eventually narrowing down to a single terminal node. Traversal works (disabling nodes you can’t visit), and since the nodes are practically buttons, I got controller navigation for free (ish).

For debugging purposes, the map regenerates each time you run the scene. There’s a fitness calculation that checks for orphans and some other conditions. It’s pretty stable, and I’ve added some UI enhancements like a reticule, a simulated screen (re-using a CRT shader over the starfield with some additional lines), and information about the currently hovered node.

I would have written this post earlier today, but I was struggling a bit with seamless looping music; Ableton can try to make loops on export, but either a DC offset or zero crossing problems make it pop. I ended up putting two loops instead of one in there and used FMOD timelines with a crossfade from the end of the second loop into the first loop.

Relating to the map, I’ve started building out encounters, including learning about YarnSpinner Commands. Not much to look at yet, but there’s a debugging encounter where you can choose to receive energy or take damage, and the effect resolves. That unlocks much more complex interactions and means a dialog can impact the outcome of your run or unlock a permanent flag for future runs.

Devices now use the command pattern, and I refactored and namespaced to have separate commands for combatants and devices. This way, the toolbar and other areas are more in sync, and there’s feedback when devices generate.

Settings also can be used to control the window. I learned that choosing resolution isn’t something you do in fullscreen, just when it’s in windowed mode; otherwise, it’s just scaling.

Between a trip and my kids’ vacation from school, I didn’t get as much done as I hoped, but this is still substantial progress. As I implement a save game system, the player will be able to sequentially experience conflicts, encounters, and progress. The bones are there, and I’m adding the connective tissue. When it’s in place, that will be the time to start alpha playtesting before I flesh the game out with more content. Come join the nullband.games Discord to be first in line!