Martin Adamek

Independent Android Developer

Building 2D Shooter: Idea and Prototype

I have decided to build a 2D shooter game for the Android. I would like to track the progress here in my blog. Because the game development is something completely new to me, I definitely need to get the feedback on many parts of the process. I want to make money with this game and I am decided to post all the eventual sales/ads numbers. Let’s think about it as development diary. Either leading to profit or fail, I hope it will be useful to everybody, including me.

So I had an idea for the game. I have added it to my list of ideas on top position and couldn’t stop thinking about it. It is 2D shooter, something in style of Space Invaders. Of course there are too many games of this style, so why do I bother with new one?

  • it has different style of shooting and targets than the regular games
  • I didn’t find anything similar neither for the Android nor for the iOS
  • it is addictive (to me)
  • it has zero learning-curve
  • it can be fun to play even just for few minutes to kill some time
  • I am able to implement it myself

I don’t know what else has the game fulfill to be successful (execution, of course), but this was enough for me to try. For now, I am not going to reveal what is so different on shooting and targets, because I would like to keep it for me at least until beta version is ready.

Being absolute beginner in game development, I have built the first prototype based on Android demo project Lunar Lander. Only thing that the game was doing were flying targets and the cannon that was shooting at them. That was my first touch with things like game loop, collision detection etc. It was drawing on SurfaceView, with almost no graphics, using just simple geometrical shapes for cannon and targets. The game was running on 60fps, sometimes dropping to 30fps. It wasn’t that bad to look at, but wasn’t smooth as well.

At this point I started to look at available game engines. After small research on forums and mailing lists I have tried libGDX. It is more framework than engine and I have decided for it because it seems to have healthy documentation, development and community and it offered what I was going to need. At least what I think I need so far. It is using OpenGL so my prototype rewritten to libGDX is running fluently at 60fps (though I have some problems with smoothness of moving texts). This time I started my prototype by modifying Superjumper libGDX demo.

So here I am having some simple prototype and still many decisions to make, but I am going to work hard to move this thing further. Keep reading this blog and let’s discuss on Twitter or Google+.

Switching to Octopress

I have switched this blog from Wordpress to Octopress. Not that I am a frequent blogger with the need for better tool. I was just attracted by few of its ideas:

  • static site hosted on GitHub
  • I can write posts in Markdown
  • posts are stored in files without any database and magic metadata all around
  • and I like the default theme very much, too ;-)

I wanted to keep existing permalinks from old blog working. That was easier than I thought, because I had Wordpress configured with same style as the default Octopress links. But I am pretty sure it is configurable in Octopress anyway.

With some manual editing and some GitHub fighting I made it working quite quickly and I hope it will help me to write more frequently.

Always Take That Extra Step

I am going to publish quick update to Vibrate Keep Volume widget that will include updated icon and widget graphics. I wanted to have that app online so much (to keep it ‘one afternoon project’) that I handled the UI in a bad way. Today when I saw it, I almost wanted to cry. Fixed.

Vibrate Keep Volume

I’ve just published new application to the Android Market. It is simple widget called Vibrate Keep Volume that toggles vibration mode. Of course, there are many vibrate toggles over there, but I was missing one that would keep ringer volume untouched. All that I found and tried switched phone to the silent mode. That’s not what I wanted and so I’ve built it myself this afternoon.

It’s not big deal, but it’s live, you know ;-) And I can get back to APNdroid refactoring feeling so productive once again.

APNdroid Was Downloaded 2 Million Times Already

Today APNdroid reached crazy milestone of 2 million downloads from the Android Market. It’s amazing to see so many people install and use it all the time. There are more than 5,500 new installs every day. The crazy thing is that it keeps up with Android grow and APNdroid is installed on 1% of those 550.000 daily activated new Android phones!

So what’s next? New major release ia almost ready, you can install Beta right now. Few strings need to be translated to all the additional languages and that’s probably it. If somebody wants to help with the translation of those few words in his own language, contributions are welcomed!

APNdroid Pro version will follow soon, but this time there will be more than just removed ads as added value. Pro version will include native switch for disabling mobile data, integrated with the system settings. It works quickly and reliably and it finally should work also on CDMA phones. Because the troubleshooting is the most common support request, I will also add some diagnostics to the Pro version.

I hope that by providing some additional functionality I will be able to increase the conversion from the free to paid app, which is right now less than 1%. I will write some follow-up post on this topic once I will have same data.