PHP・MySQL・JavaScriptでブラウザRPGを作ろうとした話
〜無謀な挑戦と、Phaser3との出会い〜
前回の記事では、自己紹介とこれまでの流れについて書きました。
今回はそこから一歩進んで、実際にブラウザゲームを作ろうとした話を書いてみます。
最初に選んだジャンルは、今思えばなかなか無謀でした。
最初に選んだのは、まさかのRPG
PHP、MySQL、JavaScriptを使ってブラウザゲームを作ってみよう。
そう思い立ったとき、最初に選んだジャンルは RPG でした。
理由はシンプルで、
- 自分が一番好きなジャンルだった
- 作れたら絶対に楽しい
- システム的にもやりがいがありそう
という、わりと勢い任せな判断です。
ChatGPTがいれば、なんとかなると思っていた
もうひとつ、無謀さを後押しした理由があります。
それは、ChatGPTを普段から使っていたことです。
コードを書く場面でも、
- ロジックの相談
- サンプルコードの生成
- バグの原因調査
など、かなり助けられていました。
「コーディングもAIにお願いすれば、いけるんじゃないか?」
正直、そう思っていました。
現実はそんなに甘くなかった
実際に作り始めてみると、すぐに壁にぶつかります。
ChatGPTはとても優秀ですが、
複数ファイルにまたがる構成の管理になると、途端に弱くなります。
- さっきまで作っていた処理を忘れる
- ファイル間の関係性がズレる
- 修正したはずのコードが元に戻る
それでも、少しずつ形にはなっていました。
ブラウザゲーム特有の「音」の制約
そんな中で、決定的な壁になったのが
ブラウザにおける音声再生の制約です。
ブラウザでは基本的に、
ユーザーが画面をタップ・クリックしないと
音楽や効果音を再生できない
という制限があります。
シーン切り替えで起きた問題
RPGなので、当然シーンの切り替えがあります。
- フィールド
- メニュー
- 戦闘画面
当初は、シーンごとに
別のPHPファイルへ遷移する構成にしていました。
しかし、画面遷移すると…
- 自動でBGMを鳴らしたい
- でもユーザー操作がない
- 結果、音が鳴らない
という問題が発生します。
大量のコードを書き直す羽目に
この制約のせいで、
これまで書いてきたコードの設計そのものを
見直す必要が出てきました。
「これはさすがにまずいな…」
そう思い、考えたのが、
- ゲーム本体となるページを1つ作る
- そこに他のPHPファイルを
includeして呼び出す - 画面遷移をJavaScript側で管理する
という構成です。
そんなときに知った「Phaser3」
ちょうどそのタイミングで、
Phaser3 というゲームフレームワークを知りました。
名前だけは聞いたことがありましたが、
本格的に調べたのはこのときが初めてです。
Phaser3とは何か
Phaser3は、
JavaScriptで2Dゲームを作るためのフレームワークです。
主にブラウザゲーム向けで、
- PC
- スマートフォン
- タブレット
といった環境で動作します。
Phaser3の特徴と強み
実際に調べてみて、
「これは今の自分に合っているかもしれない」と感じた点がいくつかありました。
● ゲーム向けの仕組みが最初から揃っている
- シーン管理
- スプライト描画
- アニメーション
- 入力処理
- サウンド管理
RPGに必要な要素が、かなり揃っています。
● ブラウザ制約を考慮した設計
音声再生や入力周りも、
ブラウザの仕様を前提に作られているため、
自前で悩む部分が大幅に減りそうだと感じました。
● 学習コストと自由度のバランス
- JavaScriptが分かれば始められる
- でも、自由度は高い
- フレームワークに縛られすぎない
「ツールに振り回される」感じが少なそうなのも好印象でした。
方針転換、そして学習へ
こうして、
PHP中心でRPGを作るという当初の方針は一度立ち止まり、
Phaser3を学習する という方向へ舵を切ることになります。
遠回りかもしれませんが、
今振り返ると、この判断は悪くなかったと思っています。
おわりに
「AIがあるから何でも簡単にできる」
そう思っていた自分にとって、
この経験は良い意味での現実確認になりました。
それでも、
試行錯誤する過程そのものはやっぱり楽しい。
次回は、
Phaser3を実際に触ってみた感想や、最初に作ったもの
について書いていこうと思います。


コメント