Saturday 28 December 2013

How to upload to Amazon S3

If like me you get asked a lot about how to upload files to an Amazon S3 bucket you've set up for super-awesome business dev folk.
Here's a super-duper-short (<25 seconds) video walkthrough on how to do just that.


PS. This is the long awaited sequel to How to install an adhoc iOS build using iTunes.

Tuesday 10 December 2013

PLAYIR Walkthroughs

Hey guys! On Thursday, we're going to be at Mozilla London again, this time with the HTML5 GameDev meetup crew, and next week we're going to be at Apple's iOS7 gaming tech talks in London.

Our super-hero designer Alexandra Goddard, (who is also available for freelancing), has been working on some kick-ass designs for a 2.5D platformer game.

I've spent the past week, trying my hardest at neglecting the bizdev side of things and focusing at least 50+% on programming.
(Fixing bugs, and polish, polish, polish).

Got two video updates for you. Both walking you through how to create your own apps and games using the web and mobile based editors.

Last week-ish, I gave a talk/demo on using PLAYIR to optimize the sales of virtual items in games with real-time A/B split-testing.

And, last Saturday and Sunday, we invaded the University of East Anglia for AdventureX, giving live demos, talks, and exhibiting how to live create your own multiplayer adventure games, across all the platforms, in real-time.

Setting up for a live demo of PLAYIR at AdventureX.

Even better; The legendary Tim Child giving a talk on creating Knightmare.

Tuesday 26 November 2013

PLAYIR around the world!

PLAYIR London!
This Friday, we're going to be invading the offices of Mozilla London to host a meetup purely on the topic of Monetization, and showing a small live demo of using our tools for real-time A/B split-testing. 
On the 7th & 8th of December we'll be invading the University of East Angelia to showcase our real-time tools for making adventure games.

PLAYIR Around the World!
On November 3rd, our Rockstar Games Design Professor Dave Cooper gave a lecture on the benefits of real-time game design and development, at the Beijing Barcamp.

On September 19th, I presented a lecture on creating a multi-platform real-time game design and development platform, going over things like run-time HTML5 to native translation and a live demo, at onGameStart in Warsaw.

On November 22nd, our open-source hero Alex McIl gave a walkthrough of menu screen designs and the incorporation of in-app purchases for his upcoming flight sim game pack, at a beach in the south of Spain.

Sunday 24 November 2013

Creating an iOS app build with PLAYIR

Hi guys, it's been a long week! From New York for Guardian Activate to Rotterdam for Get in the Ring, our tech has definitely gone international.

But that's not what I'm going to show you in this update.

Now it's time for building your apps on iOS.

The dev section in our website (can be accessed once you sign up for an account) has been updated with the relevant links for where to get all the source code. But, more importantly our open source GitHub repo has been updated with the latest version of our native app code.


Monday 21 October 2013

Meet Alexandra Goddard and her royalty free game designs

Hey guys, thanks again for all your support, advice, pledges and help with our crowd funding campaign so far!

 In this update, meet Alexandra Goddard, an awesome up and coming 3D design and animation guru. She's been working on some amazing game designs for the game template packs. Each pack will feature her wonderful hand made designs, art asset, animations, and of course accompanyingsource code, all royalty free for use to publish as your own games.

Thanks again!

PS. Please support us.

Thursday 10 October 2013

Playir: Real-time motion capture, PS4, Tizen & Upcoming talks

Hey guys, thanks so much for all your support, advice, pledges and help with our crowd funding campaign so far!

On Tuesday, I was at the PS4 Developer's day here in London, and man that piece of kit looks impressive! I talked to a few of the PS4 guys including their VP of R&D, and they all seemed really excited by the idea of creating games in real-time.

Follow @TheSakeDiary, who is a presenting super-hero and game dev guru.
@spadgy_OTA for ace tips and encouragement on how to connect with the Press.
@pete0151 for honest and entertaining tips on partnering with Sony.

Tech Demos

On the tech front, I wanted to share with you some of our experiments with the technology.
Tizen Editor
In this video we show the editor running on a Tizen device and publishing a game onto iOS and Android :D

Live motion capture 
One of our biggest ambitions is to be able to live motion capture yourself into a 3D character which can be played in a 3D multiplayer game.
In this video, we show the editor reading in RGB + depth camera input and converting it live into a 3D mesh. The tech is really early at the moment, needs more filtering, but I hope you can see the potential.

