Triphids is a retro-style arcade shoot-em-up game for the iPhone platform. Originally envisioned as a complete in-joke to those who enjoy the genre, it features several gameplay, user-interface, and audio references to games of the 80’s and 90’s. The gameplay was influenced by games such as Gyruss, Tempest, and Crazy Comets. By its very design, a game of this nature has limited appeal due to its target audience: mostly those who either enjoy retro arcade games or arcade-style shmups. Some of the main things that set it apart from other throwback games are the tight controls, the soundtrack, and an on-line global high score list.
Triphids was largely developed by myself over the course of a few months. The music was produced by an artist known as AliceEffekt. Before Triphids, I’d worked with the iPhone SDK on educational software. Before the iPhone SDK stuff, I had game development experience: mostly GBA homebrew and a Half-Life/Half-Life Two modification. Since I worked mostly alone, I can’t say much about team dynamics. I used an iterative approach to development, whereby I would get something quite basic working, and then build it into the full game.
To create the retro world of Triphids, I used the iPhone SDK which includes XCode, the defacto IDE for the Mac platform, InterfaceBuilder, with which the UI was designed, and the online iTunes Connect/Apple Developer Connection site. I used GimpShop for the graphic work, and an old license of Cool Edit Pro (which is now Adobe Audition, I believe) for the sound work. The engine was written entirely in Objective-C and used the OpenGL-ES APIs. The online high-score system (as was the entire project website) was written in PHP with MySQL as the backend.
What went right:
- We really nailed the nostalgia aspect of our target audience. Of the independent reviews Triphids recieved, we were constantly lauded for “doing it right”. I attribute this to the early and often testing approach that we took: As soon as we had a playable prototype, I gathered a group of people with iPhones for testing. Some of them were from the SHMUP community, some of them were from the Indy Game Developer community, some from the console homebrew community, and some from the iPhone development community. This diverse mix allowed us to hone in on what people liked, and what people didn’t like. Many times, something would get a pass from the homebrew and indy dev communities, only to be nailed by the iPhone developers. Issues of difficulty were a particular point of contention, which in the final product seem to have been worked out.
- The high score system performed flawlessly from day one. The list on the website is linked to the display on the device, and is updated in real time. I had the foresight to implement a censorship algorithm, which wasn’t a problem until much later, but still nice that there weren’t any nightmares where the high score boards were full of curses or vulgarity. In addition to passing the various game and device info, the name and high score, I also pass a checksum which consists of the above and a salt. This protects against hacking the online score system, and ensures the integrity of the information being passed along. The server has always responded quickly, and the high scores provide a good metric of actual usage (and piracy).
- For a first project, the retro graphics and sound really provided a good canvas. Due to the simplistic aesthetic approach, more effort and focus was placed on making the game enjoyable. Because of this design decision early on, and the iterative nature of the development, graphics and sound could be tacked on at any point with very little effort.
- The actual main rendering thread of Triphids bears little resemblance to the project that it grew from, an unnamed school project which had a ship, some shots, and some enemies. The projection around the circle was the same, but all the entities in the school project were in 3d. However different in appearance, the two do very much the same thing. Because of the way that Triphids grew from this earlier project, a lot of thought was able to be put into the way that the game loop, input, objects, and the state machine were designed. Late in the game some new enemy behaviors were needed, and due to flexible design, were quick to be implemented and tested.
- The music and sound effects really worked well with the gameplay. After a few internal prototypes, it became rapidly apparent that while engaging and fun, the game’s soundscape of bleeps and booms quickly grew repetitive and boring. Fortunately, since our target platform is the iPhone, users can bring their own soundtracks into the fray, but I wanted to do something special. I got in touch with AliceEffeckt, and he designed a wonderful chippy-synth soundtrack which really compliments the overall experience quite nicely. Of course, users can still listen to their own music.
What Went Horribly, Horribly Wrong:
- We released too late. The original goal was to have the game out on the store by Christmas. The game was actually done on time, but we hadn’t gotten the requisite paperwork done with Apple in time, and, after a few app-store rejections for some trivial things (not showing a progress bar, and some audio stuff), our original date slid to January 20th. I believe we lost a lot of sales because of this, and due to the fact that the App Store is like a fire-hose of new content, the longer you wait the more people there are to compete with.
- Even just rendering quads (sprites) and points (stars, shots), the PowerVR 3d hardware behind the OpenGL-ES interface wasn’t as quick as we’d hoped for. Stuff like transparent, particle-based explosions and more detailed shots had to be sidelined. To keep framerates up, we limited the number of explosions on screen, and tried to prevent circumstances where too many enemies were on screen at once. There were still some trouble spots, namely during boss fights, where the slowdown would get to be too much, so there’s a check at the bottom of the rendering code which essentially says “If the game is running too slowly, start jettisoning effects (explosions, stars) until it runs fast again”. The kludge works, but it’s ugly, and I wish it didn’t have to be there.
- After we were rejected from the app store for an issue where if a user was playing music on their iPod, and launched our game, their music would mute instead of ours, I got frustrated. I completely overhauled how the sound system works, and threw a new build at the app store approval process. This was a big, big, big mistake — I didn’t take enough time to thoroughly test my last-minute changes, and as a result, all sorts of bad things happened: Either sound effects would play, and music wouldn’t, or sound effects would play over each other, or no music or sound would play at all. After fixing all the problems, and testing them, it took another three days for the patched version to get to the App Store. Thankfully, no one gave us bad reviews for sound related bugs (or, so far, anything — they’ve all been good *gasp*), but it was still egg on my face and something I’ll never do again.
- We went about marketing Triphids in completely the wrong way. When we started work on Triphids, there still weren’t a lot of apps in the store, and new apps were prominently featured at the top of the store each day. We figured that once people saw our game, they’d love it (true so far) so we wouldn’t have to do any extra work (totally wrong). By the time we realized we weren’t going to get that top-of-the-store placement, it was too late to do any real marketing. $350 worth of Facebook advertising later, and after only 20 sales, we had to rethink our strategy. We started giving out promo codes to review websites, but it was too late to make any significant dent in sales.
- Piracy. I wouldn’t blame this on us, the developers, but this is still something that went horribly wrong. Within a day of our app store release, there was a pirated version available. Because of the high score list, I have a pretty good idea of the number of unique devices that have submitted scores. I also have a pretty good idea of how many people had purchased the game. From the beginning, these numbers weren’t lining up exactly. I took some proactive action, got the file sharing places hosting Triphids to pull it, got the advertising and paypal accounts pulled for the warez forums, etc. All seemed to be okay, and piracy was well under the 5% mark. About a week after I pushed the patch that fixed sound (and posting blank names to the high score list), I noticed some oddly high amounts of activity on the high score list. Especially odd was the fact that these new devices were exhibiting bugs (blank names) from the older version. Apparently, the original release had somehow found its way onto a popular pirate site, and people were downloading it in droves. To make matters worse, they were downloading the buggy version. I tried to convince a moderator of the popular pirate site to take down my link, but he firmly said that “wei(sic) don’t do that”. I managed to get him to crack the newer version of my app and replace the old one with the patched one. I again sent DMCA notices and attempted to get Paypal and Advertising accounts revoked, but I think at this point the cat is out of the bag.
What really angers me about the piracy is that the pirates claim they are doing it to “fix the app store”. They claim that the App Store is somehow broken (arguable) and that the solution for this is to allow people to get the applications for free. Apparently, too many people were buying crappy apps, and now no-one is buying anything. Strange, then, that I still had steady sales… Also, they claim that the cost of trying out a new application is too high, that it’s a financial hardship to buy applications. Tough cheese. This argument may have had some validity when applied to big software houses like Microsoft or Adobe, or even $50 for a PS2 game, but we’re talking about apps that cost $1 or $2. If you can’t afford to spend $1 or $2 to see if an application is worth anything, then don’t. You are hurting me directly, and taking food off of my table. There is no way to justify your piracy, sorry.
I learned a lot about the whole development process, from concept to consummation, and I think that as a whole Triphids did fairly well. We didn’t make enough to get a check from Apple yet, but we did make enough to pay for the cost of entry (the iPhone SDK is $99). The App Store model really has made me think twice about making another game for it. There seems to be a drive towards $0.99, which is fine for a small game like Triphids, but you can be sure I’m not planning anything more complex for the future. The risk/reward ratio just isn’t there. However, it was really the piracy really made me second- and even third- guess my motivation to work on this platform. We’ll see how things turn out in the future. For the benefit of other developers, I’ve posted some sales figures for Triphids, for the first three weeks, below. If you’d like full details, please send me an email.