Postmortem: Things learned from making the game “Swift”
Gameplay featured in "Swift"
My first attempt at independent game development, Swift for Android and iOS, has been out for awhile, so I figured it was a good time to write up a postmortem on the subject. But before that, I should probably apologize for my extremely long absence. I launched Swift on the iTunes App Store a while back, and… disappeared from the web. For like almost two years. I’ll get into the reason behind that in a moment.

Building and releasing Swift was undoubtedly one of the biggest challenges I’ve ever tackled. Many things were learned, and much needed experience was gained. But sadly, the nerve racking lifestyle that ensued took its toll on me, both physically and mentally. So let’s start with the dreaded “what went wrong” list. This is a long one.

What went wrong

The things that went wrong with Swift’s development cycle were quite multifaceted, but ultimately came down to inexperience working without the conveniences of an overseeing publisher’s guidance and funding. Not knowing what a healthy work/life balance is didn’t help either.

Health problems

The most noticeable thing to go horribly wrong over the course of Swift’s development was my failing health during the second half of the project. I was working nearly non-stop, only breaking to eat, sleep, and shower. Since I had a roommate to go shopping for me, I never left my home office. I would literally not go outside for up to six months at a time. And let me tell you… that lifestyle will REALLY mess you up.

No physical activity

The lack of physical activity from working fourteen hours or more a day was especially draining. I tried a number of ways to remedy this: taking walks around the block, doing yoga for a few minutes everyday, using a standing desk so I wouldn’t be sitting so much, etc. Ultimately it was not enough to make an impact. I had chest pains, was extremely short of breath for no reason, and occasionally would have random seizures.  I would also get symptoms of motion sickness just from walking around outside. This was all very distracting while trying to actually get work done.

Isolation

The other problem I didn’t see coming was the effects of prolonged social isolation. Being an extreme introvert, I didn’t think being alone for over a year straight would be an issue. After spending so much time communicating strictly through text, remembering how to talk became difficult. When I did have to speak, my face muscles hurt since they weren’t used to the exercise. That was especially weird.

Social anxiety

With the above mentioned issues already in full swing, another recurring problem I’ve had to deal with for as long as I can remember came back to bite me: social anxiety. With everything going downhill, I had a very hard time talking (or typing) to anyone– even when it came to promoting to my own game. It was just so hard to build up the courage to do it, that quite frankly it just never happened.

Money problems

The whole reason I started my own business in the first place was because I got laid off from my previous job when our publisher was about to file for bankruptcy. I wanted something to do to keep my sanity while looking for new work. However, I had this sinking suspicion that I wasn’t going to land a new job anytime soon. Almost four years later, I now realize just how right I was about that.

I had repeatedly looked for a “day job” while trying to get Phanatix off the ground. But alas, the best I could find was part-time nearly minimum wage retail work and the occasional freelance gig. The only plus side was that I got to pick hours that worked around my game development schedule. And as of this writing, I’m still doing the part-time retail thing to stay afloat.

Looking back on it, I kind of wished that I had kept up a part-time job during the crunch at the end. I probably would have been healthier if I had gotten out of the house a few days a week.

Poor location

When I started working on Swift, I was still living near Chicago. Then I moved to Seattle, which was an AMAZING place to be working on an indie game. I had a lot of support from game developer friends and even random strangers who just liked new and unique games. But when my unemployment benefits were coming to an end, I needed to move somewhere that I could actually afford. Unfortunately, that meant moving in with my mother in the-middle-of-nowhere, Wisconsin. Much of my above mentioned lack of social activity problems stemmed from living in such an isolated rural environment.

Although moving home saved me a bunch of money, the resulting depression and isolation from residing in one of my most hated environments was maddening. I would have worked much more efficiently (and happily) if I had stayed in Seattle.

Lack of communication

Swift_Gameplay03
Another way that moving away from Seattle affected development was the communication meltdown between the two team members that happened afterwards. You would think that a tiny team of two people would not have communication issues, but we did. We focused too much on software and tools rather than good old fashioned face-to-face communication. Taking the time to discuss and reflect on objectives and requirements is just as important as keeping track of their deadlines. More often than not, this never happened.

As a result of this, the game’s ownership was heavily skewed in my direction toward the end of the project’s lifespan. With no regular feedback or collaboration between team members, I ended up doing most of the project myself just to get it done and over with.

Inadequate tools for the job

Another setback was my poor taste in game engines. Adobe Flash is a great tool for many purposes, but this was not one of them. Trying to develop a graphics heavy shooter game in Flash was the cause of numerous headaches.

Why pick Flash in the first place?

Swift_Gameplay02
At my last job, we used Flash to do our user interfaces for Nintendo DS games, so I was already familiar with it. I figured sticking to something I already knew would be a good start. All I had to do was change some export settings, and poof– I would have Android and iOS apps, right? As it turned out, it wasn’t quite that simple.

Poor performance

After a while I began to realize that Flash’s built-in features for handling movieclips on the stage was not very well optimized for mobile devices. The performance was abysmal, with frame rates plummeting well below ten frames per second as soon as there were more than two objects on the screen. It made the game virtually unplayable.

To cope with this, I had to handle the bitmaps manually through Actionscript. After scouring the web for a solution, I found some tutorials on bitmap blitting and caching for Flash sprites as an alternative to using movieclips. I also had to cut the sprite animations in half (and sometimes in half again) to fit them all in Flash’s limited memory. This did the trick, and I got my frame rates between twenty to thirty frames per second on most mobile devices. However, it took months of putzing around with this before I got it to work properly, which really put me behind schedule.

Not enough third party support

