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!