Coming Soon: KiwiJS v1.2.0

We’re excited to announce that KiwiJS v1.2.0 is nearing completion. This version makes it easier to create games with awesome new features:

  • ECS (Entity Component System): Automatically update components on your game entities. Don’t waste time writing endless loops and checks in your state update – put components on objects and sit back.
  • Clock enhancements: Warp time to your pleasing with deeper access to clocks. Use helper methods to run timer events with a single command; pause a game clock and keep a UI clock running; and more!
  • Kiwi.log debug system: No more “console.log” calls clogging up your browser during development. Our powerful debug system supports muting, automatic tags, log recording, and more. If you develop with KiwiJS, Kiwi.log will make your life better – it’s that simple.
  • Battle-hardened performance optimization: We’ve been making games and we want them to go as fast as possible. Through extensive profiling we’ve picked out key upgrades to make games run faster on low-end devices where every processor cycle counts.
  • Plus a trailer load of enhancements and fixes to make your life better!

And that’s not all; we’ll have some extra surprises at launch.

KiwiJS has always been fast and powerful, but these upgrades shift into a new world of cutting-edge architecture. We’re looking forward to showing you just how efficient you can be.

Watch this space.

Rigid Body Physics System

Physics! A fantastic and awfully complex feature which a lot of games use. And it’s just been made easier in Kiwi.

Today we are happy to announce the ChipmunkPhysics Plugin for KiwiJS. This latest plugin brings the processes of Chipmunk and Kiwi together, allowing you to create games which use the Chipmunk2D rigid body physics library.

Thanks to the fabulous people of Chipmunk2D and those who made a JavaScript port of it. Without them this plugin would not be possible.

Break-apart Kiwi: Example

  • Toggle the debug overlay with the button in the top left corner.
  • Click and drag a shape to move it.
  • Click on empty space in the center of the game to apply gravity.

You can obtain a copy of the plugin from Github. Further information can be found in the tutorial section.

We plan to add more features to this plugin in the future, such as Tilemap support, the possibilities of defining shapes in the Texture Atlas, and more as we think of them. So get in contact if you come up with a idea or would like to help out!

Let us know what you think!

Two new HTML5 Game Blueprints

Hi team! Today I am pleased to announce the addition of two new HTML5 Game Blueprints. If you’re wondering how make Candy Crush or how to make Bejeweled, we’ve got a Blueprint for that! If you’re wondering how to make your own Dwarf Fortress or Nethack game game we’ve got a Blueprint for that too! 

ZOMG! Downloads NOW please!

We hope you enjoy these. If you find that we’ve helped make your life as a game developer even a little bit easier we’d love to know about it and hear your stories. If you fancy contributing or getting involved with our community please take a look around our Github repository and chime on in.

Kiwi.JS 0.6.1 now out!

Kiwi.JS 0.6.1 has now been released! This release is focused primarily on bug fixes but also contains updates to the Keyboard section of the engine, which was needing a bit of TLC.

So have a look list of changes below, and leave a comment on what you think or would like to see in the next version of Kiwi :)

Bug Fixes and changes

  • Audio that cannot be decoded/isn’t supported by the browser are no longer loaded by default. Done so that games no longer crash when an audio piece could not load.
  • TextField GameObject no longer generates a image of the text when rendering.
  • Keys
    • Duration property has been implemented. Returns the number of milliseconds a key has been held down for.
    • Repeat property has been implemented. Contains the number of times the ‘onkeydown’ event has fired for that Key. Is reset with each subsequent release/press.
    • JustReleased/JustPressed methods have been implemented.
    • New property ‘preventDefault’ added. This boolean tells the key whether to ‘prevent’ any default functionality for that key or not when it is pressed/released.
  • Keyboard
    • A new signal named ‘onKeyDownOnce’ has been added. This signal only dispatches a single event with each key-press, which is the first time a key has been pressed but not any subsequent events if the key is held.
    • JustPressed/JustReleased methods have been implemented.
    • New parameter (preventDefault) added to ‘addKey’ method. See the new property ‘preventDefault’ for more information.

Known Issues

The WebGL/Cocoon combination is not currently stable and some visual errors may occur. This is due to internal coocoon issues and we’re working with Ludei to improve stability.

Using Tiled by Kiwi.JS

When it comes to developing Games, Tilemaps are one of the more common item you will see. They are featured in many different styles of games such as Platformers, Role Playing Games (and much more) so when it came to developing Kiwi, having a robust Tilemap System was a must.

Tiled: What is it?

Tiled is free, flexible map editor that is specifically designed for creating Tilemaps in a fast and easy manner. Using it you can create Tilemaps of any width/height, that use tiles of any width/height as well as add custom properties to a number of different items, plus much much more.

Safe to say it makes developing TileMaps, a much easier, painless job.

Why should I use Tiled?

Now, why should you use it? Well, when it comes to making a TileMap without a mapeditor it can often be laborious, time consuming and just painful.

Not being able to see exactly how it will look at the end and then hoping that you placed the tile in the right place is something that just doesn’t give us the nicest feeling. Plus then coming back to editing the map at a later date All these are problems we face when creating it without a map editor.

And so to help you with those issues we have use the Tiled format for our JSON.

Where to start using Tiled or Kiwi?

Well to start using Tiled you we recommend you visit the Tiled website and download a copy there. We also have a some new tutorials on using Tiled with Kiwi.

Tiled Intergation Notes:

Below is a list of key points of difference in the two systems, so you should consider the following when creating your map in Tiled.

Orientations Supported: Currently we only have the Orthogonal Orientation supported for Tilemaps. We would like to (and will) in the future add in support for Isometric Tiles, but felt they are not completely needed for the first version.