Upcoming Events

Next week (16th October), we'll be at Robert Gordon University in Aberdeen, giving a talk on how the architecture works along with live demos. So if you're around get in touch and I'll send you the final times.
On the 24th October, we'll be at Droidcon's Democamp. Last year we finished runner-up with our Phone Wars game, this year we'll be presenting the live publishing of a game from an Android device onto an iOS device.. hopefully :)
25th we'll be at MozFest, giving free demos and education to anyone we can grab.
30th we'll be in Mozilla's HQ in San Francisco, along with some other great startups, pitching and demoing our proposition. Please come along if you can.
7th November, we'll be at the University of Birmingham, dropping free education too.
We're also hopefully setting up a talk at a 3D design college here in London, to show students how they could easily get their artwork into a live game to help boost their portfolios when applying for jobs.
If you'd like a presentation/talk at your school/uni/event feel free to get in touch, we're more than happy to arrange something.


We're not the best marketeers in the world, so if you know anyone who would be interested in the tools and technology we're building, please let them know. If you know any press who might think this tech is cool, please let them know too.
Again, we have zero experience in writing press releases, so if anyone can help in that department. We'll love you forever too! :D
Finally, my good friend and Unity genius @ynknl, was telling me that the more comments a project gets the more likely it is to be noticed. So drop in some comments on what you'd like to do with this tech? What game would you make?

Thanks again!

Angry Pirates concept
Angry Pirates concept

Featuring LeScare: the scared pirate ghost
Featuring LeScare: the scared pirate ghost

Friday 4 October 2013

We need your help

We need your help

Hi guys, we just launched a crowd funding campaign offering great rewards at discounted prices. Ranging from game pack rewards featuring royalty-free access to source code, 3D models, animations and sounds and server-side multiplayer hosting to build your own 3D multiplayer games from. All the way to game producer rewards where we'll build a game to your specifications and help you publish it on all the app stores.

Please check out our campaign and help us turn our dream of opening up these closed platforms into a reality.

As we're moving out of BETA, we've also rebranded ourselves from to Playir, so make sure you put [email protected] on your spam friendly list :) is now live with much more of a breakdown on our features and events, so be sure to take a look around, and feedback is always welcomed.
I also was recently interviewed by Experimentation Online, where I gave a bit more background on how we're trying to change things, so check that out too.

Graduation Day
We've been working with Mozilla for the past 3 months on developing ourselves into a sustainable business. As part of the programme, we're going to be presenting ourselves along with several other great startups at their offices in San Francisco. So, if you're around on the October 30th, please drop by:

Thanks again,
PS. Follow us on Twitter :)

Saturday 7 September 2013

Campus Party Europe - Getting into 3D and Multiplayer Talk

Check back soon for the second post which will feature videos and notes from the workshop session where we went into how to create assets using tools such as Photoshop, Blender and 3ds Max, as well as a little bit of inspiration and multiplayer programming.

At Campus Party Europe yesterday, I went through some programming excercises on getting into WebGL programming by extending some of the awesome tutorials up on

The source code we working on together can be found here on GitHub.
The presentation slides can be found here.

More info on the open source real-time multi-platform tool that was demonstrated at the event can be found here:

Here's a video tutorial on setting up messaging server using Node.js and Socket.IO
Here's a nice talk from Google I/O describing an open source HTML5 multiplayer game.

Monday 12 August 2013

Open Source Engine, Open Source Fighting Game

Open Source

About two weeks ago, the new hybrid engine which runs the application logic in JavaScript, and forks any performance sensitive/incompatible functions over to native was open sourced (get access here).
This month we'll be getting up documentation on the underlying APIs and figuring out a release strategy for updating the code base, but feel free to have a dig through the codebase. The idea of providing the source code is to allow you to self publish your created games as your own apps on the relevant mobile app stores without the need to launch your game through our Multi app game launcher.

I did a few talks this past month at SIGGRAPH and various meetups, demoing the platform and giving an overview idea on how it works. The guys at Intel were kind enough to send me a video recording of one of the talks which you can check out by clicking the link above.

World of Fighters

We've also just released a little tech demo multiplayer 3d fighting game showing the combined usage of the UI, Maps and Character Editor in action. I'll be documenting how it was done over the next week or so. But in the meantime, you can download the game package file containing all the assets and source code for the game, and use the new import pipeline to make a full clone of the game. See a walkthrough of this process by clicking the link above. But, note that the import process currently takes a few minutes to complete.

