It’s been a long time, and many things have changed. Of those things, I made my first Android game. I’ve been doing a lot of Android development for the mobile app support for my hardware product, Moxie, and this was a side project I took up on a whim. Yes, it was inspired by the classic game by XGen Studios, and I wanted to bring a richer experience to the mobile market. Fishy has a special place in my younger years, where flash gaming was bigger and less plagued by in-app purchases.
The game play follows the natural law: eat what’s smaller than you, avoid what can eat you. Since this was my first game, I went a long way in figuring out how game graphics work and how to make the illusion an natural environment. I learned a few things on the way, and I might make a few tutorials in the future to save anyone else with similar goals a few hours of time. But even though it felt like a long time, I finished the whole project in under a week (that’s not to say I’m not going to add a few improvements).
The game engine is rudimentary, but at least it was implemented from the ground up. A rendering thread attempts to update and draw on a canvas on the screen in increments of around 30 ms while the UI thread runs in the background, with sporadic calls to Java’s built in audio players and whatnot. The game world physics are interpolated in these 30 ms ticks and each object’s velocity and position are calculated. The user input is also handled during these ticks, creating the illusion of continuous movement even though time between frames might be a bit choppy. An object pool holds and spawns instances of each enemy type according to the desired difficulty and settings through an enemy factory, and these objects are created and killed in place to prevent memory leaks.
Add a few level mechanics and fish-growing behavior and you have the basic workings of my first game. I hope people like it. A full report on the game to come soon.