Object/Image Layers: Currently are not supported, we do have a space for them to be implemented and do have plans for them in the future.

Properties: All properties that you added through Tiled, either to types of tiles, layers or the map itself are currently placed onto a properties attribute on their respective Kiwi Object. You can read/write and do what ever you want with them but currently there are no presets to do with them.

Multiple Tilesets?

Now I know in Tiled you can use multiple Tilesets per layer, which is cool, but when we were developing the new Tilemap system we made the decision not to allow multiple tilesets per layer. Now the reason why is simple, performance. Now there are whole list of optimisations/reasons behind it, but suffice to say that in WebGL having multiple textures is less optimal in comparison to having a single one with everything on it.

BUT, you can use a different tileset for each TileMapLayer. All you have to do is change the atlas property of a tilemaplayer.

LEAP Motion coming to Kiwi.JS!


Hey guys! We’ve been working on a really cool new Kiwi.JS Plugin that integrates the LEAP Motion Controller into Kiwi.JS games. This means the games that you are making right now will soon have the option to include motion control interface. So much more fun awaits!!

Right now we have most of the functionality from the LEAP Motion API integrated and we are working to get the rest of the API integrated as quickly as possible.

The following examples should serve to illustrate just some of the things that the LEAP Controller Plugin for Kiwi.JS comes with and what you’ll be able to do. How you use it will come down to just your imagination.

This first game is a fun demonstration of what you could use the LEAP Controller for in an actual game. The purpose of the game is to dodge the missiles that are coming from the right hand side of the screen. We are planning on using this game when writing the tutorial on how to use the Kiwi.JS LEAP Controller Plugin.


This second game is just a showcasing of how the LEAP Motion Controller works. The green circle is controlled with the players’ hand and near the hand there are some red circles showing the position of the hands fingers.


The third game is also a showcase of ‘touch’ properties of a finger. This can be used for many things such as drawing and even pressing buttons! The example below shows the position of a finger indicated by a blue circle and how close it is to the ‘touch zone’ of the finger by size of its circle.


We are still working to improve this Plugin, over time we will add new features and we are fully committed to maintaining this code so that you don’t have to. Right now it’s working fine and it’s darn pretty cool too, we hope you guys enjoy it! If you have any ideas for a 2D game, or you want to collaborate, or suggest ideas in general please let us know in the comments below.

New Plugin: Inventory Manager

Have you been struggling to keep track of all the items in your world or what weapons your player is carrying at any time?

Now we have a helpful new plugin just for that. With the InventoryManager plugin you can add easy to manage inventories to your characters and worlds. Inventories keep track of an infinite number of items including the count, description and any custom variables.

To learn how to utilize the plugin check out our new tutorial on how to use it:

Using the Inventory Plugin Tutorial

Thanks and happy developing :)

New Plugin: Quest Manager

Have you been looking for a way to create custom quests for your game?

Now we have a helpful new plugin just for that. With the QuestManager plugin you can create easy to manage quests for your game. Take your games to the next level today.

To learn how to utilize the plugin check out our new tutorial on how to use it:

Thanks and happy developing :)

Kiwi.js 0.5.3 Release

A new update for Kiwi has arrived!

Just before the Holiday’s start and everybody head’s off for celebrations involving eating, drinking and being merry, version 0.5.3 of Kiwi.js has arrived! This release is focused mainly on increasing the stability of currently existing features and preparing, optimizing and making the WebGL side of Kiwi more awesome. So we have been hard at work finding and fixing as many bug’s as we can, to make sure that it doesn’t impede anything in the future ;)

Bug Fixes and Changes

Audio Bug Fixed

A bug has been fixed where previously when you muted the Audio Manager, any new Audio objects, using the audio tag implementation, would still be heard.

Adding Child Before and After

When using the addChildBefore and addChildAfter method’s the Parent was never set on the child being added. This could prevent you from ‘destroying’ those GameObjects and it would cause an error.

Arcade Physics Update

The separation code (which calculates if a collision has occurred) is now calculating based off an objects hitbox.

Nicer Error Messages!

Sprite/Static Images now produce ‘non’ game breaking and nicer error messages when a TextureAtlas passed to them doesn’t exist. Previous it would stop the game from running.

Games without States

Games can now be created without a State needing to be passed, thus enabling you to preparing game loop before hand.

Box Component

  • You can now retrieve the hitbox offsets.
  • There are now ‘two’ new ‘read only’ rectangles
    • worldHitbox – A transformed hitbox but using the ‘world’ coordinates of a object instead of local coordinates.
    • worldBounds – A transformed bounds but using the ‘world’ coordinates of a object instead of local coordinates.

Input / Arcade Physics

Due to the Box Component updates these components are now updated to use the worldHitbox where previously they used the hitbox with local coordinates.

API Documentation

The namespace attribute has now been added to classes and modules. This mean’s that the yuidoc’s compilation we use to generate them is smarter, so classes with the same class name but inside of different namespaces don’t override one another in the doc’s


WebGL is under intensive development at the moment! A large part of the GL rendering has been refactored. Refactoring is still underway to allow multiple renderer types, using any number of shaders, for custom game objects such as tilemaps, particles, bitmap text, e.t.c. Currently only Sprites and Static Images are supported.

  • Major change to texture management, including dynamic texture memory management (important for mobile and low spec devices).
  • Many optimisations have occured.
  • Many small changes.
  • Many bugfixes.
  • Tested successfully via cocoon on Android devices, Ipad2, Ipad3.
  • Commenting is in an inconsistent state due to mid-refactor of some areas.

So that is 0.5.3 of Kiwi. Of course if you have any questions then just leave us a comment below, flick us an email or fill out the form on the help page and someone will try answer you asap.

Hope you have a fantastic Christmas!