オプション実装
オプションはユーザにより快適に遊んでもらうための設定だ。
何が必要かはゲームによって変わるがよくある項目は以下のものだろう。
- BGM・SEの音量設定
- ゲームの高速化・最適化(エフェクト量を減らしたりなどで低スペック端末でも遊べたりなどや音ゲーの場合はタイミング設定など)
- 入力設定の変更(例えばカメラの上下移動をジョイスティックで操作する場合の好みとか)
今日はこの辺りを実装するにあたり、ステートマシンの実装を行う。
ステートマシンは状態遷移だ。
ゲームはいくつかの状態を遷移する。
よくある遷移は以下のようなものだろう。
タイトル⇒ステージセレクト⇒ゲームメイン⇒リザルト⇒ステージセレクトへ
⇔オプション
今回はミニゲームなのでステージは1個でいい。なので
タイトル⇒ゲームメイン⇒リザルト⇒タイトルへ
⇔オプション
でいいだろう。
ステートマシンを最初から入れるプロジェクトもあれば後半から入れるプロジェクトもある。
個人の開発なので、楽しいと思うことから始めるのが一番だと思う。
それが形となったら周りを固めればいい。(その分初期化タイミングなどを考慮していないと何度もゲームを遊ぶ際には初期化周りが面倒なことになるけど…。)
なんだかんだ1個のステートマシンはシンプルだ。
enumでさっきの状態を書き、タイミングによってステートを変えればいい。
その状態を把握して周りがうまく動けばいいだけだ。
ステートマシンよりもUXを考慮したUIを作るのが面倒。
首振りだけで操作するって実装してみると大変だなぁ。