Skip to content

Repository files navigation

PlayCanvas WebGL Game Engine

Docs | Examples | Forum | Blog

PlayCanvas is an open-source game engine. It uses HTML5 and WebGL to run games and other interactive 3D content in any mobile or desktop browser.

NPM versionMinzipped sizeLanguage grade: JavaScriptAverage time to resolve an issuePercentage of issues still openTwitter

English中文日本語

Project Showcase

Many games and apps have been published using the PlayCanvas engine. Here is a small selection:

SeemoreAfter The FloodCasino
Swooopdev ArcherFlappy Bird
CarStar-LordGlobal Illumination

You can see more games on the PlayCanvas website.

Users

PlayCanvas is used by leading companies in video games, advertising and visualization such as:
Animech, Arm, BMW, Disney, Facebook, Famobi, Funday Factory, IGT, King, Miniclip, Leapfrog, Mojiworks, Mozilla, Nickelodeon, Nordeus, NOWWA, 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><metacharset="utf-8"><title>PlayCanvas Hello Cube</title><metaname='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no' /><style>body {
margin:0;
overflow: hidden;
}
</style><scriptsrc='https://code.playcanvas.com/playcanvas-stable.min.js'></script></head><body><canvasid='application'></canvas><script>// create a PlayCanvas applicationconstcanvas=document.getElementById('application');constapp=newpc.Application(canvas);// fill the available space at full resolutionapp.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);app.setCanvasResolution(pc.RESOLUTION_AUTO);// ensure canvas is resized when window changes sizewindow.addEventListener('resize',()=>app.resizeCanvas());// create box entityconstbox=newpc.Entity('cube');box.addComponent('model',{type: 'box'});app.root.addChild(box);// create camera entityconstcamera=newpc.Entity('camera');camera.addComponent('camera',{clearColor: newpc.Color(0.1,0.1,0.1)});app.root.addChild(camera);camera.setPosition(0,0,3);// create directional light entityconstlight=newpc.Entity('light');light.addComponent('light');app.root.addChild(light);light.setEulerAngles(45,0,0);// rotate the box according to the delta time since the last frameapp.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:

CommandDescriptionOutputs
npm run buildBuild release, debug and profiler enginesbuild\playcanvas[.dbg/.prf].js
npm run tsdBuild engine Typescript bindingsbuild\playcanvas.d.ts
npm run docsBuild engine API reference docsdocs

Pre-built versions of the engine are also available.

Latest development release (head revision of dev 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/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.

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:

Editor

For Editor related bugs and issues, please refer to the Editor's repo.

About

Fast and lightweight JavaScript game engine built on WebGL and glTF

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages