stored in: Projects and tagged: , ,

I just thought I’d show off an Adobe AIR project that I worked on recently. The Careers IT Seat Interactive is an iPad application that was developed as part of the Glasgow Science Centre’s Careers Hub exhibit. It consists of a series of games and quiz style questions designed to challenge and entertain visitors as they discover their ideal career based on their personality.

It has actually been a while since I last got my teeth into a decently sized project using the Flash platform. Most of the work I’ve been doing over the past 12 months has taken me away from that and onto HTML5 and native mobile projects. It genuinely felt good to be back doing some ActionScript 3. It’s still a lot of fun!


AIR’s performance on our target devices was seriously impressive, and the vector artwork created for the project looked gorgeous on those razor-sharp Retina screens. Also, there was no need for optimisation: all the vector animations and transitions ran smoothly first time. I was actually surprised at how easy it all was. Although I really shouldn’t have been.

If I can get a hold of a Retina iPad then I’ll make a video of the app actually running. In the meantime you can take a look at the screenshots that I’ve posted above.

Also, here’s a video of another part of the exhibit that was also developed using Adobe AIR (but not by myself). It’s a series of large touch screens allowing users to browse various sectors in the science industry to discover what jobs are available. The Open Exhibits framework (powered by GestureWorks) was also used in that project.


Beta builds of Adobe AIR 15 and Flash Player 15 are now available for download and I must say, there are some really nice features in the works. Here’s a few that caught my eye:

Cross promotion of AIR mobile games

This is possibly the feature I’m excited about most. Anyone who has released a mobile app will know the importance of promoting their app to maximise downloads. Well the good news is that Adobe AIR now supports cross promotion of AIR apps. It works by letting you include in-game promotions of games by other developers within your game, while your own app is promoted by others. It’s a great way of driving awareness and downloads of your apps. Adobe’s cross promotion solution will be free and will work on a points system. You earn points by promoting other AIR games.

The ActionScript API looks fairly straightforward and Adobe has released an article detailing how to use it.

It’s currently only available for Android but will be rolled out for iOS soon.

Stage3D “Standard” profile support for iOS and Android

AIR 14 saw the release of Stage3D “Standard” mode, which brought many advanced features to the Flash Runtime. With AIR 15, Stage3D “Standard” mode is now available on mobile. Any iOS and Android devices that support OpenGL ES3 will be able to request and use the “Standard” profile features, including multiple render targets, new texture formats, and AGAL 2.

The iOS Improved Packaging Engine is now default

The improved packaging engine will now be the default when developing iOS apps. This gives significantly faster packaging times compared to the legacy packager. Here’s a quick test I ran when the packager was first made available.

Automatic software fallback with StageVideo

Let’s be honest. When using hardware-accelerated video in Flash and AIR, it’s a pain having to implement your own fallback code for when hardware StageVideo isn’t supported. Thankfully, Flash Player 15 makes that a thing of the past as it now supports a software version of StageVideo that provides automatic fallback to the software version. Note that this is a Flash Player 15 Beta feature, which can be downloaded from here.

Using Stage3D and StageVideo together

Another new feature that I’m really excited about is a new ActionScript API that will allow hardware-accelerated video to be used as a source texture in Stage3D. As most of you will be aware, you can currently only use the Video object when working with Stage3D, which unfortunately isn’t accelerated. The new VideoTexture class will allow direct access to a texture object it sourced from a NetStream or Camera object. Initially this feature will start life off on AIR for Windows, but the intention is to roll it out across Mac and eventually mobile too. You can find out some more detail here.

There are other great features in the beta too, including enhancements to AIR’s gamepad feature for Android. Take a look at the latest release notes for more detail.


Sometimes at WeeWorld we like to break away from the constraints of the WeeMee and focus on other original character concepts. Jeff the Unicorn is one such idea that’s been extremely popular with our users, so we thought we’d try and explore some mobile game concepts featuring him. I’ve spent the past four weeks working on an endless runner mobile game demo starring Jeff.

The demo was written in Objective-C and gave me the ideal opportunity to play around with Apple’s Sprite Kit 2D framework. I must say, I really like Sprite Kit. The API is straightforward, the physics integration feels right, and the performance is pretty damn impressive.

