RadiusVisualisationSpecification: Add field to maintain normal opacity when entity can not be built by the player

Place to ask discuss and request the modding support of Factorio. Don't request mods here.
MeteorSwarm
Long Handed Inserter
Long Handed Inserter
Posts: 59
Joined: Thu Sep 25, 2025 10:49 pm
Contact:

RadiusVisualisationSpecification: Add field to maintain normal opacity when entity can not be built by the player

Post by MeteorSwarm »

I've received this report that Muluna's Burner Roboport's radius visualisation is uncomfortable to look at, due to the way that the visualisation flashes the entire screen with one color, then another color when the cursor is out of range of the manual placement, then another color when the cursor hovers over a colliding entity. This behavior is currently hard-coded into radius visualisations defined with EntityPrototype::radius_visualisation_specification, so I can not address this report in the current version of Factorio[2.1.14]. Normally, this behavior is not unpleasant to look at, because typical radius visualisations are not so large that they can fill the entire screen when zoomed in.
When you try to place the burner roboport the whole screen can flash between 3 different colors:

- saturated green if cursor hovers near character and the roboport can be placed
- desaturated green if the cursor is out of range of the manual placement, but roboport can still be placed
- no background overlay if it can't be placed.

It's unpleasant to look at even if you are not sensitive to that kind of stuff.
Vanilla version doesn't behave the same way.

Not a bug, but UI/UX issue.
I've made the following screenshots to demonstrate the issue this user is describing:
08-23-2026, 22-23-27.png
08-23-2026, 22-23-27.png (9.63 MiB) Viewed 182 times
08-23-2026, 22-25-52.png
08-23-2026, 22-25-52.png (12.1 MiB) Viewed 182 times
08-23-2026, 22-53-04.png
08-23-2026, 22-53-04.png (10.57 MiB) Viewed 182 times
The Burner Roboport's radius visualisation specification is defined like so:

Code: Select all

radius_visualisation_specification =
                    {
                    	sprite =
                    {
                        layers = {
                            {
                                filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-radius-visualization.png",
                                size = 10
                            }
                        }
                        
                    },
                    distance = roboport.logistics_radius*2,
                    offset = {0, 0}
                    }
The purpose of this visualisation is to emulate the appearance of a roboport radius visualisation, which this entity can not render as it is an assembling machine prototype. The size of the radius shown is twice the burner roboport's logistic range, meaning that placing one burner roboport with another burner roboport within this radius will logistically link the two roboports. Unlike entity radius visualisations, roboport radius visualisations do not desaturate their color when out of range of player, likely for the reason that this user is complaining about. It is currently impossible to override this desaturating visualisation behavior.

There are two possible additions to the API that would help me solve this problem:

1. Lowest-level solution, workaround for my problem: Add a field to RadiusVisualisationSpecification that can disable saturation changes when the entity the visualisation is attached to can't be built by the player, either due to being out of range or the entity being obstructed.
2. Ideal solution: Add FluidEnergySource support to Roboport prototypes, making all of my code that makes the Burner Roboport work despite the engine's limitations obsolete.
Post Reply

Return to “Modding interface requests”