hasht's notes

ゲームAIやUnityの話題

Human-like衝突回避アルゴリズム

CEDEC2017のFFXVセッションで紹介されていたhuman-like(HL)衝突回避アルゴリズムについて。

cf. CEDiL (資料は要ログイン)

アルゴリズム

元はロボティクスの分野の手法とのこと。

  1. 放射状にrayを飛ばす
  2. rayの先端が最も目的地点に近い方向に進む

f:id:hasht:20180627185147p:plain

特徴

一般的なRVOやORCA

  • 有効性(振動してしまわないことなど)が証明されている
  • 不自然な場合がある
  • 局所解がある

それに対してHLは

  • 動作が自然
  • 拡張が用意
  • rayの数で負荷を調節できる
  • ライブラリは整備されていない

キャラが群衆を突っ切る場合など違いが顕著になるらしい。

例えばUnityではPhysics.SphereCastなどで容易にrayが飛ばせるので、ちょっと試した限りでは非常に実装しやすくて便利そう。