パズルゲームを作るときに準備しておくと便利な機能5選

ステージクリア型のパズルゲーム、みなさん一度は作ってみたくなりますよね。

数ステージしかない規模の小さいゲームであれば何も気にせず作れば良いのですが、
100ステージあるだとか、開発人数を増やしたい!という時、ちょっとした工夫で開発効率がグッと上がります。

今回は、そんな時に準備しておくと便利な機能5選を紹介します。

1. リプレイ機能

まずはじめに欲しいのはこれ!
「プレイ記録を保存する(シリアライズ出来るようにする)」「読み込んで再生する」の2つセット。
倉庫番みたいなゲームであれば、ただ移動した方向を保存できれば十分です。
テキストとして出力出来るようにしておくとコピペで気軽にslackで送れたりして便利です。
具体的には「wwwsssdw」みたいなWASDで保存してました。

何に使える?

  • 想定解の記録が出来る。
  • テストプレイ時に、みんながどういう手順でクリアしたかを見れる。
    • アンドゥなんかも残しておくと、どれだけ困ったかが図れて面白い。
  • デバッグ時にかんたんに再現が取れる。

2. 解答自動作成機能

これ必須だと思ってるんですが、意外と人力でどうにかしているチームが多い印象。
ステージデータを突っ込むと、総当たりでも何でも良いのでプログラムが勝手に解答を作ってくれる機能です。
えー、本当に総当りすると現実的な時間で終わらないことが多いので確かに作るのにはちょっとしたコツが必要かも。
お仕事お待ちしてます。

何に使える?

  • 想定していなかった解答が無いかのチェックが出来る。
    • こうやって解いてほしかったのに、実はもっと簡単な方法があった!みたいなケース。
  • パズルロジック変更時、今まで作った全ステージが本当にクリア可能かを自動チェック出来る。

3. 全ステージのスクリーンショット自動撮影機能

名前の通り、全ステージを開いてスクリーンショット撮って、開いてスクリーンショット撮って・・・を繰り返して、
1枚のhtmlかなにかでバッと見れるようにまとめてくれる機能です。

何に使える?

  • 画像素材変更時、表示がバグってるステージが無いかをチェック出来る。
  • この時「2. 解答自動作成機能」を同時に走らせて最短解答も一緒に表示しておくとデバッグに便利。

4. スマホで動くステージエディタ

どのプラットフォーム向けにゲーム開発しているか、で変わるとは思いますが、
スマホでステージエディタを動くようにしておくと電車の中なんかでステージのネタを考えられて便利です。
また、「2. 解答自動作成機能」を組み込んでおいて、1ボタンで解答があるかチェック出来ると、
製作者自身はクリア出来ると思っていなかった予想外のステージが生まれるかも?

何に使える?

  • 気軽にステージを考えられる。
  • ステージデータもテキストにシリアライズして共有できるとなおよし。
    • 作ったステージをslackにコピペで貼る、slackからコピペでステージデータを持ってきて開ける。

5. パズル部分はUnity(ゲームエンジン)から分離しよう

これは機能というより設計に近い話なんですが、
パズル部分だけはゲームエンジンから分離しておくのをおすすめします。
Unityで言えば、asmdefで切って"No Engine References"にチェックを入れてビルドが通る状態にするだけでオッケー。

分離しておくことで「2. 解答自動作成機能」をUnityの無い環境(例えばGitHub Actionsで安いLinux上で動かすとか)で動かしたり、
「4. スマホで動くステージエディタ」などを分離して開発することが出来たりします。

追記

Undo機能は最初から考慮して実装しておきましょう。
ゲームデザイン的にユーザーに使わせない、という選択肢もありますが、
この機能については後からやっぱり追加したい!となったときのコストがでかいです。
どうせデバッグ時には使いたくなりますし・・・

まとめ

「プロダクト開発は後になるほど、新規機能の開発コストが下がるようにしていくべし」
という、もはや誰から聞いたかすら覚えていないけれど、ずっと心に残っている言葉があります。

ここに書いた機能も、何も最初から全部準備した方が良い、と言いたいわけではありません。
それでも、1度でも「あ、この機能ないと不便かも」と思ったらすぐ作った方が、その後の開発が効率よく進む助けになるはずです。

インディーゲーム開発だからこそ人力で乗り越えられないところは、さっさと機械に任せてしまいましょう!


インディーゲーム開発者向けの「開発効率化コンサル」みたいなこともやっているので、
「もっと詳しく教えて」とか「うちのプロジェクトで自動化出来るところない?」みたいな相談は、
こちらからお気軽にお問い合わせください。
https://kyubuns.dev/message.html