「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の動作確認の説明でした。

