JavaScriptでWebGLゲーム開発ができるPlayCanvas

JavaScriptでWebGLゲーム開発ができるPlayCanvas プログラミング

「JavaScriptで3Dゲームを開発したい」
「WebGLでリッチコンテンツを表示したい」

このような場合には、PlayCanvasが選択肢となります。
この記事では、PlayCanvasについて解説しています。

本記事の内容

  • PlayCanvasとは?
  • PlayCanvas Editor
  • PlayCanvasの動作確認

それでは、上記に沿って解説していきます。

PlayCanvasとは?

GitHub上のPlayCanvas公式ページ
https://github.com/playcanvas/engine

上記ページには、次のように記載されています。

PlayCanvas WebGL Game Engine

PlayCanvasとは、ゲームエンジンです。
さらに言うと、デスクトップとモバイルブラウザ向けに作られたWebGL/HTML5ゲームエンジンになります。

もちろん、PlayCanvasの利用用途はゲームだけではありません。
リッチコンテンツを表示するためにも利用できます。

そして、PlayCanvas自体はオープンソースです。
そのため、無料でも利用できます。
また、アカウントを作成する必要もありません。

ここで、下記ページを見てみましょう。

PLAYCANVAS | 日本公式サイト
https://playcanvas.jp/

この画面を見てどう思いますか?
「FREE」プランがあるので、無料利用は可能だと判断できます。

しかし、アカウント作成は必須だと思いませんか?
「LOGIN」ボタンも画面右上に存在しています。

「めんどくせーから、PlayCanvasは対象外!!」
実際、私は以前に上記ページを見てこのように感じました。
そのため、そのときは検証すらしていませんでした。

ここまでをまとめると、以下となります。

  • PlayCanvasはオープンソースのゲームエンジンである
  • PlayCanvasの利用は無料も可能
  • アカウント作成は必須?

アカウントに関しては、グレーでよくわかりません。

では、アカウントが必要になるのはどのようなケースなのでしょうか?
以下では、そのことについて説明します。

PlayCanvas Editor

PlayCanvasには、PlayCanvas Editorが用意されています。
PlayCanvas Editorとは、専用の開発ツールのことですね。
なお、PlayCanvas Editorはブラウザで利用します。

上の画面は、よく見る形式のインターフェースです。
このツールを使って、PlayCanvasで動くモノを作成できます。

この点では、Unityでも同じようなことが可能です。
そのため、PlayCanvasとUnityが比較されることがあります。

そのようなPlayCanvas Editorを利用するためには、アカウントが必要になります。
つまり、PlayCanvas Editorを使わなければ、アカウントは不要です。

ここで、公式ページの表示を確認しておきましょう。

PlayCanvas Editorは、開発環境およびツールセットに含まれているのでしょう。
でも、この表記は誤解を生みますよね。

「PlayCanvasを利用するためにはアカウント登録が必要なんだ」
このように誤解する人が、絶対いるはずです。
以前に私は誤解しましたので。

そのときの抗弁として、「PLAYCANVAS」というキーワードなのかもしれません。
公式サイト(日本語、英語すべて)では、「PLAYCANVAS」と「PlayCanvas」が使い分けられています。

運営元は、「PlayCanvas」をエサにして集客しています。
そして、「PLAYCANVAS」で稼ぎたいということなのでしょう。

そんな事情から、非常にややこしい表示なのだと思われます。
あくまで、これは個人的な推測に過ぎませんけどね。

なお、「PLAYCANVAS」の日本公式サイトはGMOによる運営です。
こんなところまで、GMOが手を広げていることに驚きました。

以上、PlayCanvas Editorについて説明しました。
次は、PlayCanvasの動作確認を行います。

PlayCanvasの動作確認

「PLAYCANVAS」でアカウント登録はしていません。
特にインストールなどもしていません。

所詮は、JavaScriptです。
jsファイルを読み込めば、動きます。

しかし!
GitHubの公式ページでは、ビルドの文字があります。
(日本語のGitHub公式ページでも同様)

でも、安心してください。
Node.jsをインストールする必要はありません。
そして、ビルドする必要もありません。

単純に以下のjsを読み込めばいいだけです。
jQueryをCDNから読み込む場合と何も変わりません。

では、動作確認を行います。
公式に載っているサンプルそのままです。

<!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>

上記ページにブラウザでアクセスします。
そうすると、以下のような画面が表示されます。

実際は、立方体がクルクルと回転しています。
以上、PlayCanvasの動作確認の説明でした。

タイトルとURLをコピーしました