ゲームエンジンなしで作るべきゲームと使うべきゲームの境界
遊びをつくる執筆にClaudeを使用しています。

「ゲームエンジンを使わなくていいですか?」という問いは、始める前に一度は浮かぶ問いです。答えは「ゲームの中身による」ですが、それだけでは判断できません。この記事では、エンジンの有無を分けるのが「技術の難しさ」ではなく「ゲームが持つ構造の種類」であることを軸に、具体的な判断基準を示します。 Unityなどのゲームエンジンは多機能ですが、ブラウザゲームとして動かすにはWeb書き出しという工程が必要で、出力されたファイルサイズは数MB〜数十MBになることがあります。一方でHTML・CSS・JavaScriptだけで書いたゲームは1ファイル数KB〜数百KBに収まることが多く、読み込みの速さや配布のシンプルさで優位です。どちらを選ぶかは、ゲームが必要とする「仕組み」の複雑さで決まります。
エンジンなしで完結しやすいゲームの共通点
エンジンなしで作りやすいゲームには、構造上の共通点があります。それは「状態の数が少なく、衝突・物理・3Dが不要」という点です。
カードゲーム、パズル、クイズ、テキストアドベンチャー、ターン制ボードゲームは典型例です。これらはゲームの「状態」(場のカード、パズルの盤面、選択肢の履歴)をJavaScriptのオブジェクトや配列で持ち、状態が変わったらHTMLを更新するだけで成立します。物理演算も毎フレームの衝突判定も必要ありません。
もう一つの目安は「ゲームループが不要かどうか」です。ゲームループとは1秒間に数十回の頻度で状態を更新し続ける仕組みで、アクションゲームやシューティングには必須です。しかしパズルやカードゲームはプレイヤーが操作したときだけ状態を変えればよく、ループを持たなくても動きます。イベント駆動(クリックや入力があったときだけ処理する)で書けるゲームは、エンジンなしの候補と見なせます。
軽量なアニメーションが必要な場合も、CSSアニメーションやWeb Animations APIで多くの場面をカバーできます。カードをめくる動き、画面切り替えのフェード、テキストの表示演出などは、数行のCSSで実装できます。
エンジンを使うべきゲームの判断基準
次の要素がゲームに含まれる場合、エンジンを使うほうが開発時間を大幅に節約できます。
物理演算が核心にある
重力・反発・摩擦・剛体の衝突がゲームプレイの面白さを作っているとき、自前で実装するコストは膨大です。Matter.jsのような軽量物理ライブラリをピンポイントで使う選択肢もありますが、パズルボブルやピンボールのように物理が複数オブジェクトで絡み合う設計では、エンジンのほうが信頼性が高くなります。
大量のスプライトと衝突判定が同時に動く
シューティングゲームで100発の弾と複数の敵が同時に動き、毎フレーム衝突判定をするとき、素のCanvasとJavaScriptだけでは最適化に多くの時間を費やします。PhaserなどのHTML5ゲームエンジンはこのユースケースに最適化された空間分割やレイヤー管理を内蔵しており、自前で再発明する意味が薄い部分です。
3D空間が必要
Three.jsやBabylon.jsを使えばブラウザで3Dゲームは作れますが、これらのライブラリを使いこなすこと自体がすでに「ゲームエンジン的な仕組みを自前で組む」作業になります。3D空間のカメラ管理・ライティング・当たり判定を含む設計なら、GodotのWeb書き出しやPlayCanvasのようにエンジンごと選ぶほうが学習コストの総量として低くなるケースがあります。
チームで開発する・後から機能を拡張する
一人でプロトタイプを素早く作るときは素のJavaScriptの見通しがよいですが、複数人が関わる・半年後に機能追加する予定があるとき、エンジンのシーン管理やアセット管理の仕組みがそのままプロジェクト構造になります。属人化を防ぐ意味でも、エンジンのガイドラインに沿ったほうが長期的にコストが低くなる場合があります。
グレーゾーンの扱い方
多くのゲームは「エンジン不要」でも「エンジン必須」でもなく、どちらでも作れるグレーゾーンに属します。横スクロールのアクションパズル、シンプルなタワーディフェンス、見下ろし型の移動ゲームなどです。
このとき役立つのが「ライブラリの部分採用」という考え方です。ゲームエンジン全体を導入せず、必要な機能だけを提供するライブラリを組み合わせる方法です。
- アニメーション付きスプライトだけが欲しい → Pixi.js(2Dレンダリング専門)
- 軽い物理だけが欲しい → Matter.js(物理演算専門)
- 音声管理だけが欲しい → Howler.js(オーディオ専門)
これらは単体でも組み合わせても使え、ゲームエンジンほどの学習コストをかけずに特定の問題を解決できます。ただし、複数のライブラリを組み合わせるほど依存関係の管理コストが増えるため、3つ以上になるならフレームワークかエンジンを最初から選んだほうがシンプルになる場合があります。
もう一つの判断軸は「プロトタイプをどこまで伸ばすか」です。遊んでもらって反応を見るだけなら素のHTML+JSで素早く作り、手応えを得てから本格的な実装に移行するときにエンジンを選び直す方法もあります。ゲームの核心となる操作感・ルール・面白さの検証には、エンジンの有無はほぼ関係ありません。
Web書き出しで気をつけたいこと
エンジンを使ってブラウザゲームを作る場合、Web書き出しの設定でファイルサイズと動作に影響が出るため、出力前に確認すべき点があります。
UnityのWebGL書き出しは、デフォルト設定のままだと圧縮形式の関係でサーバー側の設定(Brotli・gzipのMIMEタイプ)が必要になることがあります。圧縮なし(Disabled)で書き出すとサーバー設定不要になりますが、ファイルサイズは大きくなります。PhaserなどのライブラリベースのプロジェクトはbundlerでビルドしたHTMLとJSのセットになるため、index.htmlと同階層のファイルをまとめてZIPにすれば配布しやすくなります。
ゲームをアソバースに投稿する場合、HTMLファイルの単体投稿かZIPまとめての投稿に対応しています。エンジンから書き出したファイル一式をそのままZIPにして登録する方法が、追加の変換作業なく公開できる手順として現実的です。公式サイトで最新の対応形式と制限を確認してから準備することをお勧めします。
次の行動
作ろうとしているゲームのジャンルを書き出し、「ゲームループが必要か」「物理演算が核心か」「3Dか2Dか」の3点をチェックしてみてください。3つとも「不要・不使用・2D」であれば、まずエンジンなしのHTML+JSで動くプロトタイプを一本作ることが最短の検証になります。手応えが得られたら、アソバースにHTMLまたはZIPで投稿して実際のプレイヤーに届けてみてください。
参考資料
- Phaser 公式ドキュメント(Phaser.io)
- Unity WebGL ビルドと実行 — Unity マニュアル
- MDN Web Docs「Canvas API」「Web Animations API」
- Matter.js 公式ドキュメント
- Pixi.js 公式ドキュメント

