Kiwi.js is the worlds easiest to use Open Source HTML5 game framework for making both mobile and desktop HTML5 browser games.
Our focus is blazingly fast WebGL rendering and complimentary tools to make professional quality serious games. We use CocoonJS for publishing games and App creation.
Version: 1.0 “Iwatani”
- Follow us on Twitter
- Explore Source code for Kiwi.js examples
- Read our API Documentation
- Browse our Plugin Repository
- Contact us for more information
Welcome to Kiwi!
Born out of a desire to democratize HTML5 game development and to make something that we love available to the masses, we bring you Kiwi.js.
We don’t mean to brag (too much), but Kiwi.js is fast. With hardware accelerated WebGL rendering, you can expect your games to be easily deployed across mobile and desktop browsers. But wait, they can also be deployed to mobile devices as native apps, using the CocoonJS framework.
Our mission is to follow the best open source community practices. We’re backing that up by providing professional support when its needed, so everyone — commercial developers as well as indies — feel the love.
And we do think you’re going to feel the love. What couldn’t you love about a game engine that is named after a fluffy adorable bird and one of the world’s greatest game inventors?
Kiwi uses a custom built WebGL rendering system for targeting modern mobile and desktop browsers as well as mobile apps through CocoonJS.
Not only is Kiwi lightning quick but it is also extendable, meaning that fellow contributors can easily write their own powerful rendering Plugins and Add-ons using WebGL Shaders. For instance our WebGL Particle Plugin creates stunning special FX using this system.
Of course, you can render to canvas too, which means older browsers, and mobile browsers, don’t miss out.
Kiwi.js is closely aligned with Ludei’s CocoonJS. You can use Cocoon to wrap up your game and play it on iOS or Android devices.
A state management system lets you easily move between and manage game states. Each state has an optional preloader phase, a create phase, an update loop, and a destroy phase. Each of the phases are highly configurable.
Flexible Asset Loading and Management
It’s easy to load in images, sound and data. You can decide when you want it to load (e.g. in a single payload at the beginning, or on a per state basis). When your assets are loaded they’re super easy to access from data libraries.
Gameobjects – Sprites, Images, Textfields
Gameobjects are objects that get rendered in your game. Whether they’re frame-based sprites, webGL particles, static images or textfields, they all can be moved in the game world and placed in the scene graph.
Each gameobject is an “Entity” and can have “components” attached to it. Components are small pieces of code that do something useful. For instance the arcade physics system is implemented as a component. If you want your game object to use physics, simply attach a physics component to it. Some of the standard gameobjects have components such as animation already attached. You can also write your own components.
Scenegraph (Grouping objects)
The scenegraph represents all of the gameobjects that visible in your gameworld. You can group objects, and place groups within groups. You can animate and move your objects and groups and they’ll behave in a consistent manner depending on how they are nested.
Sprites have an animation component that enables frame by animation from spritesheets and texture atlases. You can easily define frame sequences and frame lengths, play, pause, loop and reverse animations. There is also a built in tweening system.
Input (Including Touch)
Kiwi.js supports input for mouse, keyboard and of course touch. Mouse and touch events are easily handled by Kiwi.js pointer objects, so in most cases you don’t have to worry about where the input is coming from.
Your game world is viewed through a controllable camera, which you can move and spin.
Kiwi.js has support for tilemaps, including multiple tile layers. The Tiled map data format is supported, including isometric tiles. You can programmatically generate tile maps, and once a tile map is created you can easily manipulate the data to change the tilemap dynamically.
Kiwi.js supports the WebAudio api, and falls back to using tag when it is not available. Audio sprites are also supported, unless of course your device happens to be some weird futuristic gheto blaster.
As fellow game developers we know what it is like to be hungry, shivering on the corner holding a can of change in one hand and a damp “will code for cash” cardboard sign in the other.
Because of this, creating an In-App Purchasing Plugin to allow you to monetize your games was a top priority and is available now.
CocoonJS users can easily sell add a virtual currency to consumable goods via the AppStore
As part of our dedication to open source principles, the plugin system lets developers extend many aspects of Kiwi.js. The rules around creating them are unobtrusive, making plugins easy to create and attach. Plugins will soon be able to be sold in the upcoming Kiwi.js marketplace.
Integration with powerful tools
Kiwi.js is part of a larger ecosystem of products which will enable you to create games and game content using specialised tools such as the Gamefroot cloud based game building solution. Because you can never get enough power