Skip to content

Tough Stretch

June 8th, 2015

John

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!

paxeastcopy

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.

Before, scripting events looked something like this:
script

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:
useq

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!
test

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).

Before, I was building out custom editors within Unity for managing all this data. On the plus side, having everything centralized in the engine made making individual edits much easier.
unitydata

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:
sqlite

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.

New Friends!

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.
cosmochoria

Telepath Tactics is a deep SRPG featuring destructible terrain, single player campaign and hot-seat multiplayer modes, and mod support.
telepath

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.
regalia

Okay back to work. Until next time!

– John

3 Comments

Post a comment
  1. Jesse Nelson #
    June 8, 2015

    Finally! I was worried the project had been put on hold. Looking forward to the day I get my hands on a copy. Keep up the fantastic work!

  2. MagneticDustin #
    June 8, 2015

    Keep at it! The end result of this is going to be so worth it. I wish I could be in your shoes right now, following a dream and working with all of your being to make it happen. You never settle, and that is what will make this project incredible. I cannot wait to see the fruit of this labor in all its glory.

  3. Ariel #
    June 14, 2015

    Awesome!
    I can’t wait to see the finished game
    Good job, good luck!
    Greetings

Leave a Reply

Basic HTML is allowed. Your email address will not be published.

Subscribe to this comment feed via RSS