Skip to content

Conversation

@sunzenshen
Copy link
Contributor

Description

Aims to fix bots trying to climb ledges that they don't have enough crouch-jump height to pull off, by recalculating the underlying constants used by the bot locomotion interface to determine climbing eligibility for adjacent NavAreas.

Toolchain

  • Windows MSVC VS2022

Linked Issues

  • related Spread out bot teammate path planning #1535 (This PR made the issue more obvious because earlier all bots would follow easy paths, but the newer dispersal logic encouraged bots to take paths that were of impossible jump height differences for their class choice.)

@sunzenshen sunzenshen requested a review from a team December 18, 2025 07:15
@sunzenshen sunzenshen added the Bots Related to bot players label Dec 18, 2025
@sunzenshen
Copy link
Contributor Author

sunzenshen commented Dec 18, 2025

In a similar situation portrayed in this clip, previously bots following the same destination would try to jump up onto the trailer despite not having enough jump height, because under the hood their teammates had reserved the lane besides the trailer for traversal. Also note, at the 10 second mark, that the Recon class that is intended to make the jump can still do so with the PR's changes. The theory for this PR is that now bots of heavier classes will classify the sides of the trailer as too high to jump on top, which prevents them from attempting the climb.

bot_jump_crouch_height_recalc_constants_clip.mp4

Here's an example prior to this patch where a bot decides that they can make the jump on top of the trailer as a shortcut to the objective, but then they get stuck repeatedly failing to make the jump:

20251210-1211-59.1626480.mp4

^ (Video credit and initial bug report: @AdamTadeusz )

@sunzenshen
Copy link
Contributor Author

sunzenshen commented Dec 19, 2025

As a demonstration of the before/after A/B test for this fix, I used a cherry-pickable version of PR #1345 to demonstrate the effect these height constants have on pathing:

Before (on branch #1345 without the fixes from this #1558 PR):

bot_command_debug_before_jump_height_fix.mp4

After (by cherry picking #1345 onto a temporary copy of this branch #1558):

bot_command_debug_after_jump_height_fix.mp4

@sunzenshen sunzenshen force-pushed the bot-navarea-height-checks branch 2 times, most recently from 4bf68ef to 52e3093 Compare December 24, 2025 04:23
// ---
// Recon: 54 + 11 = 65
// Assault/VIP = 36 + 11 = 47
// Support = 36 + 11 = 47
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To start the conversation, in my testing on different maps, it seems like Support struggles the most when trying to jump onto elevation changes that are within this threshold, while Assault and Recon are generally more adaptable given their more conservative thresholds. Maybe we should consider some sort of standard lift gap and make that consistent between all the classes? For example, what about a standard gap of 7?

e.g.

Recon: 54 + 18 - 7 = 65
Assault/VIP: 36 + 17 - 7 = 46
Support: 36 + 11 - 7 = 40
Juggernaut: 50.4 + 13 - 7 = 56.4 (or round down to 56)

Copy link
Contributor Author

@sunzenshen sunzenshen Dec 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's really important for behavioral smoothness for Support bots to have a different navigation height clearance so I went ahead with applying the consistent 7 unit gap to all classes, such that Recon has the same height budget as before.

@sunzenshen sunzenshen force-pushed the bot-navarea-height-checks branch from 52e3093 to 3fd2788 Compare December 29, 2025 06:51
@AdamTadeusz AdamTadeusz requested a review from a team January 1, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bots Related to bot players

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants