何を作るかが、何を選ぶかを決めます
3つを順に問いましょう。プレイヤーはこれをどこで手に入れるのか — リンクか、アプリストアか、デスクトップのストアか。2D か 3D か。そして自分はすでにどの言語を楽に書けるのか。この3つの答えで、たいてい妥当な選択肢はちょうど一つに絞られ、その先は好みの議論です。
最初の MVP なら、Web は人が思うよりずっと多くの場合に勝ちます。インストールするものもなく、審査を受けるものもなく、一時間以内に友達へリンクを送れます。
ウェブ
リンクは、ゲームとプレイヤーの間の最短距離です。インストールもストア審査もなく、ブラウザがあるすべての端末で動きます。
Babylon.js
ブラウザで動く完全な 3D エンジンです — 物理・アニメーション・ライティング・glTF モデルの読み込みまですべて TypeScript で。2D の対応も堅く、デバッグインスペクタは学習にとても向いています。
モバイルアプリ
ストア配信・プッシュ通知・アプリ内課金を得る代わりに、審査待ちとプラットフォームのルールを受け入れます。
Unity
モバイルゲームの既定の選択肢で、2D・3D の両方を扱います。巨大なアセットストアとコミュニティがあり、見つかるチュートリアルのほとんどがこれを前提に書かれています。小さなものを作るには重く、C# の生態系はそれ自体が学ぶべき一つの世界です。
Flutter Flame
Flutter の上に載る 2D ゲームエンジンです。すでに Dart と Flutter を書いているなら、モバイルゲームまでの最短経路です — 同じ言語、同じツール、ゲームキャンバスの周りに同じウィジェット。はっきりさせておきます:Flame は 2D です。Flutter の 3D はまだ実験段階で、ゲームの計画の土台にするものではありません。
デスクトップ
より大きな画面、本格的な入力機器、そして Steam。長く遊ぶゲームが住む場所です。
Unity
モバイルと同じエンジンで、一つのプロジェクトから Windows・macOS・Linux へ書き出します。一度覚えればほぼどこへでも出せるので、これほど広く教えられているのです。
Unreal Engine
視覚的な完成度そのものが目的のときの選択です — ライティング、マテリアル、大きな 3D 世界。ブループリントで C++ を書かずにロジックを組めますが、エンジンは大きく、それに見合うマシンを要求します。最初の小さなゲームには過剰で、グラフィックに野心のあるゲームにはちょうど良い選択です。
よく間違われる2つのこと
Flame は 2D 専用です
Unity・Unreal と同じ文に並ぶため、同格の汎用エンジンだと思われがちです。違います。3D のゲームなら Flame は候補に入りません — コードを書く前に決めましょう、書いた後ではなく。
一つを終わらせることは、三つを試すことに勝ります
エンジンを乗り換えるたびに進捗はほぼ0に戻ります。学んだものの大半がゲームではなく道具だったからです。選ぶのは一度だけにしましょう — 必要なら間違った選択でも構わないので、何かを完成させてください。
これらは学ぶための選択肢であって、私たちのスタックではありません
Babylon.js・Unity・Unreal・Flame は知っておく価値があるものとしてここに挙げているだけで、PES が採用した技術ではありません。