A New Project
The blogging's been a bit slow of late. And I've been looking for a new technical project to sink my teeth into. So I'm going to kill two birds with one stone, and blog about writing a new mobile game!
Working on Togolon was great fun, but terrible at promotion as I am, not many people got to see it. Besides which, waiting until the final release before putting anything out there made the whole thing something of an insular experience. I've been wanting to work on another game (after all, you learn by doing), but it's been hard to motivate myself.
I've also been wanting to write more technical posts, but it's been somewhat hit and miss, relying on me stumbling across an interesting concept or problem at work.
So for a more social development experience, bonus writing topics, and perhaps a little extra feedback, I'm going to write an open source mobile game. I'll blog the progress from the start, with all the code being available as soon as I get going on it. Then release it for free and get started on the next one!
The aim, first and foremost, is to get something together, and learn from it. So I'm going to keep it simple wherever I can. I'm also going to do a lot more in terms of planning. With Togolon I was somewhat feeling my way along, which left me unstuck a few times when I changed my mind about things.
So before I can do anything, I need to decide what kind of a game I'm going to make.
The Genre
In the interests of keeping it simple, I'm not going to try and be innovative or novel in terms of concept. I want to take something tried and tested and get on with it.
I've got some fond memories of toying with SEUCK when I was younger, so I'm a bit drawn to the idea of a Shoot'Em Up. Given the range of examples in this genre, it should be fairly straightforward to make something distinct (as opposed to say, a Tetris clone). To simplify things further, I'm specifically going to focus on the Scrolling Shooter sub-genre.
Decision: Scrolling shooter
The Platform
As for platform, my main options are iOS and Android. While I have experience with iOS, I'm far more comfortable with Java (as is used in Android apps). Android also provides more freedom in terms of side-loading of applications, so someone could build and try various versions of my app without having to pay for a development account.
I do, however, have all the equipment for iOS development already, and I have never actually used an Android device. So in the interests of getting going fast, I'm going to go with iOS.
Decision: iOS
The Process
As I said, it is my intention to blog absolutely all my progress with this project. I'll publish all my plans as I go, down to rough sketches on the back of beermats.
I'll set up a repository on GitHub, so every change will be out there for all to see. Might actually encourage me to write good code from the start. No corner cutting for me!
If I get stuck, I'll seek help. There are plenty of great communities out there, like Stack Overflow and iPhone Dev SDK. And I'll be sure to blog any problems I work through for other people who might run into them in future.
I'm currently of two minds about whether or not to conduct a beta. In the past it has been difficult to get enough detailed feedback from everyone. However, having a GitHub project might actually help garner more feedback on an ad hoc basis as people build the code themselves. So that's one area where I might wing it a little.
Finally, the completed game will be submitted to the App Store and released for free. Mainly so anyone who's interested can try out the game without having to build it and without needing a developer account.
Goals
To ship: First and foremost, the aim will be to ship something. To get through the development process in a reasonably short time and learn as much as I can for future projects.
Extensibility: As far as possible, the game will be designed with a view towards extensibility, modular code, resources, etc. So it would be easy to build new content (both before and after release). Also, it would allow someone to take my code from GitHub and build something completely new.
Clear vision: I aim to have a very good idea of what I'm going to create before I write a single line of code. The more I get planned out, the more smoothly development will progress.
Record keeping: The more I keep track of, the more I'm going to learn afterwards. Not only that, but the more likely it is that someone might find some of my experiences useful in their own projects. So I'll need to keep note of everything I do.
Accept feedback: This project is about learning and improving, so feedback is vital. Don't hold back, people!
What's Next?
The next step is research. I'm going to pick up some iOS shoot 'em ups and get a feel for how they fit together. Their control systems, level progression, menu structures, enemy varieties, etc.
So stay tuned for my next report!