What's Next?
The plan for this month is to refresh the website, provide documentation, work on a mobile friendly editor (the tech works for mobiles, but the UI will need to be adjusted to suit).

We're going to be working prominently out of the Barbican Center in London this month, so if you're around drop me a message and I'll happily go through game dev tutorials/advice/support with you.
At the end of the month we'll be going up to Edinburgh to demo the tech at Turing 2013 as part of the Edinburgh fringe festival, so if you're around feel free to drop by.

Recently we joined up with the Mozilla WebFWD accelerator programme who will be helping us turn this project into a sustainable business by helping us exploring various business models, introducing us to their network and pairing us up with some amazing mentors. It's only been two weeks but, I have to say that so far it's been absolutely amazing. We've been lucky enough to be teamed up with Ali Aydar who has been giving us some invaluable lectures and advice on business strategy. So expect some blogging on those topics soon, as the advice we're getting is so damn useful!

We've had a lot of interest from representatives of EA, Activision and Indie game studios for packaging the platform as an add on to an existing game engine such as Unity. For this use case we'd be able to augment the real-time updates across mobile platforms for your own game engine, allowing you to use it for pain points such as adjusting the UI of a game without having to redeploy it on each device, and allowing you to in real-time A/B test the monitization rates of virtual items. If any this sounds like something you'd like to see, please let me know to help push this use case up the schedule.

We'll also be exploring a crowd funding campaign for creating more game templates such as a side scrolling platformer, real-time strategy game, first person shooter, car racer and flight/space simulator. If you have any suggestions on things you'd like to see for that, please let me know.

Ok, enough for now. But seriously! Thanks for your time guys :)

PS. Follow us on TwitterYouTube and Facebook, for free hugs.

