beyond-all-reason / beyond-all-reason/RecoilEngine
Emit seismic pings on hasMoved, not isMoving
- 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
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