Anne の Tank を理解する:追跡、ターゲット選択、地形判断
12 の操作可能な 3D シーンを使い、Tank がバニーホップする理由、目標を切り替える理由、はしご口で減速する理由、そして 1.x、2.0、2.1 の挙動の違いを解説します。
まず Tank の一連の動きを追う
同じ Tank でも、開けた場所では連続して跳び、壁の角では曲がり、はしごの手前では急に減速することがあります。こうした変化を単に「速度を上げた」「AI の挙動がおかしい」と片付けがちですが、Anne の ai_tank3 を見るときは、誰を目標に選んだか、経路はどこへ向かうか、このジャンプは安全か、接近後はパンチか投石か、という 4 点を順に確認する方が役立ちます。
この記事は、このサーバーの挙動を理解したいプレイヤー向けであり、問題を調査するサーバー管理者のために設定値とソースコードへの入口も示します。対象は ai_tank3 が制御する AI Tank です。Tank の体力、キャンペーンでの出現進行、炎上ルール、各ゲームモードの変更内容を、ここで一律に定めるものではありません。実際に使われているモード、プラグインのバージョン、設定の方が、「以前ほかのサーバーで見た」という経験より確かな根拠になります。
この 3D 比較の使用方法
デモの左側はオレンジ色のリファクタリング前 1.0.0.13、右側は緑色のリファクタリング後で、2.0 と 2.1 を切り替えられます。青い人物は生存者です。まずシーンを選び、次に重要な時点をクリックすると、両画面を同時に連続再生するよりも、違いが目標選択、ジャンプ方向、動作終了後の状態復帰のどこにあるかを確認しやすくなります。
ドラッグで回転、ホイールでズーム、右ドラッグで平行移動できます。スマートフォンでは 1 本指で回転、2 本指でズームします。俯瞰は追跡経路、側面ははしご、低い天井、落下の確認に向いています。左右の視点は初期状態で同期され、タイムラインはドラッグ可能、再生速度は 0.25~2 倍です。ボタンや入力欄にフォーカスがないときは、スペースで再生を切り替え、左右キーで 0.1 秒ずつ移動します。最初の 2 シーンでは 6 段階の難易度と能動的な左右交互バニーホップも切り替えられます。
3 つのバージョン、何が解決されていますか?
| バージョンの比較 | 主な変更点 | 見るときは注意してください |
|---|---|---|
| 1.0.0.13 | バニーホップ、一部の経路追従、Tank の頭に乗る生存者への処理、移動先を見越した投石照準はすでにあります。 | 旧版でも迂回や予測をまったく行わないわけではありません。例では、処理がうまくいかない可能性のある分岐に焦点を当てています。 |
| 2.0.0 | 経路判断、敵の選択、頭上スタックの処理、および避難コマンドを一貫したプロセスに整理します。 | はしごの入り口で速度を落とし、経路探索コストに基づいて敵を選択し、避難後に通常の動作に戻ることがこのラウンドの焦点です。 |
| 2.1.0 開発スナップショット | 空中での経路接続、遠距離でジャンプごとに左右を切り替える処理、安全な通常落下で速度を保つ接続を追加しました。 | 新しいロジックを含むシナリオはなく、2.0 と 2.1 は同じように動作します。 |
バージョンの違いを理解するときは、まずルールとパラメータを区別してください。道は直接追跡をサポートし、はしごの入り口は道を譲る必要があり、敵を選択するときはアクセスしやすさを考慮する必要があります。これらは行動ルールです。連続ジャンプの上限、ジャンプあたりの推力、横ジャンプの偏向角、ステアリングの下限が難易度パラメータです。難易度を上げることは、Tankが壁を通り抜けたり、はしごを無視したり、すべての安全チェックを解除したりできるようにすることを意味するものではありません。
なぜ近くにいる人を手放し、遠くにいる人を追いかけるのでしょうか?
画面上で近く見えても、Tank の足元から歩いて到達できるとは限りません。足場上の A と Tank の直線距離は短くても、実際には反対側へ回り、はしごを探す必要があるかもしれません。地上の B は遠く見えても、経路上では到達しやすい場合があります。2.0 以降の統一ターゲット選択処理は、段階化した経路探索コストで目標を比較し、拘束中、行動不能、セーフルーム内などの除外条件も引き継ぎます。
ここでいう「経路探索距離」は段階化した近似値であり、毎回マップ全体の最短経路を求めるものではありません。2 人が少し動いただけで Tank が目標を何度も切り替えないよう、切り替えには明確な利得が必要で、約 2 秒間は現在の目標を維持します。はしごを登る間も目標を固定します。そのため、短時間元の相手を追い続けても、近い目標を見つけていないとは限らず、現在の追跡を維持している場合があります。
目標が見えていても、その方向へ進める経路かを先に確認
2.0 以降、ジャンプ方向はまず NextBot の経路スナップショットを参照します。目標を視認でき、高さが近く、経路自体が目標方向への前進に対応している場合に限り、予測位置へ直接追跡できます。条件を満たさない場合は、経路上の到達可能な先読み地点を追います。透明な窓、高台の縁、壁越しに見える生存者については、見かけの直線距離だけで安全な経路を決められません。
2.1 ではこの判定を空中にも拡張し、約 0.05 秒ごとに目標または安全な経路の先読み地点を更新して、曲がり角の後も次の区間へつなげます。経路追従は 1° の小さな角度差から滑らかに補正し、直接追跡では難易度ごとの角度下限を使います。検出頻度と旋回応答は別の値であり、0.3 秒の平滑応答パラメータは、0.3 秒ごとにしか経路を確認しないという意味ではありません。急角度、遮蔽、チェック処理の余裕不足がある場合は、着地してから曲がることもあります。
左右交互バニーホップと空中追従は別の仕組み
左右の連続ジャンプにより、各ジャンプの横方向の偏角が変化します。 2.1 ターゲットは 600 hu 以上で、同じレベルに表示され、パスは直接追跡をサポートし、ジャンプははしごなどの特別なセクションを横切る必要はありません。最初のジャンプの左右はランダムです。着地後に次のジャンプで向きを変えるのを確認すると、空中でランダムに反転することはありません。目標に近づくと、進路が曲がったり、側道が塞がれたりした場合、偏向角をキャンセルし、安全な通常の追跡方向に戻ります。 hu は、マップで使用されるHammer 距離の単位です。
空中追従は別の状況を扱います。Tank が跳んだ後に生存者が横移動し、元の方向が適切でなくなった場合、2.1 は次のジャンプまで待つだけでなく、許容角度内で継続的に滑らかに補正します。補正前には残りの飛行経路も検証します。スナップショットが無効で、直接追跡の条件も満たさない場合は慣性を維持します。無条件に追跡する機能ではなく、空中で自由に方向転換できるわけでもありません。
そのため、接近後に左右の振れが消えても機能停止とは限らず、こちらの折り返しへすぐ追従しなくても反応が遅いとは限りません。まず距離と経路を確認し、次に難易度を見ます。デモの最初の 2 シーンでは、旋回の違いだけを比較するため両側に同じ難易度の速度設定を使っており、旧版の初期設定をすべて再現しているわけではありません。
6段階パラメータ:追跡感を決める数値
以下は 2026-09-16 の作業ツリーで動的に設定されている Tank の数値です。最初の5段階は自動選択できますが、Neri は手動で有効にする固定難易度です。表の上限は設定上の制限であり、出現時から出る速度でも、アニメーションで測定した平均速度でもありません。地形、安全チェック、モード上書きにより実速度は低くなる場合があります。Alone では専用の上書き項目で Tank のバニーホップを無効にできます。
| 難易度 | 停止距離 (hu) | バニーホップ速度上限 | 着地ごとの連続ジャンプ推力 | 最初のジャンプ推力比 |
|---|---|---|---|---|
| イージー | 220 | 500 | 40 | 0% |
| ノーマル | 190 | 600 | 48 | 20% |
| ハード | 160 | 700 | 55 | 40% |
| エキスパート | 135 | 800 | 60 | 60% |
| エクストリーム | 120 | 800 | 65 | 80% |
| 音理 | 120 | 1000 | 65 | 100% |
ジャンプ停止距離が大きいほど、最後の区間で早く通常追跡へ戻ります。これはパンチの命中距離ではありません。最初のジャンプの推力比率は、走行から最初のジャンプへ移る際の追加推力だけに影響します。イージーの 0% はジャンプできないという意味ではありません。着地後の次のジャンプには完全な推力を使うため、最初のジャンプだけで追跡全体の速度を判断できません。
| 難易度 | 直接追跡補正の下限 | 左右交互バニーホップの偏角 | 石が解放された後の保護 (秒) |
|---|---|---|---|
| イージー | 10° | 8° | 0 |
| ノーマル | 8° | 10° | 0.05 |
| ハード | 6° | 12° | 0.10 |
| エキスパート | 5° | 15° | 0.15 |
| エクストリーム | 4° | 18° | 0.20 |
| 音理 | 3° | 20° | 0.25 |
6段階すべてで能動的な横方向ジャンプの開始距離は 600 hu、直接追跡補正の上限は 89° です。角度の下限が小さいほど、小さな横移動でも早く補正が始まります。岩の保護は投げた直後の岩エンティティに適用され、AI とプレイヤーの Tank の両方が対象です。Tank 本体の無敵時間ではありません。この保護についても 3D デモでは射撃をシミュレーションしていません。
狭い通路、低い天井、はしご:ジャンプ停止は正しい経路選択の場合がある
通路に隙間が見えても、Tank の当たり判定がバニーホップで通過できるとは限りません。2.0 では地上から跳ぶ前に経路全体を確認しています。2.1 では空中で方向を変えた後の残りの放物線を、上昇区間も含めてさらに確認し、着地点だけを見て途中の壁や天井を見落とさないようにします。横方向ジャンプの候補が危険なら通常方向へ戻り、必要に応じて地上を走って通過します。
はしご口では、ゲーム本来のはしご動作を優先します。経路上で次にはしごを登ると分かると、距離に応じて早めに速度を制限し、動作を譲る範囲に入るとジャンプをやめて走行速度まで落とします。登り始めた後は向きと目標を固定します。一方、横にある無関係なはしごを通るだけなら、新しい経路スナップショットによって誤作動を防げます。スナップショットが無効な場合ははしごエンティティ検出へ戻るため、はしごの横では常にジャンプを続けるとは断言できません。
足場の縁:減速するときと、そのまま跳び出すときの違い
2.0 は 56 hu を超える経路上の落下を保守的に制限し、先にジャンプ速度を抑えてから縁まで歩き、自然に落下することが多くなります。2.1 では、経路が明確で落差が 256 hu 以下の通常落下に、速度を保つ接続を追加しました。実際の下層の高さから長めの滞空時間を算出し、飛行経路全体を確認し、さらに着地点と当たり判定の四隅に地面の支えがあることを検証します。すべて通過した場合だけ速度を保って跳び出します。
この機能は、崖を見れば飛び降りるという意味ではありません。経路がない、着地点が不確実、途中に壁や低い天井がある、前方にはしご口やジャンプ区間がある、さらに深い落差がある場合は引き続き制限されます。縁で能動的に蛇行したり、ジャンプ投石したりもしません。落下中は検証済みの方向へ慣性を保ち、「継続ジャンプ」は空中ではなく着地後に行います。デモは 200 hu の足場を使い、2.0 へ切り替えて 2 種類の処理を比較できます。
頭上の生存者を攻撃できず足止めされる状態:代替目標がいる場合と 1 人だけの場合
生存者が上にいて、下にいる Tank の攻撃が届かない状態が続く場合、本当に到達不能で足止めされているのか、上へ向かう経路を探している途中なのかを区別する必要があります。はしごやよじ登りで到達できる目標には観察時間を長く取り、Tank がはしごを登ろうとした直後に足止め処理で中断しないようにします。停滞して到達不能だと確認し、ほかに有効な目標がいる場合は、元の目標を 10 秒間一時的に除外してから、統一ターゲット選択処理に選び直させます。
代わりの目標がいない場合は、離脱して投石する処理へ移ります。到達可能な離脱地点を探して必要な距離を取り、投石を再開します。2.0 の重要な修正は離脱命令の終了処理を統一した点で、到着、タイムアウト、停滞、計画終了のいずれでも RESET し、通常の挙動制御へ戻します。これがないと、離脱地点を選んだ後も古い MOVE 命令が残り、その場に立ち続ける場合があります。離脱できなくても距離が十分ならその場で投石し、近すぎる場合は無理に投げません。
Tankの頭に乗っても安全とは限らない
Tank の頭に乗る場合と、近くの高台に立つ場合は別の状況です。旧版でも Tank の頭に乗る生存者を検出し、上向きのパンチを試します。2.0 では通常のパンチと追加の上向き SweepFist を残し、約 3 秒間攻撃が当たらない場合は、先に後退せず、その場から頭上の生存者へ投石します。水平距離がほぼゼロでも照準方向を決めるフォールバックがあり、通常の遠投向けの計算が方向を失うのを防ぎます。
デモでは意図的に攻撃が当たり続けない分岐を示すため、一定時間後に投石へ切り替わります。上向きのパンチが命中するなら、そこまで待たずにパンチを続けます。頭上に立てば必ず Tank を止められると考えると、マップ形状、当たり判定の位置、プラグインのバージョンといった前提を見落とします。
石は予想された場所に向けられていますが、それでも外れる可能性があります。
投石の準備動作をする位置と、実際に石が手を離れる位置は同じではありません。2.0 では実際の投石フック内で、石が離れる本当の位置から低い放物線を求め、重力と飛行時間を使って移動先を見越した照準補正を行います。頭上で足止めされた状態を処理する強制投石計画では、計画対象を優先し、その場で最も近い視認可能な目標に上書きされません。
移動先を見越した照準補正は、目標の動きの推定に依存します。生存者が急に折り返す、障害物に隠れる、目標の状態が変わると、予測位置と実際の位置がずれるため、「予測する」ことは「必ず当たる」ことではありません。旧版にも同様の照準補正とジャンプ投石があり、変更点は投石位置、弾道、目標選択の一貫性です。アニメーションはこの関係だけを示し、命中率は提供しません。アニメーション上の石の弧を使って実サーバーの弾道を調整することもできません。
メカニズムを4つの実用的な観察ポイントに変換
- まずはお部屋を確認:現在のモードと AI 難易度を確認してから、この記事のパラメータが当てはまるか判断してください。Neri、Alone、別のサーバーでの経験を、すべての Anne ルームに共通するルールとして扱わないでください。
- Tank 本体だけでなく経路を見る:壁のどちら側を回るつもりか、はしごの入り口に近いか、落下の下に道があるかどうかを確認してください。単純に直線距離を伸ばすよりも、ルート変更を強いられる地形の方が注目に値する。
- 近づいたらターゲットをもう一度見る:横方向ジャンプの解除、バニーホップの停止、短時間の目標維持はいずれも想定どおりの挙動かもしれません。味方同士で援護できる射線を保ち、Tank が一時的に背を向けたからといって全員で同じ退路へ詰め寄らないようにします。
- 投石時は石が離れる位置と着地点を見る:カバー、移動方向、チームメイトの位置を一緒に考慮します。予測軌道は予測位置に従いますが、急激な方向転換が有効かどうかは距離と地形に影響されます。デモでの非表示方法を保証として受け取らないでください。
これらの観察点は 1 回の戦闘を理解する助けにはなりますが、万能の立ち位置を示すものではありません。互いに救助できるか、退路が通常感染者に塞がれていないか、誰かが特殊感染者に拘束されていないかの方が、1 本のバニーホップ軌跡だけを調べるより緊急な場合が多いです。戦闘時の役割分担と Boss の進行については、下の Tank と Witch の入門記事も参照できます。
自分の行動が異常だと感じたときに役立つ記録を残す方法
まずマップ、場所、ゲームモード、AI 難易度、プラグインのバージョン、その時点での各生存者のおおよその位置を記録します。録画には異常動作の前後をできるだけ残してください。ジャンプ前に目標が見えていたか、はしごや縁を通った直後か、目標変更前にすでに停滞していたか、離脱後に追跡へ戻ったかを確認できるようにします。「立ったまま動かない」最後の 1 フレームだけでは、安全のために動作を譲ったのか、到達可能な経路がないのか、本当に状態が残ったのかを見分けにくくなります。
報告には最も近いデモシーンを添えられますが、実サーバーとの違いも明記してください。たとえば 200 hu の足場ではない、頭上に低い天井がある、経路が着地点へ続いていない、といった違いです。デモの経路は手作業で設定した参考線で、人物は見やすいよう拡大し、ラベルは地形に隠れません。最初の 2 シーンは滞空時間を 0.773 秒に固定した簡易計算を使い、残りはキーフレームで状態遷移を示します。実際の調査ではマップの nav、衝突判定、サーバーログを確認する必要があります。
バージョンベースとその後の検証
この記事とサイト内デモでは、再確認できる説明版を固定しています。1.x の比較基準は c6b201e14^、2.0 は c6b201e14、2.1 は 2026-09-16 の開発作業ツリーです。今後プラグインが更新された場合は、シーン説明、動的設定、この記事のパラメータを併せて確認してください。開発スナップショットは新設計の説明にはなりますが、現在の特定ルームでこのコードが動作している証明にはなりません。
- 経路と移動
- ai_tank3/path.inc、movement.inc:経路先読み、特殊区間、地上バニーホップ、空中補正、落下経路チェック。
- ターゲット選択とスタック処理
- ai_tank3/target.inc、overhead.inc、command.inc:統一ターゲット選択、頭乗りと頭上スタックの判定、離脱計画、コマンドのリセット。
- 攻撃と難易度
- ai_tank3/combat.inc と configs/AnneHappy/dynamic_ai_difficulty.cfg:リリース位置、低い弾道のリード量、攻撃制約、6段階の挙動パラメータ。