Back to the blog…mobile tales

It is has been quite some time since I last sat down to blog about what has been going on around 8bitrocket Towers.  I have been busy the last six months scraping together a decent set of recurring clients for my freelance game coding business while I work on a few side projects in the area mobile / publishing arena.  The game coding business is what it is. I am always looking for interesting game / entertainment work and have completed quite a number of small and medium sized client projects over the last few months.  This arena is filled with competition though and I have encountered the average per hour wage I can charge going down rapidly as more and more companies move their budgets from web-based to mobile-based games.  This isn’t to say that there is not a large market still for Flash adver-games, but what was a huge booming, lucrative market has shrunk and the sheer number of professional developers has ballooned as more and more indie developers try their hand at commercial and adver-games.  To that end I have had to take on a few non-game related projects that certainly are not exciting (in the least), but fill the gaps adequately.

One project that has taken more time than I hope it would is the HTML5 Canvas book. When Steve and I set out to write our Flash Game book, we did it with 4 years of tutorial writing and 10 years of game development experience on the platform. While the result was not 100% what we wanted, it did cover all the topics we set out to cover (and then some). Along the way we learned a lot about the process, the book industry, and how difficult it really is to put out an ambitious project given the a severely limited time frame.  Although we like our final product, we felt that it needed some improvement in many areas, and a refined, limited scope would have helped us reign in some of the rougher patches. So, when we started the Canvas book, we decided to keep the scope tight and not let it sprawl out of control before having to reign it in like the herd of cats it could become.

The first problem/opportunity cropped up when we started to research the Canvas spec and found that its implementation varied widely across most browsers.   This actually turned into a plus because we were able to limit the scope to cover in depth the pieces that had been implemented widely. Once we realized that the limited scope would help us in the long run we found that neither of us had done much in the way of Javascript programming in a few years. It didn’t take long to refresh ourselves on the language, but when I started to write the game development chapters for the book I had to re-engineer all of the AS3 style game algorithms into Javascript as I had no existing library of code to use. This meant creating a state machine, a step timer, sound manager, particle engine, and pooling capabilities from scratch before any coding or chapter writing could begin.

I actually started writing in the middle of the book first – chapter 8  (unlike the Flash Book where I started at chapter 2 while Steve did chapter 1). Chapter 8 builds a simple Asteroids style game using nothing but the Canvas Path drawing capabilities, a very simplified state machine and a bounding collision detection routine.

I used this chapter to learn the basics of the Canvas drawing and transformation capabilities before going back to tackle full chapters on the drawing surface (chapter 2)  and bitmap image manipulation (chapter 4) API respectively. Once I had those skills under my belt, I started the advanced game chapter (9) and built a new version of the Asteroids game but this time I built with tile sheets, a re-engineered step timer, particle engine, and pooling systems. I combined this with Steve’s sound manager code from an earlier chapter (I forget the number, but I think it is 7) to create a full color bitmap  game with sounds.

This chapter also introduces some simple tile-based game concepts while building a Daleks style game.

My final chapter was to tackle transforming an HTML5 Canvas game into an iOS application using PhoneGap. I first tried to use the Asteroids game, but it ran too slow and the controls had to be mapped to on-screen HTML buttons that didn’t fire off the same as I thought the they would. I then settled on doing a version of Bullshit Bingo because it was closer to the type of applications that should be created using the Canvas (for mobile) given the limitations of the platform (processor speed being the number one).

When this final chapter was complete I decided to keep going with mobile applications and try my hand at some Objective-C.  I didn’t get too far as all the examples and books I have start simple and then jump into the interface builder application. I find the interface builder a little like a combination of Visual Basic and Object Vision (old OOP front-end client server app builder form the early 1990’s). Needless to say, this was NOT a combination to my liking. I soldiered on and purchased a couple books on Objective-C and games, but didn’t get very far into them before I switched to the iPhone CS5 packager and became seriously underwhelmed by its very very very lackluster performance.   Disappointed and almost ready to give up and dive back into Objective-C, I accidentally stumbled on something called Cornoa.

Corona (by AnscaMobile) is a framework for building iOS and Android applications that uses Lua script as a wrapper for native iOS calls. At first I figured that it would not prove any better than the PhoneGap Canvas or Flash CS5 packagers. When I created my first app though, I was blown away by the performance. While obviously not anywhere as powerful as the desktop browser version of Flash, it simply blew away the other packagers in performance on an actual mobile device.  There was an at least 100X performance boost over the CS5 packager when testing an identical application. This proved to be the spark I needed because even though I know that puzzle and simple physics-based games are popular on mobile devices, I personally love to make arcade games.

My first thought was to re-make Retro Blaster, but I could not figure out good Asteroids style controls:

Instead I decided to go back to a Flash Tempest/Gyruss game engine that I had been working on for a while called Solar Vortex:

I sold a version of the engine to Jet Morgan Games late last year to be used in a Battle Force 5 game:

This led to me selling them another game engine to be used in a simple R-Type (for lack of a better example) style side scrolling shooter:

These got my blood boiling to make a mobile kick-ass arcade romp so I took the ideas behind both of those engines, combined them with the art from Retro Blaster and came up with my first Corona project called Retro Blaster Vortex:

This game employs an auto fire technique and uses finger swipes to rotate the player ship around the Gyruss/Tempest vortex. There is not enough power in the Corona engine to have too many particle effects at once, but I am looking into pre-rendering and canning some fx and baking them into the engine.

This game also uses parts of a Flash Star Castle / Tempest combo engine that I had also been working on called Solar Boss:

Corona is by no means EASY, but it certainly is not difficult. Any decent AS2 / AS3 developer can take a look at the API and the language specs and have a game going pretty quickly. There is a cost though ($349 per year license), so it is definitely for those who are serious about selling something on the IOS platform.

Eventually I am going to make a couple of my own viral games of the Solar Vortex and Solar Boss engines and drop them on FGL and Mochi. I’ll get to those soon enough. First though, it is time to get Retro Blaster Vortex out of the gate. It is only 20% complete right now. I have a full schedule of paying projects in February and the prospect of a long term game development contract with a HUGE Facebook gaming company after that, so if it is going to ge completed any time soon it will need to be in those minutes and hours between sleep, family activities and A LOT of work…

(8bitjeff is Jeff D. Fulton)

Leave a Reply