NPC をコーディングして領地経営するゲーム開発(トライアルステージを追加する)
料理を追加していて「この料理を一通り作るためのステージがほしいな」と思ったので、そういう仕組を決めて実装していきます。
やりたいこと
このゲームはコーディングするゲームで、一度作ったスクリプトは別ステージでも使い回せます。なので例えば「高級料理を1つずつ作るシェフ用のスクリプト」を作れば他のステージでも便利に使えます。
ただ、そういう「あったら便利なスクリプト」は必須でないゲームバランスにしたい気持ちと、せっかくだから作って使ってほしい気持ちとがあります。考えた結果そういうスクリプトを作ってもらうステージを「トライアル」というワールドのステージとして提供することにしました。
例えば「高級料理が1つずつ城塞にある状態にしよう」というのをクリア目標にしたステージを用意する感じです。
トライアルまわりの実現において、
- ワールドを開放する仕組み(すでに実装した気がする)
- トライアルのステージ自体
を作っていこうと思います。
やったこと
ワールドを開放する仕組みを実装する
確認したところ、ワールドには「このワールドがクリアされたらプレイ可能にする」という機能が実装されていました。トライアルステージは、チュートリアルの2章と3章のクリア時にプレイできるようにしたかったので、この機能を利用しました。
↓ チュートリアル1,2,3とトライアル1,2が表示されている様子
ただ、トライアルのワールドはプレイできないときには非表示にしたかったので「プレイ可能でないときには表示しない」というオプションをワールドの設定 YAML ファイルに追加しました。
↓ 隠すための HideIfCannnotPlay を追加した設定ファイル
↓ その設定の処理を実装した後の動作
実装して動作しました。よいです。
トライアルステージの作成
実際にステージを追加してプレイできるようにする作業は後でやります。
トライアルのステージを作ってクリアすることは「高級料理を実際に作れて食べられるか」などの開発中の動作確認も兼ねるつもりです。
コンポーネントがスクロールしないのを修正した
ここまでの内容とは関係ないのですが、オーダーを表示するスクロールエリアについて、スクロールバー以外の場所にカーソルがあるとホイールでスクロールしないようになっていたのを修正しました。
↓ 問題が起きていたオーダー表示
これは調べたら↓この記事と同じ現象でした。記事を参考にして修正しました。よいです。
https://note.com/gevvoihorry/n/nfb1fb3ae0f7b
まとめと今後の予定
今回は必須じゃないけどコーディングしてみてほしい要素のためにトライアルの概念を追加して実装しました。よいです。
次回は Python 対応か雑多なタスクか、フィールドの 3D 表示対応に着手しようと思います。がんばります。