Users
PlayCanvas is used by leading companies in video games, advertising and visualization such as:
Animech, Arm, Disney, Facebook, IGT, King, Miniclip, Leapfrog, Mozilla, Nickelodeon, Nordeus, PikPok, PlaySide Studios, Polaris, Product Madness, Samsung, Snap, Spry Fox, Zeptolab, Zynga
Features
PlayCanvas is a fully featured game engine.
- 🧊 Graphics - Advanced 2D + 3D graphics engine built on WebGL 1 & 2.
- 🏃 Animation - Powerful state-based animations for characters and arbitrary scene properties
- ⚛️ Physics - Full integration with 3D rigid-body physics engine ammo.js
- 🎮 Input - Mouse, keyboard, touch, gamepad and VR controller APIs
- 🔊 Sound - 3D positional sounds built on the Web Audio API
- 📦 Assets - Asynchronous streaming system built on glTF 2.0, Draco and Basis compression
- 📜 Scripts - Write game behaviors in Typescript or JavaScript
Usage
Here's a super-simple Hello World example - a spinning cube!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PlayCanvas Hello Cube</title>
<meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no' />
<style>
body {
margin: 0;
overflow: hidden;
}
</style>
<script src='https://code.playcanvas.com/playcanvas-stable.min.js'></script>
</head>
<body>
<canvas id='application'></canvas>
<script>
const canvas = document.getElementById('application');
const app = new pc.Application(canvas);
app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
app.setCanvasResolution(pc.RESOLUTION_AUTO);
window.addEventListener('resize', () => app.resizeCanvas());
const box = new pc.Entity('cube');
box.addComponent('model', {
type: 'box'
});
app.root.addChild(box);
const camera = new pc.Entity('camera');
camera.addComponent('camera', {
clearColor: new pc.Color(0.1, 0.1, 0.1)
});
app.root.addChild(camera);
camera.setPosition(0, 0, 3);
const light = new pc.Entity('light');
light.addComponent('light');
app.root.addChild(light);
light.setEulerAngles(45, 0, 0);
app.on('update', dt => box.rotate(10 * dt, 20 * dt, 30 * dt));
app.start();
</script>
</body>
</html>
Want to play with the code yourself? Edit it on CodePen.
How to build
Ensure you have Node.js installed. Then, install all of the required Node.js dependencies:
npm install
Now you can run various build options:
Command | Description | Outputs |
---|
npm run build | Build release, debug and profiler engines | build\playcanvas[.dbg/.prf].js |
npm run tsd | Build engine Typescript bindings | build\playcanvas.d.ts |
npm run docs | Build engine API reference docs | docs |
Pre-built versions of the engine are also available.
Latest development release (head revision of master branch):
Latest stable release:
Specific engine versions:
Generate Source Maps
To build the source map to allow for easier engine debugging, you can add -- -m
to any engine build command. For example:
npm run build -- -m
This will output to build/output/playcanvas.js.map
Note: The preprocessor is ignored when generating the source map as it breaks the mapping. This means that all debug and profiling code is included in the engine build when generating the source map.
How to run tests
PlayCanvas uses of Karma for unit testing. There are two ways of running the tests:
Command | Description |
---|
npm run test | Runs unit tests on a built playcanvas.js |
npm run test:watch | Re-runs unit tests when changes are detected - open http://localhost:9876/debug.html |
PlayCanvas Editor
The PlayCanvas Engine is an open source engine which you can use to create HTML5 apps/games. In addition to the engine, we also make the PlayCanvas Editor:
For Editor related bugs and issues, please refer to the Editor's repo.