ArborFsmの負荷について

ここは、Arbor開発者へ不具合を報告するためのフォーラムです。
報告に必要な項目は以下の通りです。
  • Unityバージョン
  • Arborバージョン
  • OS
  • ビルドプラットフォーム
  • 再現方法
  • 再現プロジェクト(Arborや他アセットなどを含まない最小構成)もしくは動画
Here is a forum for reporting failure to Arbor developer.
The items necessary for reporting are as follows.
  • Unity version
  • Arbor version
  • OS
  • Build platform
  • How to reproduce
  • Reproduction project (Minimum configuration not including Arbor and other assets) or video

Forum rules
報告に必要な項目は以下の通りです。
  • Unityバージョン
  • Arborバージョン
  • OS
  • ビルドプラットフォーム
  • 再現方法
  • 再現プロジェクト(Arborや他アセットなどを含まない最小構成)もしくは動画

The items necessary for reporting are as follows.
  • Unity version
  • Arbor version
  • OS
  • Build platform
  • How to reproduce
  • Reproduction project (Minimum configuration not including Arbor and other assets) or video
kkk
Posts: 13
Joined: 2018/07/20 07:22

ArborFsmの負荷について

Post by kkk » 2018/09/03 12:56

お世話になっております。
バグというわけではありませんが、ArborFsmで、FsmをSubStateMachineReferenceを利用して、AIのメイン処理を分けていましたが、負荷が高く感じます。SubStateMachineReferenceは、ステートを移行するたびに再ロードするのでしょうか? 負荷を検証するために Profilerを確認しましたが、FindFieldBase.FindFieldでかなりの時間を要しているようです。Profilerのスナップを載せておきます。一度ご確認お願いします。
Attachments
スクリーンショット 2018-09-03 21.46.54.png
スクリーンショット 2018-09-03 21.46.54.png (203.38 KiB) Viewed 56 times

User avatar
caitsithware
管理人
Posts: 193
Joined: 2015/08/17 12:41

Re: ArborFsmの負荷について

Post by caitsithware » 2018/09/03 13:20

ご報告ありがとうございます。

まず、こちらの不具合報告にはフォーラムルールがありますが、その必須項目がなかったため警告させていただきました。
フォーラムルールを確認の上、必須項目も記入するようにお願いいたします。

負荷に関しましては、SubStateMachineReferenceを追加しているステートを初めて実行する際(OnStateAwake)にプレハブをInstantiateしております。
なので、最初の実行時にはInstantiateの負荷及びデシリアライズなどの処理が行われるため高負荷となっています。

また、既に実行したステートに戻ってきた場合はインスタンスを使いまわすようになっていますので、繰り返し実行した場合は問題ないかと思います。

処理負荷の改善は順次行っていきますが、動作上問題ないと思いまずので不具合対応ではなく今後の改善対応とさせていただきます。

kkk
Posts: 13
Joined: 2018/07/20 07:22

Re: ArborFsmの負荷について

Post by kkk » 2018/09/04 00:27

返信有難うございます。Instantiate時の高負荷については了解しました。
ただ、2回目以降のステート切替時も同様に負荷が高い気がします。資料をご確認ください。
できれば、SubStateMachineReferenceを利用したいので、こちらでも負荷軽減策が無いか模索してみます。

以上よろしくおねがいします。

環境
Unityバージョン: 2018.1.16f1
Arborバージョン: 3.2.0
OS: maxOS High Sierra 10.13.6
再現方法: SubStateMachineReferenceを利用したステート管理。SubStateMachineReferenceからSubStateMachineReferenceを呼ぶこともしています。
Attachments
スクリーンショット 2018-09-04 9.17.54.png
スクリーンショット 2018-09-04 9.17.54.png (114.7 KiB) Viewed 39 times

User avatar
caitsithware
管理人
Posts: 193
Joined: 2015/08/17 12:41

Re: ArborFsmの負荷について

Post by caitsithware » 2018/09/04 00:37

詳細ありがとうございます。

その画像にある負荷については、SubStateMachineReferenceから抜ける際に遷移回数の初期化のためにStateLinkを全検索している関係ですね。
こちらも改善できないか検討いたします。

kkk
Posts: 13
Joined: 2018/07/20 07:22

Re: ArborFsmの負荷について

Post by kkk » 2018/09/04 10:41

見た感じ、ArborFSMInternal.ClearTransitionCountでリセットしているtransitionCountは、Editorでしか使われていない感じなので、とりあえずUNITY_EDITORで囲って対応できそうです。ありがとうございました。

Post Reply