Increase ProjectSettings
Security on Export
#9925
atlasapplications
started this conversation in
Engine Core
Replies: 2 comments 2 replies
-
You can also start the project with the |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Partially implemented by godotengine/godot#76161 but with a few key differences.
Overview
override.cfg
for exported projects as a project setting that cannot be changed once exported. This should be independent of thepck
encryption setting.Application
thenConfig
for the Godot Project Settings there's aProject Settings Override
where a path can be given for any file that can serve as anoverride.cfg.
This can be useful especially for project settings that are only read on startup and cannot be changed at runtime. However, there should be an option for specifying apass
that, if filled out, is thepass
for encrypting and decrypting this custom.cfg
file.res://
read-only on export is purely done for maintaining project integrity so this should fall in line with Godot's design philosophies.Why is this necessary?
I've found that I need to specify a custom
override.cfg
in theuser://
folder to switch from Vulkan to OpenGL on devices that don't support all the features that Vulkan requires for startup. My specific use case is that most devices support Vulkan but if it's detected that Vulkan doesn't work on the intended device, then OpenGL is a fallback. I'm only aware of the renderers being modifiable on startup from a configuration file likeoverride.cfg.
The current implementation of these designated configuration files come with risks. The main one being arbitrary modification of them by a user. Right now they can only be stored in plain text and there's no way to encrypt or obfuscate. I'm aware there's no fool proof way to guarantee that a user will never be able to modify the file but right now it's too easy.
Why is arbitrary modification of configuration files a big deal?
It allows the user to potentially encounter undefined/unintended behavior. This can lead to crashes, graphical glitches, or simply just an experience that the developer did not intend. I'm not referring to player freedom concerning gameplay as that is a completely different topic, but more about the technical characteristics of the game itself.
Beta Was this translation helpful? Give feedback.
All reactions