見出し画像

インディーゲームの開発期間を短縮する隠し機能の話(ゲーム制作)

ゲーム開発では開発期間が短くなるほど人件費を抑制して利益を増やす事ができます。
多くのゲームでは一般ユーザーが使用できない隠し機能を開発中はフルに活用して、ゲームのレベルデザインの試行錯誤やゲームバランス調整、デバッグの時間を短くするようにしています。

個人や少人数のインディーゲーム開発においても、「こういう機能を実装するとゲーム開発の期間を短くできる」というのが色々あります。
それらの機能の在り無しで開発期間はかなり違ってきますので、できるだけ実装するようにしましょう。

実装のコストもかかりますが、長い目で見ると実装した方が開発期間を短縮できます。


・デバッグ専用のstatic変数を用意する

ゲームリリース時にはそういう隠し機能は全て使えないようにするのですが、いちいち各機能ごとにON・OFFの切り替えは面倒です。
そのため、unityでゲームを作っている場合はstatic変数で全ての隠し機能のON・OFFの切り替えができるbool型の変数(デバッグモード用変数)を一つ用意し、それがtrueの時のみキーボードの特定のキーを押すと色々な隠し機能を実行できるようにすると良いでしょう。

このデバッグモード用変数をtrueやfalseにするのはスクリプトファイル内の書き変えとかでいいと思います。
ただ、間違って製品版やアップデート版でもこの変数をtrueにしたままリリースしないよう、この変数がtrueの時は画面のどこかに『デバッグモードである事を示す表示』を常にするようにした方が良いです。

ゲームのタイトル画面にめちゃくちゃ大きく「デバッグモード中」と表示するのでも良いです。


・移動系の隠し機能

ゲーム制作を短縮化する隠し機能としてはまずは移動系のがあります。

・「ダッシュ移動以上の超スピードでキャラが移動できる」というのをいつでもキーボードでON・OFFできる機能。

・ワープゲートで指定の場所へ素早く移動できる機能(ワープゲートは何個も設置できるようにし、デバッグモードでない製品版ではワープゲートは表示されないようにする)

・移動先をいくつかの候補から選択したり、座標指定で移動できるパネルが開く機能

・障害物に当たらなくなる機能(自キャラとのみ障害物のコリジョンがOFFになる。ただし地面用のはOFFにはしない)

など、移動に余計な時間をかけずに指定の場所へすぐに移動できるようにするとゲーム制作の時間をだいぶ短縮できます。

縦や横スクロールのシューティングゲーム制作の場合も、「ステージの指定の場所からスタートする」という機能を実装すると良いでしょう。
毎回スタート地点からプレイする方式だと無駄に開発期間が長引きます。

音ゲー制作も同様に曲の途中からプレイできる機能を実装します。

・ステータス関係の隠し機能

キャラクターや自機のステータスを瞬時に変更できる機能も重要です。
RPGとかその他のキャラ育成系作品ではフルに活用します。

・キーボードの特定のキーを押すとパラメーターや装備品、所持アイテム、所持金などを変更できるパネルが開く

・キーボードの特定のボタンを押すと一瞬でレベルアップできる機能

・いくつもセーブしていたステータスに瞬時に変更できるパネルが開く

などがあります。

同じく色々なフラグなど内部パラメーターの確認や変更がすぐにできるパネルをON・OFFする隠し機能も実装したり。


・戦闘短縮のための隠し機能

コマンド選択式のRPGなどで毎回律儀に時間をかけて戦闘しているとバランス調整の時間がかかりすぎます。

「一ボタンですぐに戦闘が終わる(ノーダメージ終了)」とか「オート戦闘処理が一瞬で終わってキャラ達はダメージも食らっているし自分で回復などもしている」など、戦闘時間短縮のための機能も実装してみましょう。
エクスペリエンスの3DダンジョンRPGでは戦闘が高速で終われる機能を製品版でも実装していますが、ああいうのでも良いでしょう。

アクションRPGも「一撃で敵が死ぬモード」のON・OFFをいつでも切替えできると雑魚敵をすぐに倒せてテストプレイ時間の短縮ができます。


・ノーダメージモード

キャラがダメージを食らわなくなる機能のON・OFFをいつでも切替できると色々なゲームで重宝します。

・メッセージ系隠し機能

メッセージ系の隠し機能としては、「キャラの会話を一瞬で終わらせる機能」とか「大幅にスキップできる機能」を実装しているのとしていないのでは、RPGやアドベンチャーゲーム、その他メッセージシーンがあるゲームでのデバッグ時間がずいぶんと違ってきます。

ちょっと変わった機能としては、「通常通りメッセージを表示するが、気になった個所ではその箇所のメッセージテキストをその場ですぐ修正できる」みたいな機能の実装も重宝するでしょう。

立ち絵やアニメーションの変更もその場で行えるようにしたり。


・隠し機能は他の人にデバッグしてもらう時も使ってもらう

自分達だけでデバッグするだけでなく、デバッグを他の人にしてもらう事もあります。
そういう場合のために『どういう隠し機能を実装しているか?その効果や使い方などを解説しているドキュメント』も制作し、デバッグをしてもらう時はそれらの機能をきちんと使ってもらうようにしてください。

同じデバッグ期間でも隠し機能をきちんと使うと効率良くチェックできるようになります。

ゲーム制作ではこういう「隠し機能でかなり効率化する」というのは必須の作業となります。
今回紹介した以外にも制作期間を短縮する機能があったら是非実装してみてください。