NPC をコーディングして領地経営するゲーム開発(称号の仕様と実装)
「称号」という、ある条件を満たすと得られるスキルみたいな概念の仕様を決めて実装していきます。
やりたいこと
ある条件を最初に達成した NPC に例えば「最高の料理人」みたいな称号が付与されるようにして、その称号を持っていると何らかのボーナスが得られるようにしたいです。
とはいえ、どういう称号があると楽しいかを列挙しきれてないので、とりあえず複雑でない称号を実装します。
能力値による称号の付与
例えば
- 称号: 力自慢
- 条件: STR が最初に 120 以上になる。
- 効果: STR + 30
とかです。
STR が高い NPC の STR を称号でさらに上げていいのか? 的なことは後でまた考えます。この条件と効果については、ハードコーディングではない方法で実装したいと思っています。
ワークの回数による称号の付与
これは
- 称号: 熟練シェフ
- 条件: キッチンでワークした回数が最初に 50 回以上になる。
- 効果: キッチンでのワークするときのスタミナ消費が半分になる。
とかです。
称号による効果を多彩にすればするほど、実装が小難しくなりそうで悩ましいです。
やったこと
称号を実現するための仕組みを
- 能力値が上がったときに称号付与をチェックする Lua スクリプトを呼び出す。
- 建物ごとのワークの回数を NPC に保持させる。
- ワークの回数が増えたときに称号付与をチェックする Lua スクリプトを呼び出す。
- 称号の効果が発揮される処理に NPC の持ってる称号を渡して「称号があれば効果がこう変わる」という処理を埋め込む。
という感じで実装します。
称号の効果の実現については、称号を「装備品の1つ」として扱うことにします。
そしてテスト用に「STR が 101 以上になったら『剛力(HighStrTitle)』という称号を与えるためのコードを作って動作するようにしました。
↓ 条件のチェックと称号の付与を行う Lua スクリプトの抜粋
よいです。
保持している称号の表示
とりあえず称号が取得できるようになったので、取得した称号を表示するあたりを実装しました。
↓ 右下にその NPC が保持している称号が表示されるようにした。
よいです。
この称号が実際に機能するあたりはまた後で実装します。
あと称号の効果をどうプレイヤーに提示するかですが、
- 称号表示の右側に文章を記述する。
- 称号を一覧表示する機能を作る。
- NPC の詳細情報を表示できるようにして、そこで確認できるようにする。
とか考えました。2,3番目の方法を実装したいと思いますが後で着手します。
まとめと今後の予定
とりあえず称号の仕様を決めて基本的な称号を実装しました。
称号に限らずアイテムのパラメータや効果はプレイヤーが変更できるようにしたいと思っていて、それをどうするかの検討もそろそろ行いたいです。
次回は、称号が機能するあたりか、称号やアイテムの追加やパラメータ変更などの MOD 機能をどう提供するかを考えるか、雑多なタスクに着手しようと思います。がんばります。