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

Spring.DestroyGroundDecal returns true but doesn't actually remove the decal

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

Description

engine build 2401
Metal factions development version (not publicly available)

I got this when testing a new gadget that maintains an explosion scars table and each one has one decal associated that's created/updated/removed through the decals API.

When the scars are removed, the gadget calls Spring.DestroyGroundDecal to remove the decal, the call returns true, but the decal isn't actually removed from the table, as shown in the example below (debug lines i get from having 1 tank shooting at the same spot in a sandbox game with nothing else)

![image](https://github.com/beyond-all-reason/spring/assets/11828472/eac8be8d-e507-4eb9-b5b1-8f3361b53111)

In a normal game, the number of decals grows up to 500, then they're all cleared (including the building decals which weren't handled by the gadget). Subsequent decals work normally until the 500 limit gets reached again. I get no error messages or logs from this.

if engine is limited to 500 decals, including building decals, then that's too low. Should be configurable and the default should be many times higher.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the reported sandbox scenario with a gadget that creates, updates, and removes decals through Spring.DestroyGroundDecal, then inspect the decals API handling and the 500-decal limit. Done means the call actually removes the decal and the intended limit behavior is covered by a regression test or clearly documented configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api, computer-graphics, game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.