Another setback that I didn’t realize at the time was the lack of third party support for Flash. And by that I mean add-ons that could speed up development. I used a few native extensions where they were available, but it didn’t help much in the grand scheme of things. Compared to other game engines out there (like say, Unity 3d), I can’t just go out and buy the bulk of my game’s code and call it a day. Being on such a tight budget and schedule, I should have looked into what other game engines had to offer before committing to Flash for an entire mobile game.

Post launch problems

Despite all of the development difficulties, I managed to release Swift for Android and iOS platforms. But the problems didn’t stop at launch time, they just kept rolling.

Scheduling woes

Swift's restart screen in Japanese
The scheduling of features for the initial launch was flawed to say the least. Coming from a background where you only shipped a game once and then it was done forever, the idea of launching an unfinished game out in the open world with the intent of cleaning it up later was a very foreign idea indeed. But that’s how most games are done these days.

There were a few of the features in the game that I should have saved for later updates. For example, all of the language translations included in the game. These took a long time to assemble, from actually writing the translations to implementing their usage. Granted that my analytics tracking showed that these got heavy use, they were still a “nice to have” feature that could have been put off for a later version.

Website timing

Another area that needed improvement was the timing of the promotional website launch. It made sense at the time; I was about to move from Seattle to Wisconsin, and I wanted a website for my game so that my Seattle friends would have an easy way to follow my progress after I left. However, it became clear that I should have waited a bit closer to the game’s launch window before making a promotional website. It took a considerable amount of time away from the game’s core development to maintain the site.

Updates?

And another thing– updates to the game itself and updates to the accompanying websites that promote it– didn’t really ever happen. I would often procrastinate updating things in favor of working on Swift’s iOS port, and sometimes updates for anything would just fall off my radar entirely.

Marketing difficulties

Swift_Gameplay02
I had always been a fan of artsy indie games that challenged what kinds of art styles you can use in video games. Swift was a reflection of this, as the artwork was intended to be a fresh take on an old genre flooded with spaceships and aliens. Though I found out that marketing such a product was quite difficult. People had a hard time understanding what kind of game it was, since it didn’t have the one thing I was trying to avoid: spaceships and aliens.

I also found out how devastating it can be to name your game too early. I came up with the name “Swift” in February of 2011 when I first started working on it. I wanted something abstract and flowing, light and airy– like the style of the art that I wanted it to have. However, a number of other things out there shared the name “Swift,” including other apps in the marketplace. Whenever someone looked for the game, it was buried along with a few hundred other apps with the word “swift” in their names.

Where’s the other platforms?

I had mentioned in earlier articles that I had planned on releasing Swift on different platforms, including a PC version. That never really materialized. Mostly because I figured it wasn’t going to do anyone any favors. People who wanted to play the game already had it. And aftering porting the game to iOS, I was getting REALLY sick of porting Swift. Not to mention that each version needed maintenance after it hit the storefront. By the time I had the main mobile platforms covered, I was more interested in starting new projects. A PC version of Swift could still happen, but it’s very low on my priority list right now.

Pirates, yar

Map of Swift's players
As with pretty much every other game on the planet, piracy was rampant. Despite popular belief, digital rights management integration and code obfuscation don’t prevent piracy as much as you think it would. The paid Android version of the app was out for less than a week before pirates got ahold of it and started distributing it all over the place. Thanks to analytics tracking, I could see where in the world the game was being pirated. It’s apparently popular in China. Even as of this writing, Swift gets new pirates everyday. At first I was mad about it, but now I’m glad someone out there enjoys my work. And the analytics tracking gave me some good insight on what things players were doing on a larger scale. Though I would’ve liked to have gotten paid for all of my hard work.

Breakdown

Between the health problems, little to no income, conflicts among the team, the prolonged stress of trying to make Flash do what I wanted it to do, and living in a depressing location… I just broke down. I couldn’t do it anymore. I managed to launch Swift on its second platform a year after its Android debut, but by that time I was so exhausted that I couldn’t keep up the charade any longer. So I quit. Hence the long silence.

What went right

Now let’s change the subject to something more… uplifting. This is a much shorter list, but the things that went well, went REALLY well.

A learning experience

I learned A LOT. Seriously. Not just about game development and publishing, but also about what I am capable (and not so capable) of as a human being. The health problems I ran into proved my physical and mental limitations are greater than what I expected, and I need to pace myself from now on. I learned that I need to be very careful about who I trust, not just in who I choose to work with, but also when dealing with business advice from other professionals. And most importantly, I learned to never give up, no matter how many obstacles might stand in my way. I may have taken a year long hiatus to recover, but I came back refreshed and ready to go.

Organization

I may have done almost everything wrong, but at least I was organized about it! I meticulously maintained accurate schedules on Google Calendar so that I always knew what I was currently working on and what I would be doing next. Looking back on my calendar, I can see how long it took me to complete a given feature. This makes it easier to schedule similar tasks going forward, since I have a record of how long it took me to do something in a previous project.

Good ratings and reviews

Ratings
Despite Swift’s many troubles, the game did get good ratings and reviews from its players. It averages 4 out of 5 stars in the app stores, and it even hits that average on some of the pirating sites that I found. Even if not everyone is paying for the game, at least it’s generally liked by its players.

 

 

Did I mention I learned a lot?

The bottom line here is that I learned a ton about how to develop and publish a game under my own company license. It was a rough ride, but I’m ready to move on to bigger and better challenges in my next game. But that’s a story for another day.

Conclusion

This was kind of a brief overview of things. I plan to write up separate articles in more detail later on, but I think this should suffice for now. Stay tuned for a follow up article on what I’m what I’m doing differently now that I’m starting a new project.

 

Leave a Reply