
This was another weird month, in part due to a sort of mental backlash against the whole deadline thing from last month. While I didn’t quite reach said deadline, the whole perspective of this as a thing that could be some version of finished in the near future kind of freaked me out. I have a complicated relationship with actually finishing things – most of the work which I call finished is small enough in scope that I can feel reasonably comfortable that I’ve examined it from enough angles to have confidence in its quality, as well as knowing that even if something turns out to be unsatisfactory about it I probably won’t be too upset because it’s a relatively little investment of self. This gets much more difficult with a huge project like this, and the closer I get to some sort of completion the more I have to face that. In that regard, this vertical slice completion is quite useful as a sort of practice run: Perhaps by dealing with this anxiety now I can be more prepared to handle the bigger, meaner, final boss version of it that’s going to happen when it’s time to actually release the game.
Perhaps.
Anyway. For this reason, and reasons of general fatigue and malaise, the beginning half of this month was spent almost entirely on music composition – a task I frequently gravitate towards when I’m feeling stressed or confused about more immediate and concrete tasks with more stringent requirements. These two tracks ended up being some of the more complex composition work I’ve done on the project so far, in terms of number of instruments and chord structure, and in both cases I had to spend approximately a whole week listening to them over and over and over, seeking out tiny discords and fixing little mistakes and stripping out sections that weren’t working, before I was finally some version of satisfied with them. Well, none of this is written in stone, and I may yet decide that these tracks need more work, but I at least was able to get to where I was able to call them finished without immediately crumbling into anxiety and self-doubt.
This is the track for the cathedral area, a place at the base of the tower where masses of people have merged together to become one great conflated entity, hurt and confused, always wanting more and less. I kept a motif I liked from Do No Harm – that originated when I thought that that was going to be the music for the cathedral zone – and I expanded on it, creating a dense counterpoint that kept threatening to spin out of control. I think one of my flaws as a composer is that I tend towards complexity, often unsatisfied with one or two simple tones playing against each other, and this track really fed into that tendency. The result is, I believe, a track that is rewarding to listen to attentively and repeatedly, but may feel confusing or off-putting on a first hearing. I suppose I’m fine with this in general – game music has to be able to handle being listened to over and over on a loop, naturally – but I can’t completely silence the specter in my mind of someone hearing a few notes they don’t like and then simply muting the sound in the game. Oh well!
Afterwards I was still not feeling up to returning to the rigors of programming, game design, and art, so I started working on the music for the University area. As one of the later sections, I wanted to start breaking the aesthetic of NES music a little more intently, so I started bringing in more SNES instruments – something I’ve been doing here and there, such as in the last section of The Agony of Touch, but in this case omnipresent throughout the whole piece. This is also the first piece written so far for this project that has stereo sound – which, while it has the same symbolic reasoning as adding SNES instruments, was also simply because I was having a hard time not oversaturating the mix. I put a lot of time into this track and I think I’m quite pleased with where it ended up – I can hear a lot of inspiration from Final Fantasy, Chrono Trigger, and perhaps even Secret of Mana, without feeling like it ever pulls too directly from any of those inspirations. I wanted to create a feeling of hauntedness, like this was a place that was hopeful once and empty now – I don’t know if I hit that target directly, but I think some of that comes through.
Though in my memory this was all a two-week block of solid music composition, I can see looking back over my daily dev journal that I actually worked on a number of other noteworthy tasks during this period. First, I added a set of tutorial messages at the start of the game: These are very simple and minimalistic, just a text bubble that appears and teaches a basic control, then disappears permanently once you do the thing it teaches you.

I also wrote and placed a significant number of newspapers and books in the world to serve for both storytelling and flavor.

Around the time I wrapped up the second piece of music, I also started implementing this mid-game scripted sequence I keep alluding to in vague terms. To work on this, I had to create a character design that I’ve been butting up against for a while.

