Postmortem: Humble Hearts' Dust: An Elysian Tail
October 31, 2012 Page 1 of 4
In this candid and detailed postmortem, developer Dean Dodrill tells the tale of the challenging and largely solo development of Summer of Arcade hit Dust: An Elysian Tail, a title that took him over three years to create.
I had always loved video games, and thought making my own would be cool.
Late in 2008 I read an article in OXM detailing what was possible with a new programming language, cryptically called XNA. I had never programmed before, and besides a short contract doing cutscenes for Jazz Jackrabbit 2, had never worked on a video game (I'm actually an animator/illustrator by trade).
For years I had been feeling the call to make my own game -- something small, like an 8-bit NES title. The OXM article convinced me to download the free tools and just try it. Four years later, I released Dust: An Elysian Tail as the headliner of XBLA's Summer of Arcade 2012. Yeah, I can't believe it either.
This is the story of how Dust: AET came to be, along with what went right and wrong during production and launch. Admittedly it was hard to come up with a list, because when you are independent and your livelihood is at stake, you can't afford to let things go wrong.
After convincing my wife that I'd like to take "only three months" off to learn to program and release a small 8-bit-style indie game in early 2009, I downloaded Visual Studio and XNA, and joined Microsoft's XNA development community.
A week of rudimentary tutorials later, I quickly realized you have to make EVERYTHING from scratch! No level editor existed. No animation tool. No scripting or dialogue systems. No nothing -- just a bunch of otherworldly programming words. But that's what made it exciting: learning a new language (literally), slowly making my artwork interactive, and more importantly, growing my aspirations beyond the original 8-bit design.
Most of my education came from online tutorials, and while each one provided valuable insight into the process, very few were directly applicable to what I wanted to achieve. That's when I came across James Silva's book on developing for XNA, which he had written while working on The Dishwasher.
Up until that point, I had committed to working with a blocky tile editor that I had been cobbling together to create my game. His book offered concepts that allowed for much more organic world creation and animation tools. That was the eye-opening moment for me, and an image of a mysterious turquoise character running through a beautiful forest alongside a herd of deer cemented itself into my brain.
What Went Right
1. Crafting The World and Characters
First things first: I needed a protagonist. He needed a unique silhouette, easily readable from a distance and exaggerated in motion. He would be fully animated in the traditional Disney sense.
Animating "Dust", as the protagonist would be called, was time-consuming. I would rough out each motion with pencil on paper, and then do a digital pencil test. When I was happy with the motion, I would ink each frame on my light table, scan the artwork into Photoshop, and then separate the shadow layer out and do cleanup/color/shading (a technique I developed while working on my film). Finally, I would composite a CG animated weapon into each frame to create the final artwork.
Each frame would be downsampled from film res to a 300x300 block, and arranged neatly on a sprite sheet. In the end Dust himself comprised over 500 unique frames of animation, across four massive 4k sprite sheets. Dust alone used up most of the RAM available on the Xbox 360.
The character editor was created in tandem with the artwork. The editor was also customized to handle segmented characters, which ended up comprising the rest of the cast.
Dust (the early working title, later changed to Dust: An Elysian Tail to make it searchable, and to tie it into my existing IP) would be an open-world mix of genres, where the player could gain new abilities and take on side quests from non-playable characters, and feature a simple leveling-up and loot system. My largest inspirations were Blaster Master, Monster World, Cadash, Strider, and Castlevania.
Again, with the help of James' book, I crafted a level editor that would allow me to incorporate my skills as a painter. Small pieces of background art would be digitally painted with a Wacom using a custom set of brushes in Painter, then assembled into 4k sprite sheets. Segments could be scaled, rotated, tinted, and flagged for motion and particles through the editor.
The final game ended up featuring over 230 handcrafted maps -- individual gameplay areas assembled into a number of themed regions, all accessible from a central world map. Creating the background assets and maps ended up being the most time-consuming task through the entire production. I stuck with familiar themes for areas to reflect my preference for older games. A Metroid style mini-map was retroactively implemented later in development.
One of the first systems to be written (and rewritten, and rewritten) was the particle system. This might have been one of my favorite areas to work in, making everything spark, glow, or just come to life in some way. In Dust: AET, a particle could be as simple as a floating mote, or as complicated as an entire avalanche, spawning hundreds of new particles in its wake. A dynamic weather system was also implemented to bring the world to life.
Immediately after my first sketches of Dust, I created his flying companion, Fidget. I needed a character at his side to help the narrative along, and to compliment/contrast his personality. And really, that's all Fidget was good for, mechanically. At first, anyway.
I was showing my brother how maps were assembled, using hundreds of sprites. We joked how funny it would be if the world around you were sucked into a spin move I had animated, since it was technically possible, if not a bit ridiculous. It dawned on me that I could expand on the simple throw axe/knife/what-have-you of a Castlevania and do something flashier with projectiles.
I animated Dust throwing out a projectile and programmed what would become the Dust Storm. The problem was that you had to stop running as he threw the projectile from his hand, and it killed the flow of combat. Then I realized I had this floating character following you the whole time. I had Fidget cast the projectiles, created some animation and code, and the combat clicked.
Dust: AET finally had its signature mechanic, and it looked and felt very, very cool. The next thing I needed was for it to sound very, very cool.
Page 1 of 4