Another gap in posting, but a productive one. In January I was investigating some cross platform Lua based frameworks (Moai and Gideros) but between a skiing holiday and recovering from injuries sustained while on a skiing holiday I didn’t get beyond a few proof of concepts. Both are worth a look, and I’ll probably return to them in the future, but my investigations were derailed by this post on the Inside Blackberry Developer’s Blog.
So, with PlayBook OS 2.0 comes (limited) Android support and RIM were offering PlayBooks to developers who submitted apps within a timeframe. Hard to resist really (and it’ll be interesting to see how this pays off). As I have no willpower I went ahead and signed up, hoping to easily repackage Flip! for the PlayBook. I ran into immediate problems as (among other things) native code in Android apps is not yet supported, but this provided me with an opportunity to pick up one of my other to-do list items and learn to use cocos2d-x along with relearning C++ so I could re-build Flip! using the BB Native SDK. I’ve now completed this and just had the app approved on the App World! I eagerly await my new shiny shiny and will tell all about it when it arrives.
I’ll get a post up this weekend about the process of signing up for PlayBook development and my first impressions.
When I was writing Flip! I started with grand schemes. I wanted to make the engine completely flexible so I could support all sorts of form factors, screen rotation, system power, etc. I also wanted to be able to define all sorts of characteristics of each level – changing backgrounds, sounds, colours, look & feel and so on.
As I wrote the app, I began to realise just how daft this was. For something being created with such limited visible complexity and for a very small target audience, I was spending far too much time adding in the potential for these features that wouldn’t be noticed unless one actually dug into the source code! I’ve always maintained that one of the best games in existence is still Tetris on the original GameBoy (you know, the green and black screen one). The gameplay (and of course the music) was spot on. It didn’t need massive complexity and it didn’t need startling visuals. It was then, and remains now, a complete win.
With games on Android there are still some things that are worth putting the extra effort into supporting. We all hear the claims of hardware fragmentation problems, and this hits home more than ever when designing a layout for different screen sizes and aspect ratios. For Flip! I took the approach of having the layout work itself out from the screen size by saying, for example, I want to make sure at least 4/5 of the screen is devoted to the game area itself and then working around that. I’ve tested on a few different devices that tend to fall into three main aspect ratios and it seems to work well as an approach.
I’ve kept the artwork fairly simple. I’m not an artist so don’t actually have anything to offer by adding all sorts of variable backgrounds. For the tiles I cut myself back to just a couple of different colour options (Black/White and Red/Blue) whereas originally I had wanted each level to define the RGB values of the two colours used. I don’t think this is a great loss to the game, but saved me a hell of a lot of effort.
All of these changes came as part of a (necessary) re-write and I’m much happier with the underlying code as a result. It’s cleaner and easier to maintain, while still leaving me very happy with the end result. I’ll be taking a lot of these lessons into the next app I write.
The moral of this post is this: don’t think that limiting your ambition is a bad thing. It’s very easy to be over-ambitious and this has the potential to leave you in a state where you’ll never actually finish anything! It’s a lesson I was taught many years ago by the chap supervising my thesis, and I have to apologise to him that it’s taken me this damn long to learn it!
Well, I’ve finally uploaded my first app to the Android Market. It’s called Flip! LITE and it’s a simple puzzle game of the sort you’ll see appearing in many other games over the years. The goal is to flip all tiles over to be the same colour in as few moves as possible. Hitting a tile will cause the tiles next to it to flip as well. The app was built using libgdx and what could be mustered from my free time. It’s probably not quite what I had pictured for the first release, but I’ve had to balance out time available vs getting something completed. I did want to have more puzzles in the first release, but these can come in an update soon enough when I have a chance to create them.
Anyhow, give it a go and let me know any feedback. I know it’s not original, and it’s nothing amazing, but that was never my goal with this first app. I’ve achieved what I wanted to do: I’ve gotten myself back into a bit of development, I’ve learned a lot about the Android platform and gotten something published. There’s only up from here
So what’s next? Well, I’ll be reporting on the progress of the app in the market on this blog. I’ll also be working on the next update (some new levels and some better graphic asset management). I wouldn’t expect a rapid turnaround on this release as the next few weeks are looking pretty busy for me even for the times I’m allowed to get away from work. I also have a few blog posts lined up to cover things I’ve learned throughout the development process and a couple of new app ideas to start on.
A couple of weeks ago I set myself a target of getting my first build out by the end of the month. Well, the month end is looming and I think I need to review that target. So what’s changed?
Well, first of all I’ve had a look at the name and changed it to just be “Flip!”. Homogeneity proper will come some other time, so Flip! will end up being the first app deployed to the Market. Speaking of such deployment, that isn’t going to happen by the end of the month. I just don’t have enough spare time at the moment to focus on app development and I don’t want to release something that’s utterly flawed. Limited is fine, as I’ve got no issues with pushing something out that’s going to need some polishing later. I intend to release the first version with some art assets that may be subject to future change, but the app must work and have the basic structure stable.
What I am getting done by the end of the month is the first set of alpha testing. The game works, and has content, so I’ve pushed it to my flatmate’s tablet and my phone to test it. This means I’ve already hit tablet support, so one goal checked off. I’ve also gotten score recording wrapped up (not really hard to do tbh) and the extensible game engine built. So, what’s left to go before I get a market release done? Other than fixing any bugs that are thrown up or taking on board any suggestions for refinements from my testing, I need to do the following.
- Generate some consistent artwork and make sure it’s not too big!
- Sort out performance issues on low end devices
- Implement Admob
- Implement Analytics
- A few UI tweaks
- Make sure the application lifecycle is correct
After the release I can do a bit of re-factoring before I add new features.