*Note, if you run into trouble connecting, please try again later as our servers may have gone down from unexpected demand (#DreamStory).

Thursday 11 July 2013

How to dynamically inject debuggable javascript into Chrome Dev Tools

I love Chrome Dev tools, I love how you can insert breakpoints and step through your source code. However, during my escapades in re-writing js source code on the fly for the realtime coding feature of the 3d multiplayer game maker I'm writing (Multi). I found a few interesting pain points.

For the following examples, please imagine that the code in the variable scriptText has been loaded from a cache.

Using Eval
If you use eval, the injected code will not be shown in Chrome Dev Tools.


var scriptText = "console.log( 'hello' );";
eval( scriptText );


Using script.text
If you create a script element then include the javascript code in the text tag for parsing, again, the script will not be shown in Chrome Dev Tools.


<script type="text/javascript" src="jstest.js"></script>


var head = document.getElementsByTagName( 'head' )[0];
var script = document.createElement( 'script' );
script.type = 'text/javascript';
head.appendChild( script );

var scriptText = "console.log( 'hello' );";
script.text = scriptText;

There is an open bug from 2011 on this issue which I've left a comment towards. So hopefully when this gets fixed, you'll no longer be able to do this trick.

Using Blobs
If you would like to see your code in the sources tab, then you should use the .src field to point to a blob containing your script.

var head = document.getElementsByTagName( 'head' )[0];
var script = document.createElement( 'script' );
script.type = 'text/javascript';
head.appendChild( script );

var scriptText = "console.log( 'hello' );";
script.src = window.URL.createObjectURL( new Blob( [scriptText] ) );

If you would like to get up to nefarious activities, eval and script.text is a great approach. However, if you're trying to generate some dynamic coding environments, then you're going to run into some problems. While using blobs is great to see the injected script, there are a few issues I'm still working through with them. It seems that if you inject a script to override a class you've previously injected, the interpreter will ignore your new script. So what I've ended up doing in the meantime, is using .src for a server side generated url, which works, but requires server-side setup.

If you have any solutions around this problem, I'd love to hear.

Tuesday 9 July 2013

Multi - In-App Purchase API

In mobile games nowadays, players tend to upgrade or customize their character with the spending of gold coins they collect through gameplay or money. I wanted to make it super-easy for you to be able to introduce your own virtual economy to your games by adding an item shop api to the 3d multiplayer games maker - Multi.

If you add the following line of code
 new SceneItemShop( "Get more coins", "topup_1", true, 1000, 10, 10, function (type, itemCode, value)
      alert( type + " " + value );

This screen will appear, asking for either a Facebook like, an in-app purchase or a tweet for payment.

The function SceneItemShop takes in 7 parameters.

Allowing you to customise the in-app purchase id, type, value and the values for tweeting and liking (or completely remove them).

Once a payment is made, the function callback is triggered with the type of payment ("facebook","twitter","in-app"), and the itemCode and value you specified for it.

In my use case for World of Fighters, I used that value to top up the coins balance of the player.
new SceneItemShop( "Get more coins", "topup_1", true, 1000, 10, 10, function (type, itemCode, value)
      WOF.AddCoins( value, "Thanks +" + value );

And that's it, the idea is that if you publish the games via the app stores yourself you can use your own custom in-app purchase ids. Or, if you publish the games with Multi, you can use our generic ids and the revenue once cleared will be funneled to your accounts.

Ash :)

Friday 21 June 2013

World of Fighters - Handling damage over multiplayer

Little update on the progress of World of Fighters. We've now have hit and ko animations for our characters thanks to Alex of apm-designs. So when a punch and kick connects, the player taking damage can react accordingly. I put in some healthbars to show the damage taking progress, and made it so that it's all spawnable and editable using the editor.

For the combat mechanics, the first thing I'm testing out is short and long pressing on the attack buttons. The longer you hold down the more powerful your action is, however, the longer you hold down your attack button, the more you risk your opponent unleashing their attack. Will need to add in a block and attack taxing, so if a punch is blocked, you open yourself up for a counter. But yeah, this should be fun to balance out.

As requested on Twitter, there will be finishing sequences, with the kid that looks nothing like Justin Bieber currently threatening to do a sing-along head-exploding microphone performance as his manoeuvre.

Up next will be the fight sequencing. Round 1, Round 2, Fight, Finish Him, You Win, You Lose.
Watch this space.

Wednesday 19 June 2013

How to install an iOS adhoc build using iTunes

If like me you get asked a lot about how to install a packaged adhoc build by super-awesome business dev folk.
Here's a super-duper-short (<25 seconds) video walkthrough on how to do just that.


Friday 14 June 2013

Developing Multiplayer fight controls in Real-Time

Was just working on the control system for the fighting engine of the upcoming World of Fighters game. And, I have to say, it is so much cool being able to code in real-time. Seriously, I wasted so many years of my life, compiling, linking, deploying, refreshing. Just being able to code and see what happens is amazing.

I'll give you three scenarios I was just working through. Remember, for all these changes, I didn't have to compile/re-deploy any code, I just hit command-s to save and the code just updated in real-time as I was experimenting.

Punching and Kicking
First up was how the action buttons should work. Should they issue an attack as soon as they are pressed or when they're released? I didn't know which one to go with, so I just experimented with the two options until I found one I liked.

Modified the auto-generated .js file from the UI Editor to use onPress rather than onRelease.

Ok for moving it was a more difficult choice. Originally I had it so that the player moved a step towards or away from their opponent if the left or right button was first pressed. However, this required tapping several times in order to get close to your opponent, which is very un-natural compared to how all other fighting games operated.

Move towards your opponent on a right press.

To solve this, I instead marked a flag when the arrow buttons were pressed, then unmarked it when it was released. Then in my update loop, I would move the player accordingly.

The problem with this approach however was that it increased the data being sent across the multiplayer network. So to reduce this packet, I put in a timer, which updated the key press state once every x number of milliseconds. With x being a value I experimented with until I was happy with the response time.

So rather than the client telling the server that the right or left arrow was pressed every update loop, it instead sent out the message every 250ms.

I had a few issues when setting up the camera for the fight. I wanted to have it focus in-between the two players fighting, however I had a bug in my calculation. So first up to solve this, again in real-time, I inserted a marker in the map, and moved it to point at different parts of my calculation, until I visually saw the part of the maths that was incorrect.

Once that was solved, I then played around with the camera distance values depending on how close or far away the players were from each other.

A multiplier of 2.5 seemed about right.

Cool huh?
I remember watching WWDC ten few years ago when Steve Jobs introduced the new linker improvements for XCode.

Well now ten years later, you can not only get rid of linking, but you pretty much zero-everything apart from debugging out... damn you debugging.
Well at least with zero-stop/compile/run, debugging is a lot improved as it totally reduces the need to having to re-setup scenarios for the problem states to occur. Which is doubly awesome for multiplayer gaming, as those problem states are so much harder to set up.

Note: we're still currently in beta, but it's public so you're more than welcome to give our tools a go and  start modifying your code/ui/design or assets in real-time :)

Thursday 13 June 2013

World of Fighters - Introducing the Fight UI

I love Street Fighter, it's been one of my most favourite games of all time. I remember playing at the arcades, actually once I spent £20 in one go trying to defeat my school friend Mewael, who was a Street Fighting god at the arcades. £20 might not seem like much nowadays, but back when I was a kid, it was about two months pocket money.

Anyway, so as we're now trying to get our easy-to-use real-time multi-platform games maker feature complete. I have the opportunity to actually make a little street fighter clone for primarily web and mobile platforms!

Introducing... World of Fighters
I've totally spaced out thinking of all the crazy cool stuff that should be done for this game, but I'm going to try to keep it as simple as possible to get started. The concept is a fighting game that's mobile first and fully MMO'd up.

You start the game, select a character to play with, then walk around an arena looking for opponents.

Once you find someone to play (either another online combatant or a pesky AI), you tap on the character, and then you'll be zoomed into fighting mode, where you get to punch and kick their faces.

Previously, I made mobile games using code only, which meant I had to imagine how things worked out in my head. However, for this game, I got to use the game maker, which meant I could design the fight UI and arena levels visually. As well as update the code I was working and in real-time see how it affected the gameplay in real-time.

So far, the intro screens in, the character select screens in, you can walk around, and once you challenge an opponent the UI shifts into fighting mode.

So next up is introducing the health bars and implementing in the fighting engine.
Excited? Well check out my these awesome designs...

Take it easy :)

Wednesday 12 June 2013

Disable JavaScript caching for development in Chrome and other browsers

If like me you're constantly battling with Chrome Dev Tools to respect your wish of disabling the caching of JavaScript files.

PHP Solution
Just add ?<php echo time(); ?> to the end of your script's src parameter.
?<?php echo time(); ?>
<script type="text/javascript" src="../js/external/gl-matrix.js?<?php echo time(); ?>"></script>
This'll add the current time to your script call, and force Chrome to always respect your wish of disabling the caching of JavaScript files.

It's also better than using the Chrome Dev Tools 'disable cache' feature, because it'll always work, and it'll allow the caching of images to still occur.

Note: Your breakpoints will be forgotten between sessions, which is a pain.

Apache Config Solution
Just add a cache-control header to .js files being served in your httpd.conf file.
<FilesMatch ".(js)$">
Header set Cache-Control "no-cache"
Note: Less guaranteed to work than the PHP solution, but keeps your breakpoints.

If you have a better solution, please let me know.

Saturday 8 June 2013

Android Dev on your Windows Phone

One of the big features I've been working on with the Multi Editor is to make sure it runs across mobile devices. What means you can edit the javascript, UI, animations, 3d models and more all from iOS, Android, WP8 and HTML5 compatible devices.

Which means you can actually make, edit and publish games from different mobile phones.

i.e. Here I'm modifying the UI being displayed on an Android device with my Windows Phone..

Pretty cool?

Thursday 6 June 2013

Making UI that goes punch and kick

Hey guys, over the past 30 days, we've added two cool new features to the realtime multi-platform editing experience.

With the UI Editor you can draw new UI screens, resize the buttons, assign images and javascript function calls to them all inside a visual interface that gets syncrhonized live as you edit it.

With the Animation editor, you can drag and drop in FBX animation files and visually debug any issues.

Putting this stuff together with the map and javascript editor is the plan for next week. I'm working on a little MMO street fighter style tech demo, that'll use the UI editor for menu screens which join a map created by the Map Editor. The map will use another UI created from the UI Editor which provides buttons that let you to fight other players by calling animations made from the Character Editor. It'll be awesome honest!

Other things we did in May included going to China for the first time to present at GMIC. Went to SF to present at Tizen DevCon, and presented a fun pitch at Lion's Cage.
This month we're going to be giving a talk at the Apps for Goods Awards ceremony, presenting our tech at Startup Stories V and of course launching our awesome documentation and getting started sections.

As always, if you have any feedback, suggestions, abuse, anything really, feel free to contact me.

Thanks for the support!

PS. Follow us on TwitterYouTube and Facebook, for free hugs.
PPS. Recently had a request for helping make a 3D fps game using the tech, which is in progress. So watch this space.

*Note, if you run into trouble connecting, please try again later as our servers may have gone down from unexpected demand.