Skip to content

Doorway repulsion and corridor chokepoint yielding in Argus_ActEscort and Argus_AI #202

Description

@saworbit

Overview

One of the most frustrating classic co-op bot failure modes is door blocking: the human player enters a room, encounters heavy monster fire, attempts to backpedal through the doorway, and gets jammed against the companion standing squarely in the threshold.

Following established companion AI standards (such as Left 4 Dead and Half-Life survivor bots), companions must treat doorway volumes, narrow arches, and chokepoints with active avoidance.

Proposed Changes

1. Doorway Volume Repulsion

  • Identify active and resting door trigger/portal volumes from the BSP/cartograph data.
  • In \Argus_ActEscort, if the bot's candidate formation position sits within a door bounding box or immediate portal threshold, shift the target outside the doorway portal.
  • Never choose a standstill hold point inside a door frame.

2. Backpedal Yielding & Chokepoint Clearance

  • When the human teammate's velocity is directed toward the companion (\dotproduct(v_forward_teammate, self.origin - teammate.origin) < 0\ while distance < 96u):
    • Treat the player as actively retreating or kiting.
    • Companion immediately yields space, backpedaling or tucking into wall recesses to give the human an unobstructed escape corridor.

3. Combat Line of Movement Clearance

  • In \Argus_BodyBlockCheck, if teammate is taking damage or firing while moving backwards, companion immediately widens lateral separation to avoid collisions.

Acceptance Criteria

  • Verified on maps with narrow door thresholds (e.g. E1M1 opening corridor, slipgate door, E1M2 tech base doorways).
  • Companion never wedges human in doorways during combat or exploration.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    aiBot decision making, perception, and state machinesenhancementNew feature or requestnavigationWaypoint graphs, reachability, path following, and movement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions