Scheduling and Terrain
I've done more work on the roguelike prototype. Ran into a couple more challenges than I intended to deal with. I want to make the game turn-based, but I had to use a real-time game loop to avoid having very clunky and unresponsive input. So the UI updates at 60 fps, but I need the game entities to update in step with the player. I had to set up a very crude scheduler for entities along with an action queue system. At least now I can have my NPCs carry out move, wait, and loop instructions.
Also had to start defining terrain characteristics so that I could start map generation. I'm currently using JSON to define symbol sets and colors for different terrain types, but it'll get much more complicated before it's capable of everything I'll need. I spent way too long trying to coordinate terrain patterns and colors. Finally, though, I've got the first dungeon generation algorithm working. Uses some simple cellular automaton rules, based on this article. It looks pretty much like I wanted it to, but this method creates space as pretty much an unstructured blob. I'll have to eventually figure out how to establish/guarantee connectivity, find useful spaces for distributing dungeon features and monsters, and so on.

The code at this point is a horrible mess. I'll need to rewrite it to use an entity-component system before I can get any actual gameplay going. For now, I'll just try to work out other methods of dungeon and overworld generation, and try to produce a decent map representation that can handle the features I require.
Here's a good post that lays out several of the basic systems needed for a roguelike game. I'm glad I stumbled across it since it kept me from having to discover them through trial and error.