playcanvas
    TypeScript icon, indicating that this package has built-in type declarations

    1.48.1 • Public • Published

    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 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 Master 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, 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:

    Editor

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

    Install

    npm i playcanvas

    DownloadsWeekly Downloads

    1,281

    Version

    1.48.1

    License

    MIT

    Unpacked Size

    11.4 MB

    Total Files

    42

    Last publish

    Collaborators

    • playcanvas