Skip to content

Bots never double jump or use the flat air dash #17

Description

@WilsonNet

Summary

EnemyBrain was written when jumping meant one ground jump. Two movement options
have since been added that it does not know exist:

  • The double jump (AIR_JUMPS = 1, AIR_JUMP_VELOCITY = -620) — a bot jumps
    from the ground and never presses again in the air.
  • The flat air dash — a bot dashes, but only to disengage on the ground. It
    never uses the fact that an airborne dash now holds its Y and crosses a gap in
    a straight line.

Why it matters

The canonical test is AI vs AI. diagnose.mjs --mode=online and
deathmatch-probe.mjs are the two runs that decide whether the game is healthy,
and neither can exercise a mechanic the bots do not use — so the double jump and
the air dash are currently only reachable by a human. That is the same blind spot
aim-probe.mjs exists for: a mechanic no bot touches is a mechanic nothing
measures.

It also makes bots read as worse than they are once humans are in the room. A
player who double jumps over a bot and dashes away is using two options the bot
cannot answer.

Evidence

movementSummary.wallJumps is routinely 0 across canonical runs, and no counter
exists for air jumps at all — which is itself part of the problem.

Suggested approach

  1. Measure first. Add airJumps and airDashes to movementSummary in
    PhysicsDiagnostics, so "the AI never does this" is a number rather than an
    impression. Expect zero, then watch it become non-zero.
  2. Teach EnemyBrain to spend the air jump when its target is above it and out
    of single-jump reach, and to air dash across a gap rather than walking around.
  3. Keep the personality spread — a bot that always double jumps is as readable as
    one that never does. AIConfig.skillLevel is the existing knob.

Definition of done

  • movementSummary.airJumps and airDashes non-zero across a handful of
    canonical runs, and still zero for a bot configured not to use them.
  • arenaSummary.surfacesUsed does not regress — the point is more of the arena,
    not bots stuck on the ceiling.

Out of scope

  • Changing the tuning of either mechanic. See specs/movement.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions