June 8th, 2015
Hey everyone! Man, it’s been a while. Here comes another long one…
Let’s start at the beginning!
GDC and PAX East
Way back in early March, things were pretty hectic with getting ready to show the game at GDC and PAX East (which were on the same week, which was insane). I was still crunching to get the big changes to combat I mentioned in the last update ready to show.
Here’s a little trailer I threw together for the events with old update footage in case you haven’t already seen:
At both events, I got a ton of useful feedback by watching and talking to people playing the build. I also got to meet some of you, which was awesome!
The feedback coming in was very positive- people were really liking the new combat mechanics, and the game’s overall concept, tone and feel. Which was great!
Watching dozens and dozens of consecutive playthroughs made it obvious what wasn’t working- the tutorial needed more clarity, there were UI quirks, and the simultaneous execution still had some bugs that needed fixing.
That said, I went home with my notes feeling pretty good, knowing exactly what I wanted to fix, thinking the next build would be ready in a week or two, tops.
Three Months Later
So what happened?
It turns out, knowing what isn’t working is very different from knowing the best way to fix it! I spent a lot of time in March second guessing things and trying out different ideas, which led to a pretty bad case of design paralysis. That and a bit of burnout from the hard crunch leading into GDC/PAX made March a slow month.
Eventually I pushed past this, and as I continued refining the opening sequence, a few shortcomings and pain points in the production process became clear. I began spending some time streamlining the tools and workflow to address these issues, and this eventually turned into a significant overhaul of parts of the game’s underlying technical architecture.
Here are the main three areas I’ve revamped since the last update:
1. Editing Cutscene and In-Game Events
As I’ve mentioned before, there are a lot of story elements in the game that need to be scripted by hand, which is a slow process. Early in development, I experimented with setting up a visual event editing system that works like video editing software to speed this up, but making it robust enough to support all the different types of game events was taking too long so I scrapped it. After several months of scripting and re-scripting game events though, I decided to revisit it.
In simple cases, this approach works fine, but in more complex cases, splitting up multiple simultaneous subroutines for each on-screen character becomes a timing nightmare. Here’s what the new editor looks like:
Apart from speeding up event scripting, the tool gives me much finer control over precisely timed sequences in the story that I otherwise wouldn’t have been able to pull off. In particular, putting together complex action sequences is much easier.
2. Animation system improvements
Along with the visual event editor, I spent a lot of time revamping the character animation system. The existing animation system was working, but had some shortcomings. First, I needed to be able to have any animation play and blend with other animations within a specified amount of time to fit the needs of the visual event editor shown above.
Second, I needed to decouple objects like weapons from the character models. Earlier, weapons were “baked” in with characters, so something as simple as allowing characters to pick up weapons from the ground wasn’t possible without some major hacks.
The biggest problem with this approach was that each animation required multiple versions (i.e. RunWithSword, RunWithSwordAndShield, RunWithBow, etc). The number of required animations was multiplying very quickly, especially since animations have multiple variations in addition to weapon type (i.e. AttackSwordLeftToRightHit, AttackSwordRightToLeftHit, AttackSwordLeftToRightBlocked, etc). Separating holdable/stowable objects from characters means less animations to make and keep track of overall, but it also means I needed to go back and redo existing animations to account for this. There were a lot!
3. Managing Game Data and Persistence
The last major overhaul centers on managing all the game’s data. There’s a ton of data driving the game under the hood for everything from unit classes, abilities, equipment, scene events, and especially characters (both playable and non).
The problem with this approach was that as the game scales up, making high level changes is very slow and error prone. To address this, I externalized all the game’s data from within Unity to a local SQLite database:
This had lots of ripple effects in the code that needed to be addressed, and the existing data needed to be migrated out by hand, which took a lot of time. The payoff was worth it though, since now I can easily make bulk changes like re-balancing a particular stat for all enemies in the game, or enabling localization of all the game’s dialogue in a new language. This also allows for things like persistent NPCs which opens up lots of interesting possibilities.
Development Hell and Back
It’s been a tough stretch! I try to put updates out when I’ve hit a new milestone, or there’s some interesting new content to show, but the last few months have been tricky since I’ve been taking things apart and rebuilding the nitty-gritty technical stuff which isn’t very interesting to talk about. While I’m glad I had the chance to invest in refining tools and making sure I’m implementing things the right way, I can’t wait to shift back to producing playable content.
I’ll be uploading the latest alpha build later this week. I’ll also be putting together a longer behind the scenes video walkthrough of some of the upgrades I talked about here and the other editing tools I’ve built out for anyone interested in learning more about the in-depth development process.
Before I go, I just wanted to mention projects from two fellow solo indie devs working on long term, Kickstarter-backed passion projects. Both of these guys were my neighbors at the Indie Megabooth at PAX, and both have recently released their games on Steam!
Cosmochoria is a lovely 2D space platformer/gardening adventure with lots of unique charm and mysteries to explore.
Telepath Tactics is a deep SRPG featuring destructible terrain, single player campaign and hot-seat multiplayer modes, and mod support.
Lastly, the folks behind Regalia – Of Men And Monarchs reached out to let me know of their in-progress Kickstarter for another tactics RPG with an awesome 2D art style.
Okay back to work. Until next time!