Orbs for the BlackBerry PlayBook
Never one to miss the opportunity to blag free stuff, I was immediately intrigued when I heard about BlackBerry's free PlayBook offer and set about creating something quick smart. Seeing as the time between when I heard about the offer and the closing date of said offer was a total of 6 days, I was never going to pull a Final Fantasy, but at the same time I didn't want to just do a quick port of another game such as Wikileakers (which would need a new control system in any case).
I settled for the idea of colour sharing orbs, which I thought would be nice enough to play on a tablet while at the same time being relatively easy to implement in the given time. As it's by nature a simple puzzle game, once the mechanics were in there, I figured it'd be relatively easy to just add levels until I had something passable. I already had an engine, as well as a kick ass
Colour class (which I might post at a later date) that would make blending colours easy, plus by using the AS3 Game Object Editor, creating levels would be a cinch.
What went right
1: The idea
The total development time for Orbs was a full weekend plus about 3/4 hours a day for the next few days up until the offer deadline. Without a doubt, keeping a simple idea let me actually release the game. Once the mechanics were in there (essentially creating and destroying links and mixing colours), it was just a matter of fleshing out some simple levels. The game design won't win any Game of the Year awards, but that was never the intent. I chose a simple concept and kept the game tight so that it could be finished.
2: The tools
From the start, I used the AS3 Game Object Editor to help be create and layout levels. Using the wonderful trick of conditional compilation in Flash, I routed everything through a
Controls class that only got included whenever I was testing in debug. Switch to release and everything was removed (including God mode access to all the levels).
Controls class itself is a simple class that essentially holds a number of functions that let me: toggle the game editor; create new Orbs at will; save the level XML data; and set the final goal colour.
The Game Object Editor worked on the
Orb objects, and only in debug mode (unless you specify
-keep-as3-metadata+=Editable in your project settings, the metatags are stripped out in release, so the Editor doesn't do anything with the class). For the
Levels it was simply to set the gold and silver times. For the
Orbs, it let me quickly set the position, colour and whether the orb was a goal orb or not.
After that, to set the goal colour necessary to win the level, it was simply a matter of creating the links as normal (same logic as playing the game), then using the
Controls class to store the colour and save the XML.
3: The gains
Orbs was created specifically to get a free PlayBook (about $500) and as an added bonus, BlackBerry removed the developer fee, so that was also a saving of $200. That pretty much blows my MochiAds earnings for the year out of the water, so even though the app is free, it's still more than paid for the development of the game.
The experience of creating a game for something other than the web was also an added bonus. As a first app, it's not too bad. It's nice to know that my engine stands up nicely on the PlayBook (with some small modifications; namely adding a check for
ContextMenu.isSupported, as ContextMenu doesn't work outside of the web - there's no right-click - so it was just causing a black screen on my app), and to get some quick info on what works and what doesn't work speed wise.
For the most part, you're fine in terms of what you do, though the first release of Orbs suffered from some pretty horrible speed issues. Once I actually got my PlayBook and I was able to test the thing, what was causing the slowdown was pretty surprising. I thought it'd be the particles, as I'm using a
ColorTransform to get the trail effect instead of just clear the
Bitmap. Doing that on a 1024x600
Bitmap probably isn't a good idea - and it does have a performance hit, so I used a scaled 512x300 one instead - but it wasn't what was killing the app. The final culprit was the simple 3D rotating background that was in the original. I was rotating it slightly using the
rotationY properties just to give a bit of movement to the background. This destroyed the performance. Perhaps you can play with the window modes - though I'm not sure if the PlayBook supports
gpu, but I just removed it and low and behold: silky smooth performance.
What went wrong
1: The BlackBerry tools
When I first started the app, the BlackBerry toolset was on the 0.9.4 evolution. They've improved a lot since then, to the point where this is no longer much of a problem, but by Christ, did the original tools make me want to brick my computer.
Take the simulator for instance. As we had no PlayBooks to test our code on, devs making apps had to use the simulator to see how their app would run. Obviously a simulator it no substitute for the real thing, but the 0.9.4 version was such a pain in the ass (it's vastly improved in the 1.0.1 version, to the point where it's a simple install). Once you got the VM installed the idea was simple: run the PlayBook ISO and you're golden. Aha. Ha.
I don't know if anybody got this working first time, but personally I spent about 2 days trying to find the magical combination of CPU's, memory, time left waiting at the splashscreen, clothes to wear, and hats needed to get into the main screen. The documentation was useless here: it conveniently ignored what would happen if you got stuck (and seeing the number of people that had this problem, a trouble-shooting guide would have been great). Add to that the fact that nobody knew what the actual problem was (though I figure it simply had to do with if your machine was powerful enough), so the forums were full of possible solutions which might as well have been "close your eyes and wish really hard".
The very first version of my game was submitted without even testing it on the simulator because I could never get it to run.
2: The inital release
When Orbs first came out into the BlackBerry App World, I had maybe, 50 downloads. Due to the horrible, horrible speed that it ran at (and it was not a proud moment in my life when I saw the actual speed), I received a total of 2 reviews: one middling, basically saying it was a good idea but let down with the speed; the other absolutly slating it. As a result, it has a current rating of 2 stars; not great by any stretch of the imagination. Seeing as the average rating for an app was 4.5/5 stars (I'm a little skeptical about this. I'm thinking either developers/developers' friends rating the app, the app playing public really think that Tic Tac Toe is the pinacle of modern gaming, or my sense of what's a good game vs. the public's sense of what's a good game are in no way related - which is entirely possible), that 2 star review means Orbs is pretty much sunk. Why play a 2 star game, when there's already hundreds of 4/5 star games waiting?
After I got my PlayBook and saw the speed of the game, I spent a lot of time debating whether or not to actually fix it. Before stoning me with rightfully indignant curses (and stones), I'll be brutally honest here. Orbs was made to get a PlayBook, period. It arrived, job done. The current review pretty much means that it's never going to be popular (I don't think I've passed 100 downloads yet), so I thought why bother? Also, for the $200 developer fee, you get something like 10 releases, and an update to an app counts as a release. Why waste a release (or $20) updating a game that no-one will play?. What changed my mind is that BlackBerry lifted that limit (thanks!) and my conscience got the better of me. My auld boy always said if you're gonna do something do it right because at the end of the day, it's your name that's stuck to it.
Orbs is a puzzle game, so by definition, it should probably have some in there. Even though the tools that I'd created meant that it was pretty easy to add levels, I still had to actually come up with them. My brain is not a puzzle brain. It's not the kind of game that I'm super excited to play, so I had real trouble coming up with the basic 16 puzzles that the game ships with.
Also, during playtesting (thanks Alexis!) it became obvious that the game was not obvious. Originally, goal Orbs had their own colour, which would mix with the final colour to produce the goal colour needed. However, this made it quite hard to figure out what colour you actually needed. Also, originally, there was no indication of how close you were (the percentage ranking on the goal Orbs). As the colour sharing algorithm produced similar, but subtly different colours if you mixed Orb A into Orb B, than if you mixed Orb B into Orb A, you got to the point that it looked like you had the right colour, but you were ever so slightly off.
With a quick redesign of the colour sharing algorithm and some better feedback, this got fixed, but at the same time made the game incredibly easy. The first 8 puzzles at the time could be done by drawing links any which way; it didn't really matter as the end colour was the same. So additional rules were added and I tried to redesign the puzzles. Which I suck at doing. Especially when you're trying to design a difficulty curve.
The final results are what I could come up with in the time - and believe me when I say this stretched the puzzle making part of my brain about as far as it's ever going to go - but you can still find yourself in a situation where it's simply too hard to figure out the right order (not that there's only one), and you end up just randomly trying links until you stumble across the right one.
I'll also add that I don't think colour theory is something immediately obvious to people, or something that they're especially strong with. Perhaps one or two links but I don't think many people find it easy to figure out what the final colour will be from a mixture of three. Unless the answer is "mud". So, I finally added some hints on each level and tried to base the puzzles around making shapes with the links as much as finding the right colour.
As an exercise, Orbs more than paid for itself. I now have a shiny new PlayBook and I'm pretty much going to make my next game for it. The total gains for Orbs are around $700, which is not bad for a very simple game made in a few days.
It also gave me the opportunity to test some of the things that I've been sharing on the site over the last few months and I have to say, it wouldn't have went anywhere nearly as smoothly as it did without those things that I could just simple slot in as needed.
If you have a PlayBook, go download Orbs, it's free. Think about leaving a nice 5 star glowing review as well (perhaps mention how the speed it so amazing) :) If you don't have a PlayBook, then you can still play Orbs on the internet, so you can see what the hell I've been talking about.
I'll leave you with some screenshots of the game: