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

Make radar position error configurable per emitter

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

Description

Currently, radar wobble is by default a global setting, controlled by the `isTargetingUpgrade` unit def tag, and the `SetRadarErrorParams` callout. It can also be configured per-unit with the `SetUnitPosErrorParams` callout.

The desire is to base radar wobble on the radar coverage of the specific unit, where position error parameters can be set per emitter. When multiple emitters cover the same unit, a method would be required to specify whether the wobble should be based on the maximum individual emitter strength, or the combined individual emitter strengths.

**Proposal**

- Add new unit def tags, `radarError` and `sonarError`, integer of how much radar wobble to apply
- If unspecified, use the default value as exists in current functionality
- Add new modrule, `BaseRadarError`, integer for default amount of radar wobble
- Add new modrule, `CombinedRadarErrorReduction`, string with values `maximum`, `additive`
- Calculate radar wobble for each radar blip based on the strength of the emitters detecting that blip, before applying any effects from `isTargetingUpgrade`

Contributor guide

Open the contributing guide

Research direction

Start by tracing the existing SetRadarErrorParams and SetUnitPosErrorParams callouts and the isTargetingUpgrade unit definition tag. Done means supporting the proposed radarError and sonarError tags, the BaseRadarError and CombinedRadarErrorReduction modrules, and emitter-based wobble calculation with maximum or additive aggregation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.