• Stars
    star
    9,594
  • Rank 3,703 (Top 0.08 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

JavaScript game engine built on WebGL, WebGPU, WebXR and glTF

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 version Minzipped size Language grade: JavaScript Average time to resolve an issue Percentage of issues still open Twitter

English 中文 日本語 한글

Project Showcase

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

Seemore After The Flood Casino
Swooop dev Archer Flappy Bird
Car Star-Lord Global 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>
    <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>
        // create a PlayCanvas application
        const canvas = document.getElementById('application');
        const app = new pc.Application(canvas);

        // fill the available space at full resolution
        app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
        app.setCanvasResolution(pc.RESOLUTION_AUTO);

        // ensure canvas is resized when window changes size
        window.addEventListener('resize', () => app.resizeCanvas());

        // create box entity
        const box = new pc.Entity('cube');
        box.addComponent('model', {
            type: 'box'
        });
        app.root.addChild(box);

        // create camera entity
        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);

        // create directional light entity
        const light = new pc.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 frame
        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, min, debug and profiler engines build\playcanvas[.min/.dbg/.prf].[mjs/js]
npm run build:es5 Build release, min, debug and profiler engines for es5 only build\playcanvas[.min/.dbg/.prf].js
npm run build:release Build release engine for es5 and es6 build\playcanvas.[mjs/js]
npm run build:types 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 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

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.

More Repositories

1

pcui

UI component library for the web
TypeScript
613
star
2

awesome-playcanvas

A curated list of awesome PlayCanvas assets, resources, and more.
253
star
3

model-viewer

glTF 2.0 model viewer
TypeScript
250
star
4

playcanvas-ar

Fast and Easy Augmented Reality for the Web 🚀
JavaScript
209
star
5

pcui-graph

A PCUI extension for creating node-based graphs
JavaScript
119
star
6

editor

Issue tracker for the PlayCanvas Editor
106
star
7

playcanvas-gltf

glTF 2.0 support for the PlayCanvas Engine
JavaScript
98
star
8

playcanvas.github.io

Live examples of the PlayCanvas Engine
JavaScript
78
star
9

playcanvas-sync

Real-time synchronization of files between PlayCanvas and your local machine
JavaScript
74
star
10

developer.playcanvas.com

Developer resources website for PlayCanvas
JavaScript
69
star
11

playcanvas-tween

A tween library for PlayCanvas
JavaScript
55
star
12

webvr

**Deprecated**: WebVR support for PlayCanvas WebGL Game Engine. WebVR is now supported in the PlayCanvas engine directly, this project is now considered legacy and should not be used in new projects.
JavaScript
45
star
13

playcanvas-spine

Plugin component for PlayCanvas which enables support for Spine animations.
JavaScript
43
star
14

fonts

Scripts that allow you to render Bitmap fonts in PlayCanvas.
JavaScript
24
star
15

playcanvas-rest-api-tools

A set of tools to use with the PlayCanvas REST API for common jobs such as downloading a build and archiving a project
JavaScript
23
star
16

playcanvas-editor-ts-template

A simple TypeScript template for PlayCanvas that can also sync with your playcanvas.com project
TypeScript
21
star
17

playcanvas-p2.js

An integration of PlayCanvas with the 2D physics engine p2.js
JavaScript
20
star
18

walkthrough.js

walkthough.js allows you to create interactive walkthroughs on your website
JavaScript
20
star
19

sprites

Scripts that allow you to render Sprites in PlayCanvas
JavaScript
20
star
20

editor-api

The PlayCanvas Editor API
JavaScript
16
star
21

playcanvas-webpack

Demonstration of building a PlayCanvas app with Webpack
JavaScript
16
star
22

google-play-game-services

A PlayCanvas integration for Google Play Game Services
JavaScript
11
star
23

playcanvas-inspector

Chrome extension for inspecting published PlayCanvas apps
JavaScript
11
star
24

FlappyBird

Playcanvas Engine - Flappy Bird
JavaScript
9
star
25

playcanvas-observer

Contains the Observer class and related functionality used across the PlayCanvas Editor, pcui etc.
JavaScript
7
star
26

canvas-mock

Mock for HTMLCanvasElement and related classes
JavaScript
6
star
27

playcanvas-texturepacker

Custom PlayCanvas exporter for TexturePacker
6
star
28

api-reference

PlayCanvas API reference manual
JavaScript
6
star
29

playcanvas-eslint-config

ESLint configuration used by PlayCanvas
JavaScript
5
star
30

sublime-completions

Sublime Text completions file for PlayCanvas
JavaScript
5
star
31

playcanvas-facebook

Plugin component for PlayCanvas which enables integration of the Facebook API.
JavaScript
5
star
32

texture-tool

Texture tool for graphics programmers
JavaScript
4
star
33

playcanvas-jsdoc-template

JSDoc 3 template for PlayCanvas
JavaScript
3
star
34

visual-tests

Generate screenshots and compare them across versions of the engine
JavaScript
3
star
35

react

A React renderer for PlayCanvas – build interactive 3D applications using React’s declarative paradigm.
JavaScript
2
star
36

playcanvas-csp

Node.js tool to download a build via REST API and add CSP rules
JavaScript
2
star
37

blog

The PlayCanvas blog site
HTML
1
star
38

attribute-parser

The official JSDoc Attribute parsed used in the PlayCanvas engine
JavaScript
1
star
39

codemods

Codemods for migrating older
JavaScript
1
star