beyond-all-reason / beyond-all-reason/RecoilEngine

Emit seismic pings on hasMoved, not isMoving

Open
#3,238 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
679
Forks
290
Avg merge
3d 2h
Merged PRs (30d)
40

Description

Seismic detection is possible to evade through a (difficult, unlikely) series of stutter-steps as long as a unit does not move during its SlowUpdate due to this:

```cpp
if (moveType->progressState == AMoveType::Active)
DoSeismicPing(seismicSignature);
```
https://github.com/beyond-all-reason/RecoilEngine/blob/0046bebf2a1f2d72fc196a6719ff1ccbc34ca4c6/rts/Sim/Units/Unit.cpp#L1106-L1107

Proposal is to track movement between SlowUpdates and raise this event based on that instead. Games have a hard time recording path system and move system data on their own.

Contributor guide

Open the contributing guide

Research direction

Start in rts/Sim/Units/Unit.cpp around lines 1106-1107 and trace how movement state is updated across SlowUpdates. Verify the seismic ping behavior with movement that occurs between updates, including stutter-steps; done means pings are emitted from movement history rather than only the current isMoving state.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.