beyond-all-reason / beyond-all-reason/RecoilEngine
[microoptimize] Default to collidefirebase=true if no firebases
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
Weapon `collideFirebase` defaults to `false`, so marines can shoot out of a bunker while sitting inside its collision volume. This is a good default.
However:
* if all the various `collideXYZ` tags are set to `true` for a weapon, collision check takes a fast path that skips them all and just assumes a collision.
* all other `collideXYZ` already default to `true`, `collideFirebase` is the only one that defaults to `false`.
* most games don't have firebases, so the default is a micropessimisation.
The engine could detect on load if there aren't firebases and set `collideFirebase` to false on all weapons.
Contributor guide
Research direction
No file or test is named. Trace weapon collision handling and the engine's load-time detection of available firebases, then confirm how the collideXYZ fast path treats collideFirebase. Done means the no-firebase case takes the intended fast path while collision behavior remains correct when firebases exist.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- game-dev, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100