We tried to add something different to the endless runner genre by adding a rainbow slide ability. To win the game you must slide on your butt, smearing Jeff’s rainbow coloured poop along the ground for as long as possible. Before Jeff can initiate a slide, you’ll need to collect enough coins and diamonds that are scattered throughout the level.

The demo is really rough and ready but considering we were doing some really rapid prototyping with limited resources I’m really happy how it turned out. Take a look at the video above to see the game in action. As always, sorry about the really shoddy camera work.


I got my hands on an HTC One the other day so thought I’d give the demo from my An Introduction to Flash’s WebGL Runtime API tutorial a quick run. When writing the tutorial I’d simply assumed it would work, but I didn’t actually have a WebGL-enabled handset to actually try it on. When my buddy Alex created the original animation and vector artwork, he’d made no attempt to try and optimise it, so I was actually a little apprehensive that the content would just kill the device. Well the good news is that it works a treat and the performance is really quite impressive.

I did have to make a small change to the source code to accommodate touch on mobile, which I’ve now pushed to my GitHub repository. Basically to handle touch on mobile you need to listen for the touchstart and touchend events. Flash’s WebGL export feature holds a lot of promise and it’ll be really interesting to see what people do with it. Take a look at the video above or if you have a WebGL-enabled mobile browser then why not give the demo a spin and let me know how it performs. I’d be interested to know.

Learn how to build interactive WebGL content using Adobe Flash Professional CC 2014 that will run across both desktop and mobile browsers.

What you will learn…

  • How to publish for WebGL from Flash Professional CC 2014
  • The basics of Flash’s WebGL Runtime API
  • How to work with Flash movie-clips using JavaScript

What you should know…

  • You should be comfortable working with Adobe Flash Professional
  • A familiarity with ActionScript or JavaScript is required

With the release of Adobe Flash Professional CC 2014 you can target WebGL-enabled browsers, allowing your content to run across both desktop and mobile devices, while taking full advantage of GPU acceleration. If you’re familiar with Flash’s existing HTML5 Canvas export option you may be asking yourself what the distinction between that and the WebGL target is? While both draw to an HTML5 canvas element, WebGL utilises the GPU for superior rendering performance. Additionally, while the two export options provide a JavaScript API, both APIs currently differ.

This tutorial will take you through the designer-developer workflow. You’ll learn how to export your FLA’s graphical resources to WebGL, before adding interactivity to it using JavaScript and Flash’s WebGL runtime API. We’ll be creating a prototype beat ‘em up game where your hero can perform either an attacking or blocking move. By doing so you’ll learn how to work with movie-clips and how to handle and respond to simple mouse (or touch) interactions. For a clear idea of what you’ll be building, take a look at the final result below.

For the avoidance of doubt. What you are looking at here is Flash-authored content running in your web browser but outside of Flash Player. By publishing to WebGL you are potentially increasing the reach of your Flash content to devices that don’t support Flash.

Before we proceed, a special mention must go to my buddy Alex Fleisig, who has provided the artwork and animation for this tutorial. Alex has worked for the likes of Pixar and DreamWorks on a wealth of hit movies. You can see some more of his animation work here.



It’s time to take a look at some more great games built with Adobe AIR. If you’re using the Flash platform, or any other development platform for that matter, to build your own games then hopefully you’ll find some inspiration here. If you’re just looking for a few games to play then I don’t think you’ll be disappointed either.

Haunt the House: Terrortown

Powered by Adobe AIR and the Starling framework, Haunt the House: Terrortown is another stunning example of what can be created with the Flash platform. It can best be thought of as a side-scrolling action puzzle game starring a ghost, where the objective is to possess objects in order to scare the hell out of people. In fact, if you’re really good at it you can scare some of your poor victims to death!

The game takes place over five vibrant locations, each with its own musical style and unique objects. In fact, each location has hundreds of different objects for you to possess, with several funny outcomes from moving and interacting with each. Get the timing right and you’ll have town folk running for cover, or darting towards the nearest exit. Haunt the House has some splendid animation and a great sense of humour.

It’s available on Steam for both Windows and Mac.

Infectonator: Hot Chase

