AirConsole plugin v2

@AirConsole #gamedev #airconsole

Long time no see ūüôā

I must admit I was a bit busy with Sick Rabbit Studios and polishing our Press to Play game. Oh, I didn’t tell you that we made it to third place in the AirConsole game dev contest 2017? Yep, we did it!

Check out our new cool website by the way, and subscribe to our newsletter, we have 2 great games under the hood!

Construct 2 connection with AirConsole were pretty hard to master so I decided, on my own, to write a new AirConsole plugin to make the process easier and faster! And it worked!

Most amazing is that N-Dreams liked it and proposed me to actually replace theirs with the new one! This is done job, the plugin version 1 is branched for archive on their Git repo and the new plugin is already on the official master channel available for whoever wants to download it!

You can find it here:

Yeah, at this time already, I told you, I was busy and did not write on my dev blog since long!

With changes and cleanups come new implementation and new guides, so I just finished writing the new expression guide, both on and on Github new Wiki:

And because it might be hard for people to migrate from plugin version 1 to the new one, I did put some kind of a guide up as well:

Really no big deal to migrate, but you have everything to win by migrating, the new plugin is more reliable for Construct 2 games!

@scirra Construct 3 fresh news

This is it, after all that waiting, we finally get fresh news about Construct 3!

A link to the original announcement first:

Holy crap, we’ve been waiting all this time for this…. They switch to an annual subscription of 99$/year! And it’s browser based! Oops, sorry, should have said “Chrome based!” And all those happy people that buy Construct 2 from now on will get a free year of Construct 3 where people using Construct 2 since long will get…. 50% off!

Seriously? Let’s take some facts:

  • When you report a bug at Scirra, you have to provide a file to reproduce the bug, or they on’t even read you. Lol? What if it’s something else?
  • When you report a bug with a project file attached, you usually get: It’s your driver’s fault, we can’t do anything, this doesn’t happen on my computer and I don’t give a shit if that happens on many other computers, it’s not on mine. That’s the classic dev answer, ptting the fault on someone else. Now just read a few line above to remember Construct 3 will be browser based. The new answer’s gonna be: It’s Chrome’s fault, they updated something we didn’t want them to touch! Or: Don’t use Edge, it’s crappy, C3 is running perfectly on Chrome!
  • There’s a ton of addons for free on C2, and all that is made by the community
  • Construct 2 is aiming at 2D, so is Construct 3. Good, but seriously, are you ready ¬†to pay 100 bucks for your prototypes? We usually use C2 for prototyping, testing etc etc, and we won’t pay 100 bucks a year for that anymore, we’ll just move everything to Unity.
  • Browser based editor? Cool, And what when I’m offline? It your graphic driver’s fault!
  • Really looking forward to the bugs due to: Chrome’s addons, other browsers, addons, antiviruses, VPNs, firewalls etc etc.
  • Building game and export them to HTML 5 is really cool. But common, Chrome is already a beast when it comes ¬†to resources, so yes, it runs well, but those games are still limited to HTML 5 abilities. Jump into Unity, or Unreal editor

Well, based on those few lines, you can pretty much guess Construct 3 is gonna be…. without me or Sick Rabbit Studios. Too bad, I was looking forward to immediately create a @AirConsole plugin for Construct 3, but it looks like someone else will be doing it.

So long Scirra, we’ll be finishing our stuff on C2 and will unfortunately leave the premises

AirConsole 1.4.8 and the future

#airconsole #construct2 #gamedev

@AirConsole plugin for Construct 2 version 1.4.8 just got merged and brings just two new functions, that were forgotten to be honest…

New in version 1.4.8

  • GetNickname(deviceId)
  • GetProfilePicture(deviceId)

Both are pretty self explanatory and provide a way to get these informations without the need of a message trigger.

About the future of this plugin…

Things have evoluted a lot since version 1.3 where I stepped in to add missing features that I needed for our game. Doing so made me deprecate things, but the need of backward compatibility stops us from optimising the whole thing. So rather than just waiting, I started to work on the plugin’s new generation. I decided to tag it version in order to keep in its version number the API number, making it easier to understand what you need for what API you are using. The whole thing is far from finished but I just commited a first failsafe backup on my Git repo. It is as of now not yet usable, but I would more than gladly also accept ¬†others opinion if any Construct 2 game dev would like to see something come real. Just use the comment section below and I’ll be in touch!

