Just over a year ago I took a stab at developing an iOS native extension for AIR. It was really just a learning exercise and I wasn’t actually trying to write anything specific. I certainly got a lot from it but having not revisited ANE development since, I recently found to my frustration that I’d forgotten most of what I’d learned. To make matters worse, I’d lost the source code and build scripts from my original experiments.

So to give myself a quick jumpstart back into ANE development I thought I’d give the Easy Native Extensions eBook by Radoslava Leseva a try. I’d previously taken a look at the free edition but for one reason or another not bothered to actually purchase the full version. Well all I can say is that it was easily the best $30 I’ve spent in a while. I was back up and running in under a day and as an added bonus Radoslava does a brilliant job of detailing how to wrap up the whole build, packaging, and deployment process into a single Ant script. Her build script was much better than the crummy one I remember cobbling together for my original ANE attempts.

One of the things I hadn’t really tackled previously was learning how to properly debug my ANEs. Thankfully a companion debugging guide came bundled with the package, which takes you through the steps required to write a native iOS project that will wrap around a test AIR app. With that you’ll be able to add breakpoints to Xcode and inspect your ANE’s native library.

Come the end of it all I’d bashed together a new demo ANE that was happily utilising a whole host of native iOS stuff including: local notifications, native alert boxes, native UI elements, table views, and some animated bitmaps via UIImageView. I’d also successfully managed to create and populate some ActionScript objects on the native side before passing them back to my AIR app.

So if you want to try your hand at ANE development then I whole heartedly recommend you put the Easy Native Extension eBook top of your list. It’ll save you a lot of time and head scratching. Sure it’ll only take you so far on your journey but it does end with a list of resources to look up next. A few other places I found to be of particular help were Richard Lord’s open sourced ANEs on GitHub and part 1, part 2, and part 3 of Transferring Data with AIR Native Extensions for iOS by Tom Krcha.

Oh, and there’s also the post I wrote last year detailing ten steps to learning ANE development. It’s still worth a look. Have fun folks!

07
Nov
stored in: AIR and tagged: , , ,

Remember when Adobe initially started targeting mobile with AIR? It was often a pleasant surprise when someone managed to produced an app that was as good as its native counterparts. Of course AIR’s come a long way since then and these days it’s just expected that the quality of apps built with it will be every bit as high as those produced with rival technologies. As someone who loves tinkering with AIR it’s always great to find an app that I’ve been playing for a while was actually written in AIR. Here’s a few I’ve been playing recently.

Ship Antics:The Legend of the Kiki Beast

I absolutely love Ship Antics! It’s a puzzle adventure game for kids set in a vibrant cartoon pirate world. Built with the Starling framework, Ship Antics interweaves high quality animated content with a story-driven game featuring simple puzzles and challenges.

Its story features two lovable little characters named Amanda (the daughter of the ship’s captain) and Otto, a cheeky young octopus. Although the game’s main campaign is over in approximately ten minutes, it hasn’t stopped my little nephew from requesting repeat visits into the game’s vibrant little world. I honestly must have chalked up several hours playing it with him.

It’s aimed firmly at children this one but serves as an amazing showcase for what’s possible with AIR and the Starling framework. Dublin based Studio POWWOW has done an incredible job with Ship Antics and my nephew was delighted to find out that an update is coming soon with a whole new adventure for him to take part in.

City 2048

2048 is one insanely addictive web game but its visuals are hardly anything to write home about. You may think that such a game doesn’t really require anything else but developer Andrew Kyznetsov has created his own unique version where you slide the game’s tiles to create a huge, and beautiful looking, metropolis!

city-2048

The original’s top-down camera has been replaced by an isometric view onto the game’s 4×4 grid, and each square now represents a city block rather than a number. Sliding two identical squares together creates a new, more densely populated, square. The greater the population density within a square, the taller the buildings that occupy it. This acts as a great visual cue when playing the game and will make perfect sense to seasoned players of 2048 struggling to figure out how you can take a numbers-based game and turn it into something that’s based on a city.

City 2048 is ideal for anyone looking for a puzzle game that will consume endless hours of their week. It’s available for both iOS and Android.

Boxtrolls: Slide ‘N’ Seek

Isn’t the Starling framework awesome! RED Games certainly think so as it was their graphics engine of choice for their side-scrolling action game based on the recently released Boxtrolls movie. The game takes you on a journey to rescue captured Boxtrolls over 30 increasingly difficult levels inspired by scenes from the movie. The control mechanism contains elements from popular endless runners and also features a really nice sliding feature very similar to the one found in Tiny Wings (remember that).

The app comes with really nice audio and graphics that match the film’s visuals very closely. It all comes together as a very slick package that once again shows off Adobe AIR’s strengths perfectly. Oh, and it’s also worth mentioning that the increasingly popular DragonBones skeleton animation solution was used for the character animation. Incidentally, DragonBones was also utilised extensively for the animation in Ship Antics too!

