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

[microoptimize] Default to collidefirebase=true if no firebases

Open
#1,056 0 comments 0 reactions 0 assignees View on GitHub
good first issue
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.