An earlier version of this design popped up a few months ago, and it’s changed in several ways since. The biggest change is I felt that the giant skull was simply too goofy, and I tried to pull the elements that were interesting from that into a mask-like visage to fit onto a more humanoid design. So I had this design, a couple of other necessary character designs, I had the room for the scene to happen in – but something was gnawing at me. I was feeling the sense that I needed to start testing and scripting events, get in and make sure everything was functioning properly – I have, in fact, barely run the project at all over the last month. Testing is vitally important, and I know that – but I wasn’t doing it! How was I ever going to implement these complex scripted sequences if I wasn’t willing to go in and test? What did it mean that I kept avoiding doing so?
Sometimes I catch myself avoiding things. Sometimes I find that the mere thought of doing something that should be fun and rewarding fills me with dread, that I’ll do anything aside from that, making infinite excuses, focus indefinitely on preparatory side-tasks. It’s one of the traps I’ve learned to be very cautious of. At such times, I try to do my best to identify the problem and address it head-on: What’s causing me such dread? How can I work around it or alleviate it? One reason, I determined, was a fear of things going invisibly wrong – of something incorrect in the system going undetected and lying in wait like a landmine. This becomes particularly insidious at the intersection of the dialogue and gameplay systems: Both systems are able to get and set global variables to communicate with one another, but the actual communication is very difficult for me as the designer to perceive. A character dialogue might set a flag that places an object in the world, the object might set a flag to tell the character that you have found the object, but neither of these interactions are clear without looking at both the object and the dialogue file. A typo in either might mean the wrong flag is being written or read, and errors like that could cascade to some indefinite unknowable depth. That sense, of not being sure until testing whether any sequence will work properly, makes the prospect of testing far more stressful – since each test might reveal not just one issue but a huge set of cascading issues which make my life hellish for weeks on end.
This was a helpful realization, but it didn’t immediately suggest an action. It took me some time to decide upon a solution – and significantly more afterwards to figure out how to implement it. What I ended up creating was a Unity editor extension that draws all the information I need to understand approximately how these entities are interacting to the scene view.

This looks pretty simple, and for the most part it is, but getting this all working was a week or so of work – not least because Yarn Spinner, the dialogue system I’m using for the project, does not make most of this variable getting/setting information readily available. Because of this I had to create my own helper class which parses the dialogue files and pulls out all of the information. This was, frankly, a very frustrating thing to have to do: If I’m putting this much work into parsing dialogue files, the benefits of using a pre-made dialogue system really start to diminish. Would it have taken so much more effort to simply roll my own at this point? Perhaps not, but here we are, and the benefits of Yarn Spinner (most notably the easy localization options) probably will outweigh the drawbacks for the foreseeable future. Perhaps I will submit this helper extension as a suggestion for how they might improve the versatility of their tool in the future. Aside from those challenges, it took a bit of work learning the ins and outs of scene view GUI to actually get this to nicely visualize. Clicking a button selects the object which is controlling the flag, lines represent other objects setting the flag this object gets or getting the flag this object sets, and clicking the connection to a line moves to look at the object the line connects to.
Finally, I added an extension to the NPC dialogue inspector that displays what dialogues can be activated by speaking to the NPC, then marks up those dialogues by highlighting where it reads or writes variables, where it jumps to another node, and most importantly where it detects a given line might be too long to fit into the in-game UI.

All of this took a couple of weeks, and for the whole time I was fighting the paranoia that this was just another instance of finding something to work on so I could avoid tackling the hard stuff, just digging up another way to dodge the dread. Looking at this work now, though, I feel so much less stress that I have to believe this was the right choice. There are still probably a few issues left to iron out: Some of this information could probably be displayed more nicely, and there may be things I haven’t thought of yet that need to be added, and right now all these buttons make it a bit tougher to use the standard Unity editor gizmos – but this feels like a huge step in the right direction.
Meanwhile, I’ve been putting together a task list of everything left to do for this vertical slice. It’s not much – just as it wasn’t much at the beginning of the month – and now I’m in a much better position in terms of mental and material preparation to tackle it. I’ll be burning through this list as quickly as I can – but, at the same time, I’m feeling so restless, so impatient to start building the game out and adding all of the cool stuff that’s been waiting just behind the barrier of finishing this first segment! I keep hitting ideas for little bits of polish and improvement, tweaks to make things nicer and smoother, narrative points I want to touch upon… Perhaps, between checking things off this list, I will start putting together a second list, a list of when and how to proceed to build out the game, a step by step to figuring out how to capture the game which eludes me.
It is a strange compromise I find myself making between getting excited about finishing this early vertical slice and moving towards where I eventually want the project to go, and I keep getting lost straddled between these two guiding lights. Still, it’s not as though they’re leading in such different directions – as long as I keep making my way forward, I will be making some kind of progress towards some kind of completion.
If you’d like to help support this project or my writing, please consider supporting me on Patreon.