Zombie are great. Endless runners are great too. So I’m delighted that Armor Games had the good sense to combine both to make Infectonator: an awesome zombie game where you rampage through a city infecting as many unfortunate victims as possible.

Unlike the traditional slow shambling zombies we’re used to, Infectonator’s zombie protagonist runs after his prey. Unfortunately he burns out quickly and needs fresh victims to replenish his stamina and boost his speed. Fail to infect enough people and you’ll grind to a halt. With coins to collect, power-ups to earn, and high-scores to bag, there’s more than enough to keep you coming back for some time.

Infectonator: Hot Chase is available for iOS on the App Store and Android via Google Play. And of course, being built using the Flash platform, you can also play it on the web too!

Mucho Party

I really like Mucho Party. It doesn’t take itself too seriously, offering up 30 fun mini-games for you to compete against friends or AI players. Each game is wacky, simple to play, and has a sense of humour that will keep players smiling as they compete and attempt to unlock new games.

While each game is straightforward and only takes seconds to play, Mucho Party will adjust its difficulty based on your own skills. So players of a wide range of ages and abilities can take part. Basically it makes itself as accessible to as wide a range of people as possible, which is exactly what an app of this type should. Great stuff!

Mucho Party is available on the App Store and Google Play.

CSI: Hidden Crimes

It’s great to see large games companies such as Ubisoft using Adobe AIR. It’s even better seeing them use it to build games based on big name TV shows such as CSI. At its heart, CSI: Hidden Crimes is a simple find-the-object game. You use your observation skills to hunt for evidence at crime scenes. Analysing the collected evidence leads you to new crime scenes and suspects. As you continue investigating leads you’ll start to build up a profile of the murderer, allowing you to ultimately solve the case.

CSI: Hidden Crimes is an extremely slick game that has a great visual style that captures the mood of the TV series without being too gory given the game’s subject matter. It’s easy to get in to and doesn’t demand too much of your time in any one sitting, which makes it ideal for casual gamers. CSI: Hidden Crimes is available from the App Store for those with iOS devices and Google Play for Android owners.


Note: Just found out that NANACA†CRASH!! isn’t actually an AIR app. Check out developer Kick Lensing’s comment at the bottom of the post.

It started life as a crazy Japanese anime web game and now NANACA†CRASH!! has made it onto mobile. It’s hard to actually put into words just how bonkers NANACA†CRASH!! actually is, but I’ll try. Basically the game begins with your character being sent flying into the air after being hit by a bike. You then spend your remaining time trying to see just how far you can keep him flying through the air.

It seems simple, but NANACA†CRASH!! has a surprising amount of depth and before long you’ll be uncovering tricks and moves that will keep your character soaring through the air. On my first attempt I only managed a distance of 50 metres. However, before long I was covering distances of several kilometres at a time. Cool!

NANACA†CRASH!! is available on the App Store and Google Play.


As you may have already heard by now, Apple has announced a new programming language called Swift. It’s modern, powerful, and potentially easier to use than Objective-C. In fact, from the time I’ve spent tinkering with it, I’d say that those coming from an ActionScript or JavaScript background should find Swift a much more approachable language. So if you’ve always wanted to develop iOS and Mac OS X applications then this might be the ideal time to jump in.

I had a bit of spare time over the last few days so thought I’d flex my programming muscles and port the parallax scroller from my endless runner demo to Swift. Truth be told it was a fairly straight forward process and I’m looking forward to spending more time with the language over the coming months. If you fancy taking a look you can find the source code on GitHub: https://github.com/ccaleb/endless-runner

It’s also great to see a few familiar faces from the Flash community picking up Swift and blogging again for the first time in a while. Adobe’s Thibault Imbert has blown the cobwebs off his ByteArray blog and has already posted several great Swift tutorials for those coming from an ActionScript background. Lee Brimelow, who also works at Adobe, has set up a new blog dedicated to Swift tutorials, which is definitely worth checking out.

If you’re interested in learning Swift then Apple’s Introducing Swift website is a good place to start.

There are new Star Wars films on the horizon and I’m pretty damn excited by that. In fact I’m so excited I decided to re-write my X-Wing Targeting Computer app for iOS. Yay!

