kumak1’s blog

kumak1のイラストや技術ログ

Unity で BehaviorDesigner を導入する際の役割分担など

設定値の管理ってむずかしい。 最近ようやっと Behavior Designer を本格導入し、「Behavior Designer 内に専用 variable あるのか・・」と概念の広がりを感じたのでなおのこと。

assetstore.unity.com

Unity で個人制作をしている場合、当然ながら「作業者は全部俺!」となるので全ての領域に対してアクセスできてしまう。 このため、開発中は「UnityEditor から MonoBehavior の public 変数にアクセスできるから、とりあえず急ぎ開発中だしココで!」とかしてしまってた。 くわえて「クラスの中にマジックナンバー(あるいは定数)埋め込んだ・・けど、どこだっけ。どんな名前だっけ」とかにもなってた。

全部が全部そうしていたわけではないが、焦っている時などは前述の行動をとりがちだったのだ。 ので、自戒の意味も込め、迷子にならないように自分用の地図をメモしておく。

f:id:kumak1:20200723155455j:plain

左上の丸、世界・環境の設定

レベルデザイン。地形・照明・3Dオブジェクトの配置や、NavMesh生成・調整などなど。 sceneで管理するもよし、シングルトンとScriptableObjectでゴリゴリ管理するもよし。

中心の丸、人物・モノの思考や経験の設定

バランス調整。体力・移動速度といった変数の調整や、BehaviorTree の思考の組み替えをおこなう。 ゲームプレイ中は不変だが、ゲーム作成中は柔軟に調整したいものをこの領域におく。 難易度調整はここだけ触ればOK、になれるとよし。

右下の丸、人物・モノが自身・世界へ影響を与える行動の設定

意思決定は中心の丸に全て委ねるので、ここではActionの内容作ればよい。 攻撃の場合だと、 直前の行動はなにか 大・小どんな攻撃が選択されたか ブレンドするアニメーションはなにか などから判断をしてアトミックな行動を演出する。 これらは Asset のコンポーネントだったり、自身が作ったクラスだったりよしなに。