Most of this month was taken up working on tweaks and changes to the dialogue system, which is definitely not how I had hoped to spend this time. One fix to the system required another more fundamental fix, which led to bugs, which required fixes which themselves required other fixes to the core system to enable, and so on and so forth over the course of three weeks or so. All-in-all this has been one of the more dispiriting months on the project so far and an object lesson in the dangers of relying on third-party tools. I think the real lesson I need to take from this is that at the moment where the third party tool’s capabilities and my requirements begin to diverge I need to immediately consider dropping it and rolling my own, because working around limitations like that can be An Ordeal. Now that I’ve done it, I may try to compile all these experiences into a list of recommendations for the developers of Yarn Spinner to implement internally so no one has to go through this in the future.
Giving a play-by-play of this entire struggle would probably be boring for you and stressful for me, so let’s skip that even if it comprised about 2/3rds of the month. I did achieve some notable work before and after this bleak venture that might be interesting. First, and precipitating much of the above-mentioned struggle, I built an interface for asking NPCs about keywords:

Now that I have everything I need to query the dialogue system for which lines have been played or not and which lines can be reached from every other line, I can have these keywords fade out as they’re played. Yes, that’s what all this effort was meant to achieve: The mere ability to query whether there was more dialogue available on any given dialogue branch.
Another little flourish I added to the dialogue system is the ability for characters to play incidental dialogue lines into the game world without changing the game state to dialogue mode. This makes it a little bit easier for the player to spot NPCs, since they can say something when the player encounters them, and I think a little later on will be a great way to add a bit more flavor to boss encounters, with the boss cursing or gloating as the battle progresses.

I also added some new background tile art to flesh areas out a bit more:

Ideally I’d like to have posters and graffiti be modular tiles so I could construct something that looks relatively natural, but in practice it can be difficult to compose images in such a way as to make that possible. I may give it another shot later, but in the meanwhile just having a bunch of little pictures that I can place where posters ought to go or the like is probably going to add a lot to each area visually.
Of all the work I did this month, though, I’m most pleased with the new music composition. First, I started developing a character theme:
This is mostly background for a conversation with one of the game’s more important characters, and I’m a bit worried that it’s a little too busy for that purpose. However, I really like the overall mysterious and wistful tone, which I think will fit the scene well. I’ll probably leave it as-is until that part of the game is implemented and I can decide how it feels in place.
I also went back and revisited one of the stage themes I’ve been meaning to develop a little further. This is one of the first pieces I created for the game – actually, I originally wrote the sketch that became this piece in 2008, wasn’t sure what to do with it then, and changed it to the chiptune style when I was figuring out what this game would sound like during the first month of the project. I expanded it a bit then, but this time I revised it completely, adding new melodic lines, changing the instruments around to make it better balanced, and adding little pitch-bend details to the instrumentation (a technique I’d just started experimenting with in Burnt-Out or Oxygen-Deprived). I’m quite happy with how this all turned out, and I think this feels like one of the stronger tracks now. I always knew that that sketch I made had potential, and I’m happy that finally, 15 years later, I’ve managed to make something that lives up to that potential.
In the midst of all this, I finally invested a chunk of time and money into updating the old dilapidated laptop I was using for a mobile workstation – not least because, as I am planning on moving soon, I expect to be working on the go significantly more often. I am simultaneously excited about how nice it is to be working (and gaming) on a modern machine, and stressed about having to spend a thousand bucks to make that happen, but over time I hope the latter will become less acute.
So, with all of this dialogue reworking behind me (hopefully), what’s next? There are still some fixes and tweaks to be done to the display of keywords and dialogue choices, but after that I will have to build the journal. This inventory item will track all dialogue lines played (another reason I’ve been working so hard on this system) and make it so you can look up any conversation later on. It will also store a short summary of “the story thus far” so the player can quickly catch up after taking a break, a list of known keywords that also works to look up dialogues, a reference manual for any non-obvious gameplay tips the player may need to refresh themselves on, and an enemy bestiary with information on attack patterns and weak points. It’s entirely possible I may decide one or more of these aren’t worth the trouble and cut them later, but that’s the current plan. In the likely event that I want to take a break from dialogue stuff altogether for a while, I also have plenty more level-building to do, which would be a real relief after all this.