PLAYHACK with PlayJam: Winners

It’s finally over. The games were completed a few weeks ago and 6 judges have toiled over the games and struggled to grade and rate them. But we have a decision and boy it was close…

Over the course of 6 weeks, over 150 teams forked our original project and worked their little gamedev butts off to finish the games in time. In the end we had over 30 playable entries – more than enough to keep our judges busy.


First, we want to send a big Thank You to PlayJam our partner and sponsor for this PLAYHACK.

PlayJam is a leading game publisher from the UK currently launching a new publishing/gaming platform. Winners of this PLAYHACK automatically qualify for launch and publication on this new platform and PlayJam representatives will be in touch. PlayJam is constantly on the look out for new and exciting HTML5 games, so please don’t hesitate to contact them for details, funding or even just advice. (

Now, lets get to the results!

First Place – £2000


Orbital Survival

Congratulations to el-pepi who takes the grand prize with this fast paced orbital shooter. Defend your tiny moon from incoming UFOs and slimy blobs using only the upgradable gun on your robot arm. There’s nothing more terrifying than seeing a rogue 5-shot-burst looping over the horizon back towards you. Our judges said: “Simple but fun and keeps you coming back for more”

Second Place – £1000


Galaxies: Combat

Congrats to dstalk and maungers who take (a very close) second place. An arena style shoot-em-up. Take on wave after wave of increasingly tough spaceships and earn money to upgrade your UFO with new weapons. Displaying impressive polish from the explosions to the upgrade tree and the UI. Our judges said: “nice physics, intuitive controls”.

Third Place – £500


Space Pirates

An impressive amount of work in 6 weeks by whydoidoit nabbed him third place. Bomberman meets Pac-man in this spherical dot collector game. Oh and networked multiplayer too! Our judges said: “interesting gameplay mix, nice use of the engine”

Special Mentions

A few special mentions to games that caught the judges attention but didn’t quite make the top three. Imperial’s Secret Plan is a survival horror game. Our judges said: “Very nice idea – a superbly atmospheric puzzle adventure game.”. Into Deep Space is gravity slingshot game. Our judges said: “Beautiful graphics, flawed by some technical shortcomings”. Robo Racer is a classic racing game. Our judges said: “Good solid entry”.

Play All Entries

We’ve put together a special page which has every “game” that entered.

Go and try them out

Don’t forget to show the creators some love and star the projects you like!

PLAYHACK with ARM: Chromebook Winner

Last month we worked with ARM to launch our first Prize PLAYHACK. They provided the great prize of a Samsung Chromebook 2 13.3″.

70 developers forked the starter project and slaved over the coding for the last month. ARM and PlayCanvas spent a tough few hours playing all the games and we’ve picked out a winner.

Space Buggy


This month’s PLAYHACK winner is Space Buggy a compulsive driving game. Which features tracks generated from stock charts. The aim is to safely reach the end of the track without over-turning or running out of fuel.

PlayCanvas user lmao is already a previous PLAYHACK winner and this month his determination and hard-work has paid off. Space Buggy is a polished and addictive stunt game. Lmao makes great use of the Buggy model that we gave away for the competition and also used simple textures and boxes to generate tracks creating simple yet compelling graphics. Nice touches include the engine start and headlights on the car, the “jukebox” playing different tracks and the integration of Google Play Services for leaderboards.

See it in action:

Space Buggy animation


Massive congratulations to lmao, your Chromebook will be winging it’s way over to you shortly.

We want to make a couple of special mentions to alphacodemonkey for his addictive high-score chaser Boarddrive and lizzip for dinosaur escape game Desperately Fleeing Susan

Optimized for ARM Mali

We’ve been working hard with ARM to make sure that PlayCanvas runs really well on their Mali mobile GPUs. You’ll see this in the Seemore demo we developed in association with ARM.

Screen Shot 2015-04-02 at 15.49.43

Find out more at


PLAYHACK March – Win a Chromebook 2

This month we have an extra special PLAYHACK, our monthly game jam, to announce. We’ve teamed up with ARM, to bring you both a excellent new 3D Model to start your game with, but also an excellent prize.



This month the author of our favorite PLAYHACK game will walk away with a Chromebook 2, the ARM powered laptop that’s perfect for game development with PlayCanvas!

Here are the specs:

Samsung Chromebook 2 13.3”

  • Samsung Exynos 5 Octa (5800)
  • ARM® Mali™-T628 MP6 GPU
  • ARM Cortex®-A15 MP4 and Cortex-A7 MP4 CPUs
  • ARM big.LITTLE™ processing

To win this lovely bit of kit we want you to build a game, and to help you build that game ARM has supplied us with this beautiful Buggy Model.


We’ve set up the vehicle physics for you (but feel free to re-write that if you like). All you need to do is come up with an interesting idea for a game (Racing, Stunt driving, Buggy Football!) and code it up. You don’t even need to make the buggy the center of attention, as long as it’s in your scene you’re good.

Short on ideas? Check out the forum thread to join the idea discussion.


Entering is simple. Visit the PLAYHACK March project and click the FORK button. This creates a new project for you to build your game in. At the end of the month (Midnight on the 31st March to be precise) we’ll check all the public projects that have been forked from the original and work with ARM to select a winner.

Style points (these don’t count towards winning) will be awarded for posting updates to your Devlog throughout the project and sharing screenshots, daily builds and updates through PlayCanvas, Twitter, Facebook and anywhere else.

What are you waiting for?




Terms and Conditions

These Terms defined below apply to the PLAYHACK March Competition.

  1. By entering the Competition, entrants agree to be bound by the Terms. In addition, all entrants are required to comply with the PlayCanvas Terms of Use.
  2. PlayCanvas reserves the right to cancel or amend Competitions or the Terms at its sole discretion.
  3. In the event of any dispute regarding the Terms, conduct, results and all other matters relating to a Competition, the decision of PlayCanvas shall be final and no correspondence or discussion shall be entered into.
  4. PlayCanvas reserves the right to disqualify any entrant if it has reasonable grounds to believe the entrant is not eligible or has otherwise breached any of the Terms.
  5. PlayCanvas does not guarantee to use any entry. PlayCanvas may also, in appropriate circumstances, and at its sole discretion, reject, edit, remove or disable access to entries that it considers may be legally or otherwise problematic.
  6. By entering the Competition entrants are also confirming that they own the rights to or have permission for all work submitted and any violation of this disqualifies them from the competition.
  7. By entering the Competition entrants give PlayCanvas and ARM permission to use your game and details for any marketing purposes.
  8. The competition Start Date is March 1st, 2015.
  9. The competition Closing Date is March 31st, 2015.
  10. All Entries must be created using PlayCanvas and final games must be published and hosted on the PlayCanvas site.
  11. Judging will consist of playing the published primary app in the submitted project.
  12. The following prizes will be awarded based on the set criteria for the competition: A Samsung Chromebook 2.
  13. If the entry was made by a team, the person who owns the account used for submission is eligible for the prize.
  14. PlayCanvas and ARM employees are not eligible to enter the competition.
  15. All entrants under the age of 18 must have their parents’ permission before any prizes are awarded.
  16. There is no limit to the number of entries that an entrant can submit.
  17. Each game can only be entered once.
  18. In order to participate in the competition entries must:
    • Be created using the online PlayCanvas platform and game engine.
    • Be a fork of the original PLAYHACK March project.
    • Include and use the Buggy 3D Model in the game.
    • Have a published primary app.
  19. Winners will be notified by PlayCanvas on or before Friday, April 5th, 2015.
  20. Competition winners will be announced via the PlayCanvas website.

Build a game for a loved one this month.

Our most popular PLAYHACK ever finishes today. Last month’s gem challenge sparked your creativity and led to over 30 forks of the project.

Featured Winner

yet another gem

This month our favourite PLAYHACK game is Yet Another Gems by lmao. A great 3D twist on a classic format. We were most impressed by the polish of the game. From the full menu and UI, to the the inclusion of online leaderboards using Google Play Services, this is a complete game. An impressive achievement for only one month’s development.


Here’s a selection of some of the games made this month. Special mention to runninglvlan who only started making his game Gem Labyrinth 12 days ago, but already has an addictive maze running game (my record is 130 points in 47 seconds)

Go watch and star the game projects for Gem Labyrinth and Yet Another Gems.

Make your loved one a game


With the end of one PLAYHACK must come the start of a new one. February 14th is St Valentine’s Day, so this month’s theme is to give you the chance to create the ultimate Valentine’s Day gift. Make your loved one their own special game.

We’re giving you 20 hearts of all shapes and sizes, and not only that, there is a loveable furry surprise in the pack too.

Valentine’s Day is only 2 weeks away, so don’t wait around. If you miss the 14th though, don’t worry, our deadline is the end of the month. And we’ll still love you whenever you finish.

How does it work?

  1. Fork this month’s project into your account
  2. Use 3D models from the project to build a new game.
  3. Post to your Devlog about your game throughout the month
  4. At the end of the month we’ll look at all the forks
  5. We’ll pick our favorite and feature it on the explore page

As there are so many models this month, feel free to pick and choose a few that you need.


The process of judging is as broad as the rules. You won’t be marked on the strength of code, graphics of theme, the winning game will be the game that we enjoy the most, simple.

What will you build?

This month we want to start up a discussion about what you can build.

We’ve got some ideas about what games suit the the theme and what would work best as a unique and personal gift for a loved one. But what do you think? Join the discussion in the forum.

Enough from us though.




We love you!

PLAYHACK – We challenge you to a jewel!


We were lucky enough to see some amazing festive entries in PLAYHACK December, but January isn’t really known for a lot. So we have put our brains together to give you some sparkly assets to play with.

How does it work?

PLAYHACK starts today! We’ll provide you with a 3D model and your mission is to turn it into a game. The only rule: you must use the model somewhere in your game.

It works like this:

  • Fork this month’s project into your account
  • Use the project and it’s contents to build a new game.
  • Post to your devlog about your game throughout the month
  • At the end of the month we’ll look through all the projects that were forked from the original.
  • We’ll pick our favorite and feature it on the front page of PlayCanvas for everyone to see.

The Models


4 Shiny Gems.

For all you magpies out there, forking our PLAYHACK project this month will give you access to the ‘precious’ assets above. Although there is a chance you’ll download these jewels, turn into Gollum and not get any where with your game, we are hoping that you’ll take inspiration from many industry defining games.

For instance, platform action series Spyro made great use of jewels in the late 90’s and more recently Bejeweled pushed gems into a great flash puzzle format.



Puzzle game, platform game, physics game? Any game, any style, the choice is yours.


The process of judging will be as broad as the rules. You won’t be marked on the strength of code, graphics of theme, the winning game will be the project that we enjoy the most, simple.

We will be holding things down here at HQ during the month long Game Jam by sharing some of the best screen shots, Devlog entries and general updates of your progress.

Featured Winner

On the 1st of February we will judge your projects and our favourite will be featured on the PlayCanvas landing page

Last Month

With Side Scrolling Santa’s, Youtube leaks, Medieval houses and plenty of obstacles, last month’s winter extraordinaire was arguably our favourite PLAYHACK so far.


Our favourite entry is ‘Five For Christmas‘ by felladrin.

Making great use of light and particles, felladrin created a “topdown survival game where the player (Santa) had his location revealed and all the kids are now trying to reach him. The player must throw gifts for the children, so that they don’t delay the delivery of gifts this Christmas”. Go visit the game project and give it a star and leave a comment.


PLAYHACK December – Collecting Presents

PLAYHACK is our fun monthly game building session. Throughout the month I’ll be posting tips and tricks to help you get a game made by the end of the month. Don’t forget, these are just examples. You can make any game you like. Read more about this month’s PLAYHACK.


We’ll be following on from last time’s tutorial this time, so make sure you’ve followed that one before attempting this! As always, you can check out all the up to date code in this project.

Use W and S to move the sleigh.

In this tutorial, we’re going to do two things – delete the presents as they go off-screen, and find out when the presents collide with Santa. How are we going to do all this? The answer: Trigger Volumes!

Adding an Offscreen Trigger Volume

At the moment, when presents go offscreen, they just keep going on and on forever and ever. We don’t need the presents anymore after they’ve gone offscreen, so it doesn’t hurt (and may even help) us if we delete them. So, we need a way to test when a present has left the screen. We can do that with a Trigger Volume placed just offscreen.



You may be thinking – what is a trigger volume?! A trigger volume is simply an entity with a collision component added to it (but without a rigidbody – we’ll get to that later). They allow us to test when rigidbodies enter and leave them – which is perfect for testing when a present goes off-screen.

So, to add the off-screen trigger volume, simply right click on “Santa” in the Pack Explorer and add a new Entity. I called mine “offscreen”. Then, add a collision component to your new offscreen entity – a small blue cube should appear in the editor. Now, all we need to do is move it off-screen, and resize it so it catches all the presents. You can move it with the translate tool, and to make it big enough, you can edit the “half-extents” of the collision component until it covers the whole of the edge of the camera.


Now, let’s write some code to delete the presents that come off-screen. Add a script component to the offscreen entity, and add a new script – I called the script “offscreen.js” (creative name, I know).

Whenever a rigidbody enters the trigger volume, the collision component will fire an event that we can listen to. Or, in simple terms, we can tell the collision component to call a specific function any time it comes into contact with a rigidbody. Put the following code in the initialize function of your new script:

    this.entity.collision.on('triggerenter', this.onTriggerEnter, this);

This tells our collision component that when the “triggerenter” event happens (i.e. something enters the trigger volume), call the function “onTriggerEnter“, in the scope of this (so we have access to all our variables and functions). Let’s write that function now:

    onTriggerEnter: function (other) {

Pretty simple huh? The onTriggerEnter function gets called with one argument, which is the entity it collided with. We simply destroy that entity, and it’s gone!

Setting up the present



If we run the game now though, the presents still won’t get deleted even if they go off-screen! That’s because trigger volumes only check for collisions with rigidbodies, so we’ll need to add some more components to the present. We need to add a collision component and a kinematic rigidbody component. Together, these will allow us to check when the present passes through our trigger volumes.

So, add those components to the Gift. Make sure you change the “type” attribute of the rigidbody component to Kinematic – we don’t want it to be Static, because then we couldn’t move the presents, and we don’t need it to be Dynamic because then our present would get affected by gravity and physics and we don’t need that. Kinematic allows us to move our present in code, but not have it affected by physics. You can fiddle around with the half extents of the collision box until it fits around the present too.

You’ll also notice the collision box isn’t centred on the present model. To fix this, you can removed the model component from Gift and add a model entity child instead, which you can then translate without affecting the position of the collision box.

One last thing – it’s very important that you uncheck the Enabled attribute of the Gift. If the original gift goes off-screen and collides with the off-screen Trigger Volume, it will get deleted, and we won’t be able to make any copies of it. We can make sure that never happens by disabling the present – now the original present won’t do anything, but it will still be there for us to clone and make more presents.

If you test the game now, the presents should be getting deleted after they go off-screen! You can test that it’s actually working by moving the off-screen Trigger Volume on-screen a bit – the presents should then disappear just before they go off-screen.

Santa Trigger Volume

But the present going offscreen isn’t the only thing we want to check for – we also need to check when it collides with Santa! Luckily, this is very similar to the offscreen trigger volume.

Like before, we need to add a collision component – so right click on Santa and add one. There’s a clever thing we can do here: instead of messing around with the half-extends of the collision box, trying to get it to match Santa, we can simply tell the collision component to match the size and shape of the Santa Model. Change the type attribute of the collision component to Mesh, and select the Santa_sleigh model for the Asset. Now, the collision will only check for exactly the right size of Santa.

(Wondering why we can’t use a Mesh for the collision component of Gift? Checking for collisions between two Meshes is a lot more computationally expensive compared to comparing collisions with simple geometry. Therefore, checking for a collision between two Meshes isn’t allowed, and since our present is basically a cube, we’re using a cube for the collision volume of the present.)

Now we just need to add a small amount of code to Santa so we know when presents collide with him.

    this.entity.collision.on('triggerenter', this.onTriggerEnter, this);

Put that line in the santa_controller.js script – it does exactly the same thing as before. We’re going to write a simple onTriggerEnter function for now, and actually write the functionality we want next time.

    onTriggerEnter:function(other) {
        if( == "Gift") {
            //we'll be adding score incrementation and other stuff here...

All we’re doing here at the moment is the same as the offscreen trigger volume – destroying the present when it comes into contact with Santa.

And that’s it for this time! Next time we’ll be looking at adding a GUI to the game so you can see how many presents you’ve collected!

PLAYHACK December – Creating Presents

PLAYHACK is our fun monthly game building session. Throughout the month I’ll be posting tips and tricks to help you get a game made by the end of the month. Don’t forget, these are just examples. You can make any game you like. Read more about this month’s PLAYHACK.


We’ll be following on from last time’s tutorial this time, so make sure you’ve followed that one before attempting this!


PLAYHACK December: Jolly Santa


If spending part of your December making a festively themed game doesn’t get you in the mood for the Christmas season, we don’t know what will.

Its December 2014 and before the year is out we have a festive game jam for you to test your skills in.

How does it work?

PLAYHACK starts today! We’ll provide you with a 3D model and your mission is to turn it into a game. The only rule: you must use the model somewhere in your game.

It works like this:

  1. Fork this month’s project into your account
  2. Use the project and it’s contents to build a new game.
  3. Post to your devlog about your game throughout the month
  4. At the end of the month we’ll look through all the projects that were forked from the original. 
  5. We’ll pick our favorite and feature it on the front page of PlayCanvas for everyone to see.

The Model


We are giving you the reins (get it?), to take the game wherever you want. Well almost. Incorporating the sack and present is optional, but you must use the Jolly Santa model (complete with sleigh and Rudolph).

Whether its an endless side scroller or an intense racing game, you can use this month’s model to create any game that you like.

Look out for another series of tutorial blog posts coming soon to give you some ideas coming soon.


The process of judging will be as broad as the rules. You won’t be marked on the strength of code, graphics or theme, the winning game will be the project that we enjoy the most. Simple.

We will be holding things down here at HQ during the month long jam by sharing some of the best screen shots, DevLog entries and general updates of your progress.

Featured Winner

On the 1st of January we will judge your projects and our favourite will be featured on the PlayCanvas landing page!

Last month's winning game from LizziP and Alex

SRL by lizzip and auroraimortalis

Last Month

With ramps, barrels, hyper speed turrets and explosions, last month’s PlayHack was crazy (in the best way possible).

Our favourite entry is SRL by PlayCanvas users lizzip and auroraimortalis, whose sci-fi maze game really impressed us using security camera’s, laser doors and the Hover Tank acting as the villain. Amazing!

Honourable mentions go to PlayCanvas users Crefossus and Daniel Petterson for their games, but thank you to everyone who took part. We can’t wait to see what you can come up with this month!


Click the giant button below to begin your project!



PLAYHACK November – Turrets and shooting bullets

As this is our first PLAYHACK we thought it would be sensible to start with a few tips and tutorials to get you going. We’ll follow up with more of these throughout the week. Don’t forget, these are just examples. You can make any game you like.


Rotating Turret

In the previous blog posts we set up keyboard controls to move the tank by apply forces to the rigidbody. Now we going to add separate controls to rotate the tanks turret. You try this project for yourself by running this pack.

initialize: function () {
    this.turret = this.entity.findByName("Tank_gun_turret");
    this.bullet = context.root.findByName("Bullet");
    this.barrel = context.root.findByName("Barrel");

update: function (dt) {
    // Rotate the turret left and right using A and D
    if (context.keyboard.isPressed(pc.input.KEY_A)) {
        this.turret.rotate(0, this.speed * dt, 0);
    } else if(context.keyboard.isPressed(pc.input.KEY_D)) {
        this.turret.rotate(0, -this.speed * dt, 0);
    if (context.keyboard.wasPressed(pc.input.KEY_S)) {

This is the code in turretcontrols.js. It’s very simple. In the initialize function we find the Entity called Tank_gun_turret. This Entity is the separate model for the gun turret. Then each frame we check to see if the A or D key is pressed and we rotate the turret to the left or right using the rotate() method on the Entity.

Shooting Bullets

shoot: function () {
    var bullet = this.bullet.clone();
    bullet.enabled = true;
    this.force = new pc.Vec3();

Take a look at the shoot() function above. This is called when the player presses the S key. It introduces a few different concepts:


The clone() method on Entities creates a complete copy of the Entity and it’s components. When you clone an Entity it is created but not added into the scene hierarchy so you have to call the addChild() method and add it to the parent of your choice. In this case, we’re just adding it to the root.

Enabling and Disabling Entities

The bullet Entity we are cloning from is disabled in the Designer because we don’t want this extra bullet in the scene. After we have cloned the Entity we want to enabled the bullet which means that the model component is enabled (it start’s rendering) and the rigidbody is enabled (it starts simulating/colliding).

To fire the bullet, we clone it, add it into the hierarchy and set it’s position to the location of the gun barrel entity. After we’ve enabled the bullet, we apply an impulse to kick it off in the direction of the turret.

Target Practice


Finally we’ve just added some boxes for target practice. The boxes are simply Entities with a dynamic rigidbody and a collision component. Don’t forget you try this project for yourself by running this pack.


PLAYHACK is our monthly game jam. We’ll give you a starting point and you have a month to build a game. The winner is featured on our frontpage and wins fame and glory everlasting!

Not started work on your PLAYHACK game yet? What are you waiting for go fork this project!