PlayCanvas is an open-source game engine. It uses HTML5 and WebGL to run games and other interactive 3D content in all modern browsers without the need for a plugin.
Many games and apps have been published using the PlayCanvas engine. Here is a small selection:
You can see more games on the PlayCanvas website.
The PlayCanvas Engine is a fully featured 3D game engine.
- Graphics
- WebGL-based 3D renderer
- Physically based rendering (PBR)
- Directional, point and spot lights (all of which can cast shadows)
- Runtime Lightmap baking
- Static and skinned meshes
- GPU Particle engine with editor
- PostFX library: bloom, edge detect, FXAA, vignette, etc
- Seamless default material support from Maya, 3DS Max, Blender, etc.
- Full model export pipeline from Maya, 3DS Max, Blender, etc via Assets User Manual
- Collision & Physics
- Full integration with 3D rigid-body physics engine ammo.js
- Audio
- 3D Positional audio via Web Audio API
- Resource Loading
- Simple and powerful resource loading
- Streaming of individual assets
- Asset Variants - loads compressed textures (DXT, PVR, ETC1) based on platform support
- Entity / Component System
- Built-in components: model, sound, animation, camera, collision, light, rigidbody, script, particlesystem
- Scripting system
- Write game behaviours by attaching JavaScript to game entities
- Live code hot-swap enables rapid iteration
- Input
- Mouse, Keyboard, Touch, Gamepad support, VR
Here's a super-simple Hello World example - a spinning cube!
<script>
// Create a PlayCanvas application
var canvas = document.getElementById("application-canvas");
var app = new pc.Application(canvas, {});
app.start();
// Fill the available space at full resolution
app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
app.setCanvasResolution(pc.RESOLUTION_AUTO);
// Create box entity
var cube = new pc.Entity();
cube.addComponent("model", {
type: "box"
});
// Create camera entity
var camera = new pc.Entity();
camera.addComponent("camera", {
clearColor: new pc.Color(0.1, 0.1, 0.1)
});
// Create directional light entity
var light = new pc.Entity();
light.addComponent("light");
// Add to hierarchy
app.root.addChild(cube);
app.root.addChild(camera);
app.root.addChild(light);
// Set up initial positions and orientations
camera.setPosition(0, 0, 3);
light.setEulerAngles(45, 0, 0);
// Register an update event
app.on("update", function (deltaTime) {
cube.rotate(10 * deltaTime, 20 * deltaTime, 30 * deltaTime);
});
</script>
Want to play with the code yourself? Edit it on CodePen.
See all the examples here or browse them locally in the examples directory
The first time you build you will be asked to install dependencies using npm
. e.g.
npm install fs-extra
npm install google-closure-compiler
npm install preprocessor
Then, to execute a build of the engine to the build/output folder, do:
cd build
node build.js
See the built in help for more build instructions
node build.js -h
Pre-built versions of the engine are also available.
Latest development release:
- https://code.playcanvas.com/playcanvas-latest.js
- https://code.playcanvas.com/playcanvas-latest.min.js
Latest stable release:
- https://code.playcanvas.com/playcanvas-stable.js
- https://code.playcanvas.com/playcanvas-stable.min.js
Specific engine versions:
- https://code.playcanvas.com/playcanvas-0.181.11.js
- https://code.playcanvas.com/playcanvas-0.181.11.min.js
Full documentation available on the PlayCanvas Developer site including API reference
A full list of Releases and Release Notes is available here.
To convert any models created using a 3D modelling package see this page in the developer documentation.
Forums - Use the forum to ask/answer questions about Engine, Editor or generally PlayCanvas
What to help us make the best damn 3D engine on the web? Great!
Please use Github issues to report bugs or request features.
Please follow these steps to report a bug
-
Search for related issues - search the existing issues so that you don't create duplicates
-
Create a testcase - Please create the smallest isolated testcase that you can that reproduces your bug
-
Share as much information as possible - everything little helps, OS, browser version, all that stuff.
The PlayCanvas Engine is an open source game engine which you can use to create games or render 3D in the browser. In addition to the engine we also make the PlayCanvas development platform which features an Visual Editor, asset management, hosting and publishing services.
The PlayCanvas Engine is released under the MIT license. See LICENSE file.