You may remember the original ran on Android handsets and was written using Adobe AIR. This time I thought I’d go native and write it in Objective-C. I also thought the app needed a lick of paint too so enlisted the help of my sister-in-law who very generously offered to spend her very limited free time making it all look a bit more modern. I’m sure you’ll agree it looks awesome!


You may be thinking why I bothered with Objective-C. After all, since the Android version was written in AIR, couldn’t it easily be ported to iOS too? Yup, it definitely could, but I don’t do nearly enough Objective-C stuff and thought the app gave me the ideal excuse to do some more.


If you aren’t familiar with the original version, it’s a simple GPS-enabled app that lets you pretend to be an X-wing pilot while you’re driving your car. It’s really easy to use. Just lock in your target location and start driving until you eventually reach the exhaust port, er, I mean destination. Your distance to the target will be continuously updated as you drive and you can even hear radio chatter from your fellow pilots!


Just like the original version, I have no plans to release it on the App Store. I strongly suspect I’d have the same problem convincing Disney to release the app as I did with Lucas Licensing previously, so I’ll leave it as a nice portfolio piece.


I’ve added a video at the beginning of this post where you can see me giving it a quick spin. I couldn’t be bothered actually driving around in my car with it (you can see a video of me doing that with the original Android version here) but you can see it run in demo mode to give you an idea of how it works.

Now that that’s all done and dusted it’s time to start learning how to program iOS apps in Swift. Anyway, may the Force be with you guys. Always.

Over the last year or so there’s been much talk from the community regarding the need for the integration of native physics within the Flash runtime. Adobe’s Flash product manager, Chris Campbell, has opened this up for further discussion on the Adobe Communities forum.

Personally I think this might be a good thing as Adobe has been saying for some time that gaming is now the primary focus of Flash and AIR. However, I really only want to see this happen if adding a native physics engine would provide superior performance over and above using a third party ActionScript library. I’d also only really be keen to see this happen if Adobe were committed to frequently maintaining and updating the API. Finally, I’d prefer that API to be either Box2D or something that’s very similar to Box2D. My reason being that Box2D is a very popular and well document API. I’d rather work with an API that’s well known and already has a wealth of tutorials and resources out there that I can already benefit from.

Anyway, if you want your say in the matter then head over to the Adobe Community Forums and add your tuppence worth.

stored in: HTML5 and tagged: , ,

Isn’t Unity awesome! For 3D games developers it’s probably one of the best choices out there and seems to run on just about any hardware platform you can throw at it. Now with Unity 5, things are getting even more awesome as it now targets WebGL, removing the need for the Unity browser plugin.

So how does all this work? Well basically the Unity runtime code needed to be cross-compiled to JavaScript allowing it to run in your browser. This was done using emscripten to convert the runtime’s C and C++ codebase into asm.js JavaScript. I’ve mentioned asm.js a couple of times before. It’s an optimised subset of JavaScript that can be AOT-compiled by supporting browsers into native code. The beauty of asm.js is that being a subset of JavaScript, it will still run on browsers that don’t directly support it ensuring a level of cross-browser compatibility.

Of course, Unity game code itself is written in C# (and UnityScript) and compiled into .NET bytecode. That bytecode also needs to be converted to JavaScript before your game will run in a WebGL enabled browser. To achieve that, the Unity guys developed a new technology called IL2CPP, which takes your game’s bytecode and converts it all to C++. Emscripten is then once again employed to convert all that to JavaScript.

Phew! Sounds pretty technical but it results in your Unity games being able to target WebGL compatible browsers and that’s a very exciting prospect for many. Theoretically your games will run on browsers and platforms that don’t have support for the Unity browser plugin. For example, this could open up Unity games to Android phone and tablet owners wishing to play games within their browser rather than downloading apps. And if Apple ever bothers to support WebGL on mobile Safari then we could also see Unity games running in the browser on iOS.

It’s early days yet and Unity’s WebGL support is still in Early-Access. However I was able to run and test a few demo games on my Macbook using Safari. I must say, I was very impressed. If you fancy taking a look then try out both Dead Trigger 2 and AngryBots, which show off the technology’s potential. Great stuff!

Now I wonder if Adobe will go down the same route with Flash and break away from its dependency on the browser plugin. It could breathe new life into the much-maligned runtime and give Flash a wider reach on mobile phones and tablets.