Martin Adamek

Independent Android Developer

Game Dev Diary: Competition and First Screenshot

In last few days I focused on abstraction of the game world codebase. I wanted to provide alternative game mode where cannon will not move under the flying target, but will always stand in the center and shoot from there. The point is that I would like to provide few alternative worlds that have not just different skin for the background and all the objects, but also movement method, targeting etc. That is done in some simple way, but more work will be done on this as requirements will change over time.

So there is nothing unexpected on the code level, but I experienced major WTF moment today on marketing side of the thing. Having a cup of coffee with my Android dev friend Jozef today, he asked me whether there is really no competition on the Market. I said there is not, because I did some searches in the past and I have never found anything. So he took his phone, searched for about 10 seconds and presented me with at least 3 direct competitors. I considered myself experienced searcher, but that is not the case anymore. I searched for ‘type to shoot’, ‘word shooter’ etc and he simply used ‘typing game’. Shit, what can I say. I am not worried about the competition that much, because I believe in execution rather than in original idea, but this kept me thinking what’s wrong with me, for a while.

So here is the first screenshot of the game, now that it is not secret anymore (did I just say I didn’t believe in original idea?):

As you can see, this is shooter where targets are words and shooting is performed by writing those words on the keyboard, one letter at a time. This is of course only graphics-free dev version (though I am considering also retro-look levels). Looking at the competitors, there is nothing close to what I want to achieve at the end, so let’s keep coding!

Game Dev Diary: Projections, Collisions and Tools

It is really hard to get back to the project that was paused just for a few weeks. I was busy with new major update of Apndroid so my game came out of my mind after I finished the prototype that I mentioned in my last post. I did almost nothing yesterday, basically just refreshing the codebase in my head, thinking what’s next.

Productivity

Today I have spent few hours coding and I am leaving off my computer exactly at the time when I was most excited to continue. This is one little advice from Woody Allen that I realized I was doing often. Together with the tip to work only for three to five hours, but every day, it sounds like a good idea. If you are interested in more tips, read the rest at TechCruch.

Projections

First problem I had to solve was the screen size and the projection. The game will run on many devices with different screen resolutions and aspect ratios. I never liked the idea of stretching content so I had decided that I will use all the screen size offered to me and world system units will be mapped 1:1 to screen pixels. That means that OrthographicCamera will cover the whole world with its viewport. There is one more reason for that - every shootable target in the game will have attached text to it and I have found that resized or stretched texts don’t look good. With pixel perfect projection it looks and moves nicely. To keep the same experience to players on all the different screens I will adjust the speed of targets, so they get to the shooter in the same amount of time.

Collisions

While I was adjusting the speed of shots, some of them simply didn’t destroy the target when the speed was higher. The problem was obvious - I was using bounding rectangle based collision detection and from certain speed the shot simply overshoot the target. One frame ot was before the target and on the next frame it was after. I fixed that quickly by simply comparing the distances from cannon to target and cannon to shot. This is quick dirty fix and I have to read more about how this should be solved properly, whether I should use box2d or something similar or whether it is overkill for this kind of game. There are so many areas of the game development I know nothing about, that it is quite scary sometimes. Throw your ideas on me!

Tools

I want to go quickly through the tools I used so far:

  • IntelliJ IDEA free Java/Android IDE that is fast and smart. You will never look back at the Eclipse.
  • Adobe Fireworks €299(ex VAT) graphics editor for bitmap and vector work that I use for all my work, from icons to promo graphics and now also game objects
  • Glyph Designer $29.99 font designer for Mac that just works
  • libGDX TexturePacker free texture packer that you can integrate to your project, set the source folder with bitmaps and it will produce the sprite sheet

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.