New plugin’s repo:¬†

AirConsole 1.4.7

@AirConsole @Scirra #airconsole #construct2

AirConsole team just merged my Github pull request.

Introducing persistent data for AirConsole on Construct 2

Added in version 1.4.7

  • Couple of cosmetics
  • Couple of little fixes and and there
  • New conditions:
    • onPersistentDataLoaded – Trigger – Triggered when the requested persistent data have loaded
    • onPersistentDataStored – Trigger – Triggered when your persistent data have been stored on the servers[/list]
  • New actions:
    • requestPersistentData(uids) – Requests persistent data from the server. You have to specify the device uids the request is for. If more than one, separate them by comma. Triggers onPersistentDataLoaded when done
    • storePersistentData(key, value, uid)¬†– Stores persistent data to the server. Triggers onPersistentDataStored when done
  • New expressions:
    • PersistentData¬†– A JSON string representation of the persistent data loaded by the last requestPersistentData in a C2Dictionary format.
    • Highscores¬†– A JSON string representation of the highscores loaded by the last requestHighscores in a C2Dictionary format.
    • GetUID(deviceId)¬†– Returns the globally unique id of a device

Check it out on Github:

Official AirConsole repo:
My fork:

Don’t forget to check out my latest guide on¬†

Feel free to contact me for additions, missing parts etc etc

AirConsole 1.4.6

@AirConsole @Scirra #airconsole #construct2

What a nice new year’s gift for all AirConsole Construct 2 devs! The plugin in its version 1.4.6 just got released. This version is a merge of my latest work introducing advanced message functions. These advanced functions should allow devs to use AirConsole’s awesome controller generator! A quick overview of what’s new:

  • Deprecated OnMessageKey
  • New OnMessageKey
  • OnMessageKeyIs
  • OnMessageKeysContain
  • (AirConsole).GetMessageProperties
  • (AirConsole).GetMessageProperty()
  • (AirConsole).GetMessagePropertiesCount
  • (AirConsole).IsMessagePropertySet

And best of all, full recursion is supported for message properties, allowing advanced messages to be captured and treated by Construct 2!

Full update message available on Scirra: Scirra AirConsole plugin forum topic

Download the plugin, official channel:

Download the plugin, my repository:

Feel free to PM me for problems, questions  and even if you need other functions.

Wish you all a happy new year and happy coding!

Howto Construct2 and AirConsole

@AirConsole @Scirra #airconsole #construct2

This comes very often in every support channels Construct 2 or AirConsole do provide. People, probably scared by the new plugin, just don’t get to connect controllers to their games, dispite the official guides available. So I decided ¬†to make you a very simple and working controller connection guide. Keep in mind this is the very bases without anything else, you will need to extend further!

  1. Add AirConsole plugin to your project (and for debug purpose, add Browser too)
  2. Don’t forget to set the maximum players for the plugin!
  3. We need our game to tell the controllers it has fully loaded and is ready to talk with the controllers. Head to your Event Sheet and add that!szhlu
  4. We are going, for this exemple, to keep track of 2 players. So we add 2 global variables and use “On device join” condition from AirConsole to capture any player joining our game. Let’s also drop a debug line in our console to check that everything is going well
  5. That’s all we need to setup a working connection, at least c2 side! Now, export your project as “HTML 5 website”, don’t forget to untick “Minify script” as this tends to be problematic. Head to where you exported your game, and rename the file “index.html” to “screen.html”
  6. Open your favorite html or text editor (don’t own one? Try notepad++ it’s free and supports many languages!) We are going to make a simple controller, for which I’d recommend using jQuery as well, and segregate the codes for clarity. Line 3 includes jQuery, line 4 includes AirConsole 1.6.0 API and line 5 does include your own JS code
  7. Save this file where you have your “screen.html” file. Name it “controller.html“. Benefit being at that to add a subfolder named “controller_resources” in which you will also add antoher subfolder named “js
  8. Go deeper in your folder, to controller_resources and then into js subfolder, and add a new file, call it “main.js” and open it with your favorite text editor (ever thought about notepad++?)
  9. We are going to create the simple code to communicate with your game.
    So, we work only when the document is ready, meaning only when your html controller page has finished loading. We instanciate AirConsole API to be able to work with it. We add a “sendHandshake” function, and we rewrite AirConsoles’s onReady and onMessage functions
  10. Save this file under controller_resources/js/main.js
  11. You know what? That’s all….. Everything’s saved? Head to to test it! game/. Once loaded, open your browser’s developement console by hitting F12. That’s where your debug lines will appear:
    szisiHope you enjoyed and that this helped you connecting your controllers to your Construct 2 games! Happy coding!