Boxtrolls: Slide ‘N’ Seek is available on the App Store for iOS devices and Google Play for Android.

Ancient Planet TD

I’m really really bad at tower defence games, and to be perfectly honest, not a huge fan of them. However, Ancient Planet is really awesome and I’m glad I decided to give it a go. I originally downloading it after seeing it featured on the App Store. It has some exceptional visuals that look really great on my iPhone 5 and even better on my iPhone 6′s larger screen. The initial difficulty level is pitched perfectly for beginners and you’ll soon find yourself placing and managing weapons while simultaneously mining for resources during the heat of battle. The difficultly does ramp up pretty quickly but thankfully you’ll already have the hang of things by that point.

ancient-planet

Developer, Mildright, has done an amazing job crafting some beautifully detailed alien worlds spanning over 35 unique levels. It all gels together into a perfectly pitched game. If you’re looking for a great tower defence game then look no further than Ancient Planet TD on the App Store. Another excellent showcase for what’s possible with Adobe AIR.

Bloody Harry

Bloody Harry is, well, bloody good fun. It harks back to the days of 16-bit side scrolling arcade games such as Narc and Splatterhouse where you move through each level obliterating everything in sight. You play the role of Harry, an insane cook, who’s hunting down evil Vegetable-Zombies. Meat cleaver, shotgun, knife, machine gun: they’re all available. Heck, if you run out of weapons you can even use your fists.

There’s coins to collect along the way, which can be used to buy new weapons and upgrades. You’ll need the upgrades later on as some of the boss battles can be pretty tough. In a nice twist, you can even recruit other weird mutants to help you beat some of the harder bosses, or get through some of the tougher levels. There’s also the odd vehicle lying around, which is great for mowing down the zombie hordes when the going gets tough.

Bloody Harry is available on iOS and Android.

Deep Loot

Deep Loot’s lovely pixel art and chirpy tunes hark back to the good ol’ 8-bit days. There’s a real fun and quirky feel to this little game that will make you smile as you dredge the ocean floor trying to recover gold and lost relics. On each dive you’ll have to make your way to the bottom by battling sea creatures and blasting other obstructions.

Your air supply is king and the better equipped you are for a dive the farther down you’ll be able to reach. The game starts with your little diver simply holding his breath. However, collect enough coins and you’ll soon be able to buy all kinds of diving apparatus that will keep you in the water for longer and able to reach some impressive crushing depths.

Special mention must go to the Deep Loot’s almost turn-based gameplay mechanic. you tap on a desired location on the screen and your little diver swims towards it using the most optimal route. It works really well and is certainly better than the more obvious virtual joypad approach that many games adopt.

Deep Loot is available from the App Store, Google Play, and the Amazon App Store.

21
Oct
stored in: iOS and tagged: , ,

I’ve been tinkering with Swift, Apple’s new programming language, over the last few months. It’s a really neat programming language and probably isn’t that far off what ActionScript 4 would probably have become if it had ever seen the light of day. While Objective-C can look complicated and confusing, Swift is very easy to get up and running with. In fact, those from an ActionScript or JavaScript background will probably find programming in Swift to be great fun. I know I have.

For me, blogging is a great way of learning. I find writing tutorials to be a particularly good way of pushing myself. So two months back I set up a new blog named Yeah But Is It Swift? It’s a tutorial site aimed at those wanting to learn Swift. I don’t plan to post as frequently to it as I do with this blog. Instead I’m planning to post about six significantly sized tutorials over the next twelve months. Hopefully it’ll be a good resource for anyone who comes to this blog but wants to start dabbling in native iOS development.

The initial three or four tutorials that I’m writing are part of a guide that will get you up and running as quickly as possible. The first two of those tutorials are already live:

Part 1 covers the following:

  • How to work with playgrounds
  • The basics of the Swift programming language
  • Grouping multiple values into a tuple
  • How to work with optionals
  • String fundamentals
  • Control flow

While part 2 covers:

  • More detail regarding strings
  • How to work with arrays and dictionaries
  • Control flow with while loops and the switch statement
  • How to work with enumerations

I’m still undecided whether having a separate blog for these tutorials is a good idea or not. For the time being I’ll keep it separate but I may bring the articles directly into this one in the future. I’ll see how it goes. Anyway, let me know your thoughts and happy programming folks!

14
Oct

The next Flash Online conference takes place at 12:00pm (UTC+0) on Thursday the 16th of October and it looks like it has a star-studded line up of speakers. Here’s the list:

  • Chris Campbell: Update on recent releases and roadmap
  • Chandra Prakash: VideoTexture support on iOS
  • Neha Gupta: Adobe AIR Cross Promotion service
  • Ajay Kumar Shukla: What’s new in Flash Professional CC
  • Rob Bateman: Away3D
  • Josh Tynjala: Feathers
  • Daniel Sperl: Starling
  • Ariel Nehmad: Flare3D
  • Zwetan Kjukov: Redtamarin

