Feature/fast flags can be used to obtain an unfair advantage in action/competitive games.
For example, mesh LoD can be forced so they appear with little triangles, causing things like trees to become effectively see-through.
Gray sky can be used to gain a visual advantage, reducing effectiveness of fog…
I don’t expect Roblox engineers to remove these feature flags entirely, as they do have useful purposes. But I’d love a way to be able to tell when these flags were provided/modified by the user so we can prevent these unfair advantages.
UserSettings:IsUserFeatureEnabled only reads from flags prefixed with User, which then doesn’t apply to e.g. DFIntCSGLevelOfDetailSwitchingDistance
there are already methods to do this like game.GetFastInt/GetFastFlag and settings().GetFVariable
but unfortunately roblox restricted them to privileged lua code like corescripts, it’s not for developers
i honestly can’t think of any cases where allowing those methods to be called by level 2 scripts would be an issue, the list of fflags and their values is already a public thing anyways
maybe they don’t want it to be used for device fingerprinting by gathering a list of fflags and their values, it may vary across device and whichever roblox version (or a/b test) a player is running on, maybe they don’t want developers to construct an “identifier” out of this (would need to be combined with various other metrics to be even remotely useful though), i think you could just limit the allowed flags for lower privilege scripts to the ones that the roblox client whitelists to mostly fix this issue though, since players shouldn’t be able to apply most of the fflags unless they patch out the check or something