アマチュア向けゲーム開発環境を13年前と比較すると

昨今の自作ゲーム向けハンドヘルドゲーム機を調べたついでに、13年前の2009年にアマチュア向けゲーム開発環境について書いていたことを思い出した。

せっかくだからハンドヘルドゲーム機以外についても、ここ13年でどういう変化があったか、知っている範囲で書いておこうかと思う。

PC

王道。最先端のCPU, GPUを使ったゲーム開発が可能。言語、ライブラリもお好みしだい。欠点としては、ゲームが実行される環境があまりにバラバラなので、環境依存の問題がおきやすいことと、統一したゲーム配布プラットフォームがないこと。アマチュア向けSteamみたいのがあるといいんだが。

Unity、Unreal Engine、Godotを代表とするゲームエンジンを使うことが標準となった。DirectXを直接さわってごにょごにょみたいなことはだいぶ減ったと思う。ゲームエンジン本体の豊富な機能と、付属するアセットストアがゲームの開発効率や品質の向上にとても効くので、しばらくはこの傾向が続きそう。

マチュア向けSteamはitch.ioがほぼ実現しているように見える。というか、一定のクオリティのゲームが作れる人は、インディーゲームとして普通にSteam上で配信してるよね。

(追記)

ゲームの実行環境と開発環境、キャラクタ・レベル・音のエディタなどを内包した軽量ゲームエンジンとしてのファンタジーコンソールが、小規模なゲームの開発では多く使われるようになってきた。作ったゲームはブラウザやRaspberry Piなどを使ったオープンゲーム機でも遊べることが多い。

ブラウザ

Flash

ブラウザゲーを作るに当たっては一番メジャーなプラットフォーム。

ああ、当時の私に伝えたかった。Flashはその後死んだ。今やブラウザ上にその再生手段は無い。作ったゲームは死蔵されるほかない。Flashコンテンツを現代のブラウザ上で動かせるようにしようというプロジェクトはいくつかあるが、複雑なFlashを再現することは難しく、完遂したものはまだない。

JavaScriptでゲーム開発はパフォーマンスや描画機能の面でいろいろと制限が多くあまり現実的ではないが、あらゆるブラウザで動作する可搬性は魅力。

その後、JavaScript周りのブラウザ機能や開発環境がこんなに強化されるとは。ブラウザ上のゲーム実行環境はJavaScript一択になり、WebAssemblyやWebGLと組み合わさることで言語の垣根を超えGPUをフル活用できるようになり、Unityなどのゲームエンジンのターゲットデバイスになった。

Google Chrome + Canvasはその制約を取っ払うポテンシャルがありそうだが、そうするとChromeにロックインされてしまうという点が残念。

でも2009年当時はやっとChrome限定でゲームに利用可能なCanvasが搭載されたくらいで、JavaScriptはまだ未成熟だったのだよ。

モバイルデバイス

黒船iPhoneではObjective-Cを使ったゲーム開発が可能。App Storeを通じた配布経路も完備。App Storeにすでに多くのゲームがある今だとそれらの中に埋もれてしまう懸念はある。マルチタッチディスプレイを使った独特のUIは利点でもあり欠点でもある。UI上の工夫はより面白く難しい。

Google Android上でもJavaによる開発が可能。Android Marketによる配布もできる。

今でもiPhoneAndroidです。以上です。

スマホゲームそれ自体の普及度と多様性は素晴らしく、今後もしばらくこのままだろう。デバイスのカテゴリとしてみた場合、スマホに代わる新たなゲームUIを備え、全人類に普及するデバイスが今後出てくるか、それはよく分からない。

コンシューマ機

XNA

Xbox360上で動作するゲームがC#で作成できる。Visual Studio上のデバッグメニューを叩くと360上で自作ゲームが動き始めるのは感動。

XNAはだいぶ前に終わりました。

コンシューマ機の開発をオープンにアマチュアに解放する、という取り組みはほとんど聞かなくなった。一定のクオリティのゲームが作れるインディーゲームデベロッパは、直接コンシューマ機向けにゲームを開発することが当たり前になった今、そういう取り組みの必要性が薄れているのだろう。

そんななかでもSwitch向け開発環境としてプチコン4が出ていることはとてもありがたい。できれば開発環境はPC、実行はコンシューマ機、という体験ができるとより良いんだけど、それはコンシューマ機向けにリリース可能なソフトウェアの制約などのために難しいんだろうね。

ゲーム内エディタ

メイドイン俺のようにゲームが作れるゲームや、リトルビッグプラネットのようにエディタの自由度が高すぎて別ゲーが作れてしまうものなど、ゲーム内でゲームが作れるものがある。

はじめてゲームプログラミングのような教育用途とは言えそこそこ柔軟なゲーム開発ができるものや、スーパーマリオメーカー2のような柔軟なレベルデザイナーが、今だリリースされていることもうれしいね。

携帯ゲーム機向けでアマチュア向けにオープンになっている事例は少ない。

Switchという据え置きと携帯を兼用するコンシューマ機が出てきた今、この区分けはあまり意味がなくなってきた。

オープンゲーム機

最初からユーザに向けてオープンな開発環境を整備しているゲーム機もある、が多くはあまりにマイナーだ。

オープンゲーム機については以下に書いた。

DIYによる柔軟性が得られた一方、広く普及しているオープンゲーム機にターゲットを絞って自作ゲームをリリースする、ということは難しくなっているように思える。Playdateのような個性のはっきりしたデバイスが普及すれば、それに向けた開発コミュニティもある程度形成されるかも。

2022年のアマチュア向けゲーム開発環境

Unityを代表とするゲームエンジンのおかげで飛躍的にゲーム開発体験が向上したとともに、様々なデバイス向けの適用もゲームエンジンそれ自身がその役割を担ってくれるようになったため、上記のような、〇〇用のゲーム開発環境ってあるかな?ということを考えること自体、あまり意味がなくなってきているようにも思える。

それに対してDIYハンドヘルドゲーム機のように、ゲーム機とそのUIそれ自体をカスタマイズしてしまおうという、ソフトウェアの範疇を超えたゲーム開発という取り組みが出てきている。こうなると開発環境どころかターゲットのハードウェア自体が開発者ごとにユニークになり、多様性が広がる一方、ネットワークを通じてそのゲームや開発体験を共有することは難しくなりそうだ。

まあでもアマチュアのゲーム開発はその開発体験が楽しいことが重要。王道のゲームエンジンで広く多くの人に遊んでもらうゲームを作るもよし、マイナーなプログラミング言語やライブラリでの開発を楽しんでもよし、ユニークな入力デバイスを作ってその場でしか楽しめないゲームを作ってもよし、好きなことを好きなようにやるのがいいのだ。