It’s great to see a heavy presence from Adobe again. I’m really looking forward to Chandra Prakash’s presentation about iOS video texture support, and Neha Gupta covering AIR’s recent cross promotion service.

There’s some great Stage3D coverage too. From a 2D perspective, Daniel Sperl will be talking about the Starling framework, and Josh Tynjala will be on hand to cover the latest with the Feathers UI library. Away3D and Flare3D are probably the two most popular 3D libraries so it’s great to see that Rob Bateman and Ariel Nehmad will be speaking too.

Finally, Zwetan Kjukov will be covering the latest development with his redtamarin project, which aims to support the use of ActionScript 3 within the command-line. Essentially the project will let you run ActionScript 3 as a server-side solution.

Looking forward to it.

Adobe just released an update to Flash Professional CC and there are some nice additions.

WebGL

I’m personally delighted that Flash recently gained support for WebGL and it’s good to see some more WebGL features arriving with this update. You’ll now be able to write frame scripts directly within Flash, which makes adding interactivity to your timeline animations much easier and more natural. There’s code hinting too, making your JavaScript coding easier thanks to contextual suggestions.

Sound is now supported within WebGL documents too. You can import audio files and embed them directly within the timeline. Alternatively you can play audio at runtime by importing audio files into your library and assigning linkage IDs to each.

Finally, some optimisations have been made to ensure that your content publishes faster than before.

If you’d like to know more about Flash’s WebGL support then check out my tutorial: An Introduction to Flash’s WebGL Runtime API.

Intel x86 Support for AIR for Android

Good news for any AIR developers who target Android devices. Flash Professional now supports packaging of AIR applications for Intel x86 based devices. This was obviously a major blocker for many AIR developers, and while the AIR SDK itself had been updated to support Intel x86 devices a while back, Flash Professional was still using an older version. So it’s certainly good to see Flash Professional targeting a newer version of the AIR SDK.

Custom Brush Support

The previous release saw the introduction of variable width strokes. This time it’s the Brushes tool that’s had a makeover. You can now create new brush types and customise them from the Properties Inspector. The shape, angle, and flatness of your brush’s nib can be edited along with the smoothness of the lines you draw with it. It’s a welcome addition that’s sure to go down well with illustrators.

Animation Guide Support

A few interesting updates have been introduced to motion guide layers. You can now draw a guide path using a variable width stroke, with the stroke’s width being used to control the scale factor of the clip attached to the guide path. You can also do the same by creating a guide path consisting of multiple connected uniform strokes of different sizes.

It’s also possible to control the colour and alpha transparency of your objects in a similar manner. Simply draw multiple connected lines and curves of different colour and alpha values. As your shape tweens over each part of your guide layer, its colour will change to reflect that of the guide path.

Import SWF Files

Back by popular demand is the ability to import SWF files into your library. It’s once again possible to bring assets from a published SWF into your FLA and work with them in a primitive manner within your timeline.

Custom Platform Support

The October update introduces probably the most significant new feature to come to Flash in quite some time. Custom Platform Support allows third-parties to create their own document types for Flash Professional that can then publish to platforms that aren’t native to Flash. Plugins are written using a C++ API that provides access to Flash documents in the form of a DOM.

Basically these plugins will enable designers to create great content in Flash that can then easily be exported to other target platforms such as Unity, Marmalade, Cocos2d, Starling etc. As an excellent example of what can be done, take a look at the recently released GAF Publisher, which exports Flash content to the GAF animation format.

I’m really looking forward to seeing what plugins become available over time.

Anyway, enjoy tinkering with the latest Flash Professional release, and I’m certainly looking forward to the next update.

22
Sep

If you’re an iPhone owner then you’ll probably be pleased to know that iOS 8 comes with WebGL support for Safari. This is huge news for Flash developers and designers since Flash Professional CC 2014 now supports WebGL as a publish target. Here’s a quick video of some Flash content I created running on my iPhone 5′s web browser.

As you can see, the performance is excellent and we can now look forward to creating visually rich Flash content for mobile web. I also upgraded my ageing iPad 2 to iOS 8 and the same content ran perfectly on it too. I was pleasantly surprised by that actually. If you’d like to see the results for yourself on your own iOS 8 device then simply point your device to the original demo. And if you’d like to actually see how that demo was built then take a look at my tutorial.

As for Android. Well I tried my demo out on an HTC One recently and the results were equally impressive on that too.

12
Sep
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!

gsc-ipad-1

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.

16
Aug

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.

07
Aug

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.

01
Aug

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.