Godot State Chartsを少し触ってみた

あまり情報が無かったので試してみました。
と言っても動画の通りにやっただけですが。

State machines and state charts in Godot / Godotneers - Youtube
https://www.youtube.com/watch?v=E9h9VnbPGuw

英語ですが、とても分かりやすかったです。

Godot State Chartsは状態を管理する状態マシンを提供するAddonで、イベントやプロパティを条件に状態の変遷を判りやすく管理できます。

シーンにStateオブジェクト(Compound:グループ、Parallel:並列、Atomic:単独、かな)とTransitionオブジェクトを配置して、TransitionオブジェクトにEvent、Guard(遷移条件)、Delay(Transitionが無効になるまでの遅延)を設定するだけで簡単に状態管理できそうです。
特にアクションなんかと相性が良さそうですし、単純なおさわりシミュレーションならこれ使えば割と簡単にできるのでは。

Guardを工夫すればStateAがONの時だけStateBを実行する、みたいなことも容易にできますね。
ExpressionGuardという、閾値を設定できるGuardもあるので、パラメータを参照しての状態遷移(なんかしらのカウンターが設定値以上の場合とか)もできそうです。

ただ、確率的ユーティリティベースAIだとどうなんだろう。
状態遷移が確率的に行われるんですよね。
例えば、選ばれる可能性のあるStateAとStateBに確率の重み(StateA:20%、StateB:80%)をつけて選択するという感じ。
この重み自体も内部パラメータによって変動するんでもう大変。
StateAは理性が高い時に選ばれやすくなってほしくて、StateBは興奮が高い時に選ばれやすくなって欲しいなぁ、と。

あと、TRPGから着想した「対抗・抵抗」の仕様があるんですよ。
理性パラメータと快感パラメータとで対抗・抵抗ロールして理性が勝ったら耐えるようなくぐもった喘ぎ声、快感パラメータが勝ったらはっきりした喘ぎ声、みたいな。

こういうの良くないですか(真顔)。
俺はとても良いと思います(真顔)。

現状しっちゃかめっちゃかで全く整理できてないので、prototype作成でこの辺のステート、パラメータ、アクション、リアクションまわりを整理しながらやるか、ということでGodot State Chartsを試した次第です。

自前で状態マシンを作った方が分かりやすいかなぁ、状態選択計算も一元化したいしなぁ。
閾値計算がState側にあるのがちょっと今回の設計思想と合わなそう。
固定値なら強力なAddonなんですけど、可変値だとちょっと使いづらそうな気がします。
使用感が良かったんで使いたいところなんですが、今回は仕様に合わないから見送りかなぁ。

ちなみに、喘ぎ声はどこかで加工とR18商用利用が許容されてるものを大量購入してRVC(AIボイスチェンジャー)にかければ一律な声質になってバリエーション作りやすいかな、と思ってます。
なんなら自分で喘ぎ声を録ってRVCにかけても良い(最後の手段)。
RVCかけた後に誰か特定の人に似ないようにだけ注意が必要ですね。
けっこうノイズが乗るらしいんですが、それはちまちま除去していくしかないかな。

そんなかんじ。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索