While a giant portion of the game developer crowd was in San Francisco for a week at GDC, I made a new game. As you might expect, it’s not a Mass Effect 3 type of effort…but it’s still a fun game and it’s out this Saturday on the iOS App Store. I love making games and I love a challenge, so the project was part out of pure love of the “sport.” A big part of the drive for making this game was that I’ve always wanted to do a lightning-fast project. I’ve called this “rapid development.” Others have called it “rabid development.” You decide.
Invasion Strike is a top-down 2.5D space/sci-fi shooter. You pilot a super-advanced space ship that handles everything for you except for steering left and right. You can grab power ups for 5 different weapon types and shields. There are 8 different types of enemies each with their own specific logic. Controls are super simple – just tilt left & right while your ship is set on auto-fire. Blow up all the enemies you can before they kill you. It supports iCade & iControlPad Bluetooth controllers, iCloud syncing of high scores, and Game Center leaderboards.
Truth be told, the title of this post is a little misleading. I didn’t make Invasion Strike in a weekend. I did, however, make it in just under 30 hours of work. The bulk of the game was done in the first 20 hours. The last 10 were spent polishing, making a sound FX pack for the game (that I plan on selling on the Unity Asset Store), and recording background music. My schedule with two newborn twins doesn’t really jive with sitting in front of the computer for multiple days without any breaks. I did prove to myself, however, that it’s definitely possible to kick a good looking game out the door in a (long) weekend’s worth of work. Before the twins arrived, it was fairly common for me to get in about 24 hours work over a weekend. That’s 4 more hours than it took to get the polishing stage – easy!
To make a game happen over a weekend, you have to streamline quite a few things. For me, I relied on my background experience, lots of powerful tools, and a laser-focused scope.
I don’t want to turn this into a resume or brag session, but here I go anyway. Sorry.
I’ve been programming for about 30 years. There’s no way that didn’t help. I built Invasion Strike using the Unity 3D Game Engine. I’ve been using Unity for about a year. During that time, I’ve made two “real” games, Smoking Hot (still getting polished) and Rush City (out now for iOS!). I’ve also made about 15 game prototypes using Unity. When using Unity, I pretty much don’t have to reference the documentation to pound out code. All that helps. Lots. Don’t get discouraged (yet).
The tools I used to make Invasion Strike were a giant help in the project’s success. Getting the right things in your tool belt will save tons of time. Many of these tools are available for $20-$30. For me, it’s a no-brainer to plop down $30 for a purpose-built tool that makes a specific task in my game development much easier, faster, and more polished. If you’re ever spending time trying to decide to buy a tool, the answer is almost always “yes.” I ask around on Twitter what people use for different things. Whatever your favorite way to get outside steering, some recommendations from those who’ve gone before (and spent tons of time learning the hard way) are golden.
If you add up the cost of all these tools, it’s not a trivial amount of money. This post is about maximizing use of your time though. Time is money, right? It was worth it for me to own all of these tools for all the future projects I’ll use them on.
Moleskine and a white board
Before I start writing code, I always brainstorm ideas and draft out what a project will be. That’s not to say that I don’t figure things out or change things as a project evolves, but spending an hour or so to build a solid starting point will save loads of time later into the project.
I’m a big fan of Moleskine notebooks. I’m also a big fan of white boards. I almost always have my 5″x8″ Moleskine notebook with me. I actually prefer a notebook to a white board – blasphemy, I know. For me, it lets me look back over the life of a project and cross reference problems I solved on other projects. I’ve also found that by having that little notebook with me, I can sneak in 30 minutes of work while I’m waiting to get my oil changed or other down time.
I do enjoy a good white board, but I usually use them for big picture brainstorming or sketching out a specific idea. If I’m working with a team on something, throwing ideas on a white board can be extremely valuable and productive. There are limits to everything though.
Like I mentioned before, I built Invasion Strike in Unity. It’s really an amazing game engine. I find that Unity lets me concentrate on making games instead of worrying about the background tech that enables those games. It’s not without cost though. The first cost hit is the actual monetary cost. If you want the full Pro version of Unity with the iPhone add on, you’re staring $3,000 in the face. Some developers are required to buy the Pro version because of their income stream (that’s a condition in the license agreement). Some developers want the Pro version for the extra features (like smaller & faster executable size, better texture control, custom splash screens, etc.). The vast majority of developers, however, can use the basic version of Unity – especially if you’re just taking it for a test drive.
For learning Unity, their tutorials helped a lot. The Tornado Twin’s YouTube channel has some great video tutorials. The Scripting Reference in the Unity Help menu is awesome.
One of the great things about Unity is how easily extendable it is. There are quite a few people who have built successful businesses around add ons for Unity. If you find good ones, these add ons can shed days (or even months) worth of work for very little cost. For Invasion Strike, these are the Unity add ons I used:
- Prime31 – iCloud, iCade, Game Center. Prime31’s plugins concentrate on interfacing Unity with the specific device/computer you’re targeting. They cut TONS of time off development. They’re all fairly cheap. Get every one that involves a device-specific system that you’re using.
- AnBSoft EZ GUI & Sprite Manager 2. EZ GUI is a great tool for menus, buttons, and GUI things that (may or may not) slide around the screen. It can also let the user interact with menus – like moving the entire menu around the screen. You can use it to create in-game 3d buttons or switches like a handle that operates a door. If you create a bunch of GUI elements, it will create a texture atlas automatically for you. It’s much nicer than Unity’s GUI system. There are others like it, but I’ve only tried EZ GUI. Works like a champ. Sprite Manager 2 lets you do things like having animated sprites. I use them for the pre-rendered explosions in Invasion Strike. Creating the explosions involved dragging the animated explosion files into a “PackedSprite” GameObject and hitting go. Neither of these plugins are cheap, but I can’t imagine getting through Invasion Strike in 30 hours without them (or getting through Rush City in 350 hours, for that matter).
As a 3D modeller, I’m an amateur at best. There are lots of places online where you can buy pre-made 3d low-poly models that will work great with Unity. The down side the using pre-made models instead of custom models is that someone else might have the same stuff in their game. One easy way to cut down on people noticing is to create custom textures for your game. Some models are free and others (such as animated characters) cost several hundred dollars. The total cost for the models in Invasion Strike was under $400. The Unity Asset Store is a great place to start your search for 3d models & Unity-specific plugins (just hit Cmd 9 while in Unity).
One way to make sure those pre-made 3d models stand out from their “stock” appearances is to do some simple modelling tweaks. For example, the player ship I chose for Invasion Strike looked nice, but on the small screen it just wasn’t beefy enough. The body of the ship was pretty thin, so I wanted to tweak it. That’s where Cheetah3d came in. Cheetah3d is an easy to use 3d editor. The work I wanted to do on the models was simple. Cheetah is way more powerful than anything I use it for – it can do 3d modelling stuff, including UV wrapping, skeletons, textures, animations, and more. For the tweaks in the models I did, I just grabbed some vertices and pulled them to make the core of the model bigger. That simple tweak gave the models a different look and took almost no time. Cheetah3d’s on sale for $99 right now.
I gushed on Twitter about this about a month ago. TimelineFX lets you create pre-rendered animated particle effects and output them to either an atlas or individual files. If you’ve edited any type of particle effects before, it’s pretty easy to adjust their pre-made examples to exactly what you’re looking for. Sprite Manager 2 can easily turn these into awesome looking effects for your game. With the current exchange rate, TimelineFX costs about $47.
One thing to consider when going this route, however, is that the pre-rendered particle effects you’d generate with a tool like TimelineFX are 2d sprites. In many cases – even in full 3d games – 2d sprites will work fine if you just turn the sprite to face the camera (or pretty close to the camera). But, you need to consider the overall design of your game.
Creating pre-rendered fancy fonts can be a painful process. Glyph Designer is the best text creation tool I’ve found. You can use any font that’s in your system (check the font’s license though), add outlines, gradients, and shadows. It’s easy to adjust padding and output to an atlas. It’s perfect. It’s only $30. Get it.
Filter Forge is a very powerful tool for making textures that work great in 3d games. It works as either a standalone program or as a Photoshop filter. I prefer to use it as the standalone version, but it works great either way. I used Filter Forge for the seamless tiling space background in Invasion Strike. That background took about 5 minutes to make and I think it looks great. Filter Forge always seems to be on some sort of sale (“ending soon!”). I think I bought the pro version for something like 40 or 50% off a while back. If it’s not on sale now, chances are it will be soon.
There are lots of photo editing alternatives out there and everyone knows that Photoshop isn’t cheap. If you work with an artist though, that artist is going to send you a file that Photoshop can read. If you’re braving it alone, it’s an outstanding tool that’ll likely meet all your graphic needs. One of the coolest features of Photoshop Extended is the ability to paint textures directly on a 3d model. It works great if you want to repaint models for use in Unity. If you’re extra brave (and have a fat wallet), adding Illustrator to the mix will fill any image creation or editing whim you have. Adobe’s “Suites” are worth looking at if you need more than one or two of their tools.
Korg M50, Logic Pro & M-Audio MobilePre
The sound effects and music in Invasion Strike were created on my Korg M50 Synth/Workstation. I recorded them onto my MacBook Air using Logic Pro software interfaced through an M-Audio MobilePre USB audio interface. To save money, all of the sound effects could have been created using the built in synths in Logic Pro. For me, using the M50 was much quicker though. The MobilePre does a great job of recording audio & interfacing the keyboard with Logic Pro.
The music would have been much slower to create using Logic Pro (for me). It’s definitely a powerful program – I just haven’t learned it that well yet. If you don’t want or need the extra power of something like an M50, you can do everything with a simple MIDI keyboard interfaced with Logic Pro. Something like the Korg microKey would work great – and you can even connect it to your iPad using something like the Korg iMS-20 synth app.
For the music in Invasion Strike, I used a spacey lead synth sound and one of the built-in drum tracks. I used a popular pop music chord progression and played around for about an hour to create the 3 minute track. For now, one track is enough – I can always add more later.
Your old code
If you build all your code so that it’s (fairly) transferable between projects, you can save yourself a bunch of time by reusing it. Even if you can’t reuse your old code, you may have written something that’s close to what you’re trying to do. Scan that old code (you did comment it well, right?) and see what your old self figured out.
To get something out the door in rapid/rabid fashion, you have to limit the size of the project. Like I mentioned before, there’s no way to make something like Mass Effect 3 (or Descent 3!) in a weekend. The mobile space is a great place for small casual games. It’s worth noting, however, that throwing junk up for sale won’t earn you any revenue or brand loyalty. Make sure your game is fun. It should be something that you’d want to play.
Remember that Moleskine notebook & white board I talked about earlier? Those are my main tools for brainstorming and recording the scope of the project. For Invasion Strike, I decided that 5 weapon types (all variations of the same bullet) and shields were enough for power ups. I also drew the line at 8 enemy types. Extra features like iCade were chosen carefully for value added with time carefully considered. I chose to not make Invasion Strike a universal app, but coded it such that it’d be easy to change that in a future update.
So, I decided what I wanted Invasion Strike to be and wrote down a description of each feature. I organized things in importance order and started marching down the list one thing at a time. Setting those goals is a great way to keep on track and keep focused while you’re developing your new game.
OK. This was an overview of how I made Invasion Strike in 30 hours. Brainstorm on the tools and ideas here. Then, set off on your own rapid development project. Make it good enough that you’d want it as an app listed alongside your other apps. Make it simple enough that you can finish it in whatever time frame you set as your goal. Make decisions during the development to keep your project on track. Do you really need all 482 of those Game Center achievements? Probably not.
Figure out what works for you. Take a look at what takes the most time. What’s the least productive thing you do? What are the areas where you could shave hours/days/months off your development time if you had an extra tool to help you? Do you really need to have Twitter and Facebook open all day? Also figure out what works really well for you. Why does that work well? Can you apply some of your techniques in that area to other parts of your development cycle? Optimize your workflow.
That’s it. If you have a rapid project of your own or anything else to share, post a link in the comments. Go make great games!Download: $0.99
Awesome post! I *really* wish I had more time to learn Unity! Good luck with the launch – let me know if you’d like me to add Invasion Strike banners to our apps to help promo!
Thanks! It’d be great if you’d show some banners. I’ll make some!
Great post. I’m checking out TimelineFX now, because I’m right there with every other tool you mention 🙂 except the audio stuff :-(…. OK I have a ways to go yet then!
Excellent post. Thanks for the tips!
Nice article, thanks for sharing. I can take away a lot from this…
I just downloaded Invasion Strike and it doesn’t work at all. As soon as I touch it on my Ipad it shuts down. Any suggestions? KAS848
That’s really strange. I’m sorry it’s not working right for you. The first thing I recommend is rebooting your iPad. To do that, hold down the power button on the top of the iPad for a few seconds. A slider will pop up on screen that lets you shut down the power. After it shuts down, just press the power button again to turn it back on.
If that doesn’t work, try deleting and redownloading the game. To delete it, press & hold the icon. Once the little X shows up, tap that to delete the game. Go back to the App Store and redownload the game (you won’t get charged again).
If these don’t work, please let me know. We’ll get Invasion Strike working for you! You can either reply here or email email@example.com (I’ll probably see the email quicker, if that helps).