30 Jun 2013
June 2013 - Thundersnow

Of all of my 1GAM projects so far, this is the one that most makes me wish that time would not be so rigid in its sequential nature. There's a lot here, more than I really knew going in how I would even handle, and only parts of the plan have made their way into the final package. But I'm happy with what's here, I've learned a lot, and I certainly never played this game before I made it, so let's look, you and I, at Thundersnow.

The Concept

As has become a theme for me, there were several components, only loosely related if at all, that went into the making of this project:

As with my last two digital games, the music is created by my buddy Ben Freund, and part of the idea this time around was to pick the music first, and see what kind of mood and themes rose from listening to the music while working.
Action RPG Control
Having already made one game in Unity using ARPG-style overhead click-to-move controls, I wanted to try adding various abilities to both the player and to hostile targets to flesh out those controls for more game options. That also led to the next component...
My previous three digital games for 1GAM have been non-violent - the protagonists have been an altruistic alien, a maintenance technician, and a chatty asteroid. While I don't want to fall into the trap of kill-or-rescue as the core motivations in any of my games, I still wanted to work on how to make a combat system work with Unity's Mecanim animation system.

The Music

I started by listening to the collection of available tracks by my friendly local musician and identifying songs that felt to me like they should inspire a theme for a game. I very quickly landed on "Thundersnow" and later added "Icepack" and "Caverns of Wind" because of how they flowed in my mind. This remains the structure of the game - the title screen uses "Caverns of Wind," phase one of the game uses "Icepack," the second phase of the game uses "Thundersnow," and the ending sequence comes back around to "Caverns of Wind." All of the themes of Thundersnow grew out of listening to those tracks.

These songs, and others, are available on Ben's SoundCloud page.

The Theme

With the music in mind, and a vague idea of mechanics, the main theme of Thundersnow came from me brainstorming what the image of thundersnow could represent. I landed on the idea of thundersnow as a metaphor for suppressed emotion - the storm is a rolling force, rumbling and flashing with power, while the snow represents a gradual deposit of ice, freezing the world over and covering up the rough spots in a smooth, clean surface.

All of the themes of Thundersnow grew from this idea. The setting, the structure, the story, the visuals, everything is based on images of emotion and the physical and psychological effects of strong emotional responses. There's more to this, but it could change how a player responds to the game on the first playthrough, so I'll limit any more discussion of this to a section later on.

The Story

The story of Thundersnow is intentionally a little vague. That was also a part of the experiment for this game - some of the story is explicitly stated, some is implied, some is only suggested in the visuals without figuring directly into the game, and some is intentionally completely unspecified. There are some basic points and an overall theme that I hope are very clear, but the chain of events is left somewhat vague by design, because the situation is more general and doesn't necessarily have to be tied to any specific events or actions.

The Mechanics

Thundersnow is based on a simple premise - the protagonist wakes up in a strange, snowy setting, unclear of how he got there, and concerned that an unnamed party he had been with in his last memory isn't here, so he sets out to reunite with that person and figure out where he is and what's happened.

As the game begins, the brief opening monologue introduces the two visual elements of the interface, hopefully in an intuitive way. When the pressure in his chest is mentioned, the pulse bar appears:

Then, when the idea of finding strength over time is raised, the wisdom bar appears:

I think these read pretty clearly - the pressure in your chest is a progress bar, labeled with a number, with a beating heart at one side and the grim reaper at the other. The mechanic is that exertion increases your pulse, and if your pulse gets too high, nothing good awaits you. As your pulse gets faster, the bar fills, the heart icon visibly pulses faster and faster, and you can hear your character's heartbeat grow louder as the bar fills. One happy side effect of having access to the composer of your game's music is that I was also able to get the soundtrack broken up into melody and percussion tracks, so during gameplay the volume of the percussion track is based on your pulse, the result being that the music will take on a more urgent and driving sound when you're in danger.

The wisdom bar is another progress bar, with a journey at one end and a symbol of strength at the other. This is a basic Experience mechanic - victories grant wisdom, and filling the wisdom bar allows you to cultivate your strengths:

This was the other part of a basic Action RPG structure I wanted to experiment with this month - experience, skill levels, and allocating points into skills to modify your abilities. It's a very basic system but it works and could easily be fleshed out if needed in another game, so I'm happy with how this worked out.


Combat works fairly well but is also part of the game that I wish I had more time to work on, so I'll probably keep developing this codebase over time in other games. The combat is functional, but it doesn't feel as smooth as it should, and the code ended up in a fairly embarassing state of multiple half-implemented structures and objects using other objects to get references to yet more objects to pass messages to. However, I'm still counting this as a win overall, as it represents both my most complicated worth with Mecanim so far, with several multi-layer animation controllers required for the various characters, and also my first successful integration of publicly-available motion capture data with Mecanim, which opens up a huge area of possibilities for future games.

The Other Stuff

So as I mentioned, there's more to Thundersnow, but knowing some of it going in will color how the player experiences the game the first time around, so just in case, the rest of the post mortem writeup is hidden away. If you've already played or just want to go ahead and know everything going in, just click the button below to reveal the rest of the writeup.

The Verdict

Overall, this was an experiment on several fronts, and while I'd love to have more time to clean up all the rough edges, improve the combat, and fill out the world (which was originally intended to have many more visual elements and interactions), there's a lot here that I like, and I'd like to do more work along these lines later, especially now that I've figured out how to implement so many re-usable components in this code (e.g. rules-based and zone-based hostile spawning/management, combat with Mecanim animation and hit zone detection, easy cutscene injection with camera management, XP/skillpoint system, etc.).

As it is, it should be in a playable state, and is hopefully interesting enough in its theme and mechanics to keep players interested for the short time required to experience the story.

Note: the following builds are available for testing purposes but I don't have the ability to test them. These are Unity builds so I don't anticipate any serious issues, but I can't vouch for correctness or performance of these builds.