AirConsole 1.6

@AirConsole @Scirra #airconsole #construct2

My pull request for the Construct 2 AirConsole plugin version 1.4.4 got merged today by Fran√ßois (AirConsole team)! That means that my fork is actually on the same level as the official plugin (or vice versa actually…)

Construct 2 developpers, don’t forget to update your plugins and enjoy the new features included in this release, including:

  • Update to API 1.6.0 don’t forget to update your controller.html api link!
  • New conditions:
    • OnAdComplete – Trigger – Triggered when showing ads is finished – Use it to unmute your sounds per exemple
    • OnPremium – Trigger – Triggered when a premium device joins or a device gets premium – Use for special cases for premium, premium don’t get ads per exemple
  • New actions:
    • ShowAd – Displays adds on screen and controllers. Triggers OnAddComplete when done
  • New expressions:
    • IsPremiumJoin – Returns 1 if the last controller that joined is premium, else 0
    • IsPremiumMessage – Returns 1 if the last controller that sent a message is premium, else 0
    • IsPremium(deviceId) – Returns 1 if the deviceId is premium, else 0
  • Reordering expressions by using categories


Check it out on Github:

Official AirConsole repo:
My fork:

Also I would like to remember those of you that didn’t read the AirConsole news not to forget to add ads in your games, existing, already published or upcoming until february 2017. After that, games without ads implemented will only be available to premium users (payant). I’d like to point out that 75% of the ad revenues generated by free users are given back to developers! So what are you waiting? Those are the AirConsole words, not mine!

Happy dev!

AirConsole 1.6.0

Yesterday, november 17th, 17:44 we all got an email from AirConsole… Well, the good part is that the API version 1.6.0 is now in use to replace 1.5.0. The less good part is that it introduces ads support for it, in the middle of a game contest event and we all have until feb 2017 to implement the ads in our games. And guess what? Well, C2 plugin didn’t have any ad support! Well, thought I wouldn’t have time to implement that but it took me about one and a half hour after the email to ¬†pull request airconsole with the update to 1.6.0, ad support as well as premium support for C2 airconsole plugin! That’s what I call effective!

The system is pretty well made imo: The SCREEN just sends a “showAd” to the controllers, and ¬†they all, including SCREEN show the same ad, with the exception of premium controllers that are saved from it! As soon as ad displaying is over, the screen event “onAdCompleted” gets triggered letting you know ¬†about it.

Now let’s see how and where we gonna implement those ads in our game, we have until feb 2017 to think it over.

Now, you have no excuses not to implement ads in your Construct 2 games, do it!

C2 plugin

Today I made a Construct 2 plugin, because I came to a dead point when implementing AirConsole to our game “Press-to-play”. We need keyboard support to dev the game, but we also need AirConsole support at the end. This means double coding all the controls or ¬†using “OR” blocks to control conditions…. What apain!

Decided to make a keyboard press emulation plugin, simply…

Here you go:

This allows things like this:


My first pull request to AirConsole plugin for Construct 2 got accepted and merged into their project!

Here’s the changelist

Updated to 1.5.0
Fixed script loading error ( due to browsers bad behavior (usually happens when played from C2 and/or on F5)
Got rid of airconsole-xxx.js in the plugin, using dependencies to load the plugin instead (related to the above fix)
Changed onMessage to onMessageIs
Added onMessage
Added onMessageFrom
Added onAnyDeviceLeft
Added onTooManyPlayers with plugin config
Added alpha highscore support
Added a couple of expression like Nickname, ProfilePicture, UID
Some cosmetics and fixes that were asked by dev

#airconsole #construct2 #plugin