The life of an Android indie developer is interesting. Running things pretty much on your own without a big studio to back you up can both be liberating and frustrating. Liberating in the sense that you can work on whatever suits your fancy. Frustrating because you don't have the resources ($$$) to spend on game/app assets or advertise to get the kind of exposure you think your apps deserve. Still, it can be a lot of fun and you can learn a lot while doing it.
As an indie developer, I've developed several apps as I've learned the ins and outs of Android game & app development. I've become a small businessman, founding the one-person company Gushiku Studios. I'm the lead programmer for all my apps, obviously. I'm the sound engineer - mixing and creating news sounds as well as integrating existing ones from predefined sound sets. I'm the web master for the Gushiku Studios web site (man, I hate working with Drupal.... I miss the days of simple HTML editing!!!) I'm the head of the PR and marketing department -- setting up Admob ads and contacting online web sites to solicit interviews. I'm the lead art director. Alright, that isn't saying much since my artistic talents are pretty meager -- but I've done about 95% of the content seen in all the apps I've done to date... and it SHOWS! :) This more or less goes back to the frustration of the limited funding for getting nice art assets.
To date, I've developed the following apps:
- DB42, a robot puzzle game inspired by the Portal series
- Doodle Bug, a etch-a-sketch / painting app. Doubles as a sketch pad that is great for Khan Academy style learning.
- MatchCard, a casual card matching game that can be quite addictive
- Pyromancer's Laboratory, a fun little fireworks style creation game that is a thinly disguised particle editor
- Slide Rule, an app that hearkens back to older days before the advent of calculators. It's a great way to earn geek cred!
- Sky Ninja, another casual little game that has you moving a ninja around, dodging meanies.
- Drawccupations, a little time waster that was inspired by Pictionary Man, where you have to draw different occupations on a white stick figure.
All of the apps above were created by a single person (me) having fun programming outside of his day job... with the hopes of striking it big like, oh, I don't know...maybe... Angry Birds? I'm still a long ways away from there, but success does not come without perseverance.
Anyhow, what all have I learned from this journey so far? Well, let's see:
- Java Programming. I'm an embedded C developer, so working with Java has been interesting. I've expanded the scope of my knowledge in terms of OOP practices. This has been really cool.
- Android Programming. I've learned the ins and outs of programming on the Android platform. I've also had the pain of dealing with the fragmentation and problems it involves.
- libgdx/game development. It's been a lot of fun messing around with libgdx and watching it grow into a really capable and powerful library.
- Box2d. What can I say about everyone's favorite 2D rigid-body physics simulation? It brings out the physics / math nerd in me. It would have been fun to have this around when I was taking college Physics.
- Ad marketing. Not as fun as some of the other items, but it's been interesting to see what all is involved with putting your apps in the public eye. It's also been a learning experience seeing how the advertising biz operates.
- Entity Systems. This is a new programming paradigm that I'm learning and really enjoying. Sky Ninja was my first foray into an Entity System approach, using Artemis, and it's worked out really well. It's simply AMAZING how easy it is to drop in new stuff to your design without having to refactor everything to get it to fit "correctly". I'd like to remake DB42 using this sometime down the road.
- Tweening. I knew a little about tweening and using the Universal Tween Engine has expanded on that. It's extremely cool what you can do with a little interpolation and easing algorithms.
Great, so what's yet to come?
- Entity Systems. More work with the Entity System approach and pushing Artemis to the limit. I've got a game in the works that will heavily utilize this.
- Collaboration. I'm currently collaborating on my next game with a couple of friends from work. Having a larger team should hopefully provide some advantages of getting more stuff done and bringing in new ideas.
- Kickstarter. I'd like to see where I might be able to leverage resources from Kickstarter supporters. I'm not sure what kind of incentives I can offer, but it something I'm interested in exploring
- AI. My games so far have not really contained any enemy artificial intelligence. That is something I'm extremely interested in learning, and have already taken my first steps in this direction with my next game.
- Multiplayer. There's a Java library maintained (created?) by one of the libgdx guys (Hi Nate!) that I want to look into named Kryonet. This will be extremely challenging to use in an action game -- syncing up your physics simulations across different devices does not appear to be a trivial task.
- Blogging. I've been reading Effective Programming:More Than Writing Good Code by Jeff Atwood. In it, he recommends if you want to work on your writing chops you need to, well, write. I've had a couple of blog entries posted about Stupid Admob tricks. This entry itself is another stab at polishing my writing skills.
Stay tuned!
--tim
See ALL of Gushiku Studios releases on Google Play, Slide Me and the Amazon App Store!