挙動の解説
脅威への反応、壁ぞいの移動、そして背後にある昆虫学の研究を紹介します。
GOKIs の住人は決まったアニメーションを再生しているわけではありません。GPU が毎フレーム各個体の状態を評価し、行動を選び、位置と速度を更新しています。挙動のモデルは、ゴキブリの逃走行動に関する査読論文を元に設計されています。
何が逃走の引き金になるのか
マウスカーソルは捕食者として扱われます。各個体は毎フレーム、カーソルとの距離を測ります。
- 脅威半径: 180 ピクセル。この範囲内に入ったカーソルが脅威と判定されます。
- 2 段階の反応: 弱い刺激は 警戒 を引き起こします (一旦立ち止まり、状況を見極めます)。強い刺激は 逃走 を引き起こします。
この 2 段階モデルは、Camhi & Nolen (1981) のゴキブリ巨大繊維反応に関する研究に由来します。
逃走の動きかた
逃走するとき、住人はランダムな方向に走るわけではありません。脅威に対する 4 つの好ましい逃走角度 から 1 つを選びます。
| 角度 | 意味 |
|---|---|
| 90° | 垂直方向への突進 |
| 120° | 斜め後方への離脱 |
| 150° | 鋭く反対方向へ |
| 180° | 真後ろへ直線的に退避 |
逃走のうち 約 90% は脅威から離れる方向ですが、残り 10% は意表を突いて脅威に向かう急角度の動きになります。この比率は Domenici et al. (2008) の観察と一致します。
壁ぞいの移動
ゴキブリは何かに触れているときに安心します。GOKIs ではこれを thigmotaxis (壁接触への先天的な好み、個体ごとに値が異なる) としてモデル化しています。逃走中でない住人は次のように振る舞います。
- 最も近い画面の端 (またはテキスト境界、後述) に向かって移動します。
- 端に到達すると、その縁に沿って動きます。
- 角の付近に長く滞留します。
各個体は独自の性格を持っています。生成時に thigmotaxis、boldness (大胆さ)、activity (活発さ) の 3 つの値がガウス分布からサンプリングされます。そのため、2 匹として同じ振る舞いをする個体はおらず、何匹に増やしても見飽きない動きになります。
サバイバル行動とデイリー行動
内部のステートマシンは行動を 2 種類に分けています。
- サバイバル行動 — ALERT (静止して警戒) と ESCAPE (逃走)。脅威によって発動し、ほかのあらゆる行動より優先されます。
- デイリー行動 — REST (疲労回復のための休息)、WALL_FOLLOW (端ぞいの移動)、EXPLORE (オープン領域の探索)、SEEK_WALL (端に向かって移動)。脅威が近くにないときに、ユーティリティスコアで選ばれます。
ユーティリティスコアは、現在の疲労、接触欲求、直近の行動履歴 (直前の行動を続けやすい傾向)、個体ごとの性格を加味して算出されます。
テキスト境界
画面の境界に加えて、“GOKIs” という文字の形を SDF (signed distance field) として生成し、もう一つの壁として扱っています。住人はテキストの輪郭も壁として認識するため、暇なときは文字の中に集まる性質があります。長方形の画面境界だけで充分という方は、メニューバーの テキスト境界を表示 をオフにしてください。
参考文献
- Camhi, J. M. & Nolen, T. G. (1981). Properties of the escape system of cockroaches. Journal of Comparative Physiology.
- Domenici, P. et al. (2008). Cockroaches keep predators guessing by using preferred escape trajectories. Current Biology.