Unity で BehaviorDesigner を導入する際の役割分担など
設定値の管理ってむずかしい。 最近ようやっと Behavior Designer を本格導入し、「Behavior Designer 内に専用 variable あるのか・・」と概念の広がりを感じたのでなおのこと。
Unity で個人制作をしている場合、当然ながら「作業者は全部俺!」となるので全ての領域に対してアクセスできてしまう。 このため、開発中は「UnityEditor から MonoBehavior の public 変数にアクセスできるから、とりあえず急ぎ開発中だしココで!」とかしてしまってた。 くわえて「クラスの中にマジックナンバー(あるいは定数)埋め込んだ・・けど、どこだっけ。どんな名前だっけ」とかにもなってた。
全部が全部そうしていたわけではないが、焦っている時などは前述の行動をとりがちだったのだ。 ので、自戒の意味も込め、迷子にならないように自分用の地図をメモしておく。
左上の丸、世界・環境の設定
レベルデザイン。地形・照明・3Dオブジェクトの配置や、NavMesh生成・調整などなど。 sceneで管理するもよし、シングルトンとScriptableObjectでゴリゴリ管理するもよし。
中心の丸、人物・モノの思考や経験の設定
バランス調整。体力・移動速度といった変数の調整や、BehaviorTree の思考の組み替えをおこなう。 ゲームプレイ中は不変だが、ゲーム作成中は柔軟に調整したいものをこの領域におく。 難易度調整はここだけ触ればOK、になれるとよし。
右下の丸、人物・モノが自身・世界へ影響を与える行動の設定
意思決定は中心の丸に全て委ねるので、ここではActionの内容作ればよい。
攻撃の場合だと、 直前の行動はなにか
大・小どんな攻撃が選択されたか
ブレンドするアニメーションはなにか
などから判断をしてアトミックな行動を演出する。
これらは Asset のコンポーネントだったり、自身が作ったクラスだったりよしなに。