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.
Dean, when I was a much younger man, I used to post on your forums. I really wanted to know how it was done! Even after seeing so much of the magic in its unfinished state, even knowing how it’s made, the level of craftsmanship and creativity present in your art still never fails to amaze me. This postmortem was also enlightening.
I’m happy to hear you have been able to apply your particular brand of assiduity to game development as well, and that your family life is still great. Thanks for sharing.
What I think is really cool about this story, is how Dean wasn't afraid to learn new skills and techniques out of his safety zone, and created something brilliant.
Amazing work, but it worries me that this is yet another indie game where the creator nearly tore himself apart trying to put it together. I'd love to know — is it really impossible to create a game with similar quality while maintaining a healthy five-day work week? I'd love to make a game as personal as this some day, but I don't know if I could sacrifice my health and social life for it.
On another note, this is an incredible achievement for someone who didn't know how to program getting into it. I'm a programmer and I know I'd have a lot of difficulty with some of these problems.
I've done alright keeping a regular work schedule with my own indie projects, but whether it's of "similar quality" is an exercise best left to the reader. I think it's possible to maintain work-life balance, but there's also just an undeniable element of risk involved.
I think the key question to ask is: Why do we do what we do? Once a person resolves that question himself/herself, then one can determine whether an endeavor is worth his/her time.
Hint: Wealth and fame only satisfy for a season. Autonomy, mastery, and purpose are forever.
You could do it without the sacrifice but remember that it took this guy 3.5 years working 7 days a week. At a leisurely pace it's probably going to take you significantly longer than that.
On a related note though, this was a passion project for him. Do what you do but if you're not willing to make some sacrifices for it you could probably find a significantly less stressful hobby to get into.
This sounds like exactly the sort of game I would want, hopefully it will come out on other platforms in the future. Given the steep memory requirements, I can only think of 2 other platforms it would work on though.
Thanks for the awesomely detailed postmortem, Dean. You're an inspiration!!
I’m happy to hear you have been able to apply your particular brand of assiduity to game development as well, and that your family life is still great. Thanks for sharing.
On another note, this is an incredible achievement for someone who didn't know how to program getting into it. I'm a programmer and I know I'd have a lot of difficulty with some of these problems.
Hint: Wealth and fame only satisfy for a season. Autonomy, mastery, and purpose are forever.
On a related note though, this was a passion project for him. Do what you do but if you're not willing to make some sacrifices for it you could probably find a significantly less stressful hobby to get into.