tsyu12345 / Rikkyo-MasterPJ

【立教 特別研究】修士論文、修了研究用リポジトリ
0 stars 0 forks source link

【横須賀MAP】一部の避難者が動かない問題 #47

Closed tsyu12345 closed 3 months ago

tsyu12345 commented 3 months ago

Image

なにかに引っかかっている感じ???

tsyu12345 commented 3 months ago

他の避難者が動いてから、順番に移動するような挙動をみせた。

もしかしたら、パス検索の処理がシングルプロセス的に動いていて、1人1人順番に行われている??

tsyu12345 commented 3 months ago

https://github.com/user-attachments/assets/bc0d6d5f-f0be-42c2-8573-14c81c385ff3

Image

tsyu12345 commented 3 months ago

どうもシングルプロセス的に動いているぽい。

https://discussions.unity.com/t/please-improve-the-navmesh-multithreading-layers-and-more/923845

pathPendingの値を見てみたら、falseになった時に動き始めたので、おそらくパス検索の処理がコールスタックにたまっている気がする。

とれる対応としては2点ありそう

tsyu12345 commented 3 months ago

暫定対応として、すべての避難者のパス検索が終わるまで待機する方法を採用

tsyu12345 commented 3 months ago

あるいは、道に迷っている人・避難所や高台がどこか分からない人、ということにするか?

要相談

tsyu12345 commented 3 months ago

石井さんから提供頂いた!!

https://docs.unity3d.com/ScriptReference/AI.NavMesh.html

pathfindingIterationsPerFrame 

The maximum number of nodes processed for each frame during the asynchronous pathfinding process.

1フレームあたりで計算できる量が決まっているらしいので、これを上げてみる

tsyu12345 commented 3 months ago

5000とかにしてみたところ、大きく改善。

実際避難者の数を1000人とかにすると、もう少し上げる必要があるかもだが一旦これで決め打ちとする。

// Master-Simulator\Assets\Scripts\EnvManager.cs
using UnityEngine.AI;
NavMesh.pathfindingIterationsPerFrame = 5000;

https://github.com/user-attachments/assets/5c3bfebc-feab-44cf-8971-b3ad68252709