Editing Project Settings
Many project settings behave in an undefined way with World Builder. We remove these instances from the Project Settings UI inside the editor to help make this clear.
This is important as your deployed game will run in a different game environment from your editor, including its config settings.
Why can't we use all project settings?
Since World Builder enables interoperability by using a shared version of the morpheus platform (e.g. release v39.0.0
), with project-specific content downloaded live, not all a projects' settings will be applied correctly.
The way it works is as follows:
The client is downloaded and launched.
The build of this client is a specific build of the Morpheus platform, e.g. the release v39 build
Once the client has launched, and Unreal has started up, in the "startup" map, it will download the specific world's mod content.
❗ Any config that is read here, will use the Morpheus platform defaults.
Once the mod content has been downloaded, it will travel to the map defined for the world.
❗Any config that is read here will use the mod content's overrides to the Morpheus platform defaults (e.g. your project's own project settings)
If you use World Travel to travel to a different world, that world's mod content will be downloaded, and then you will travel to that world's map
❗Same as above, once you travel to the new world, the config will now use the new mod's project settings instead of the previous world's ones.

This means that roughly:
Any config that is read on starting a world, or during gameplay, will be usable - your project settings changes will apply.
This includes things like e.g. your
GameMode
(this is set and read per world), andInput
project settings (these are read at the point of spawning your character'sInput Component
, in your world)
Any config that is only read on engine start, and is not refreshed when you switch world, will not be updated, and so you cannot modify.
❗This includes things like your
GameInstance
- this persists across world travel, so cannot be changed by an individual world/project.
"Read-only" project settings
Since we know that some project settings will work, and others are either known to not work, or have not been verified yet, we split project settings into "read-only" settings, and modifiable ones. The default visible project settings are known to work when changed by downstream projects, and so can be freely modified.
If you want to view Read-only settings, there is the View read-only settings
button, that will toggle their visibility.

AssetManager
is set up on engine start, so changes to it in downstream projects would not get applied. It is therefore read-only, and so not modifiable downstream (without workarounds)Adding your own project settings overrides
You are able to do so using the standard Project Settings UI. If there is a setting you'd like to change that isn't visible, we recommend contacting your support engineer. We're working on making it clearer as to why some settings are disabled.
It is still possible to add settings to the project config file via the ini file directly but we do not encourage usage of this and should only be used when required.
How to override CVars per scalability group (recommended)
This process outlines how you can modify the existing scalability group settings. This allows users within your game to select an overall graphics settings from the game menu - where each setting represents a scalability group - but where the CVars set by that scalability group can deviate from our predefined base settings.
To override the CVars that will be applied when a user selects any quality level you can
Find or create the
<Project Location>/Config/DefaultScalability.ini
config file for your project.Refer to the
<Editor Location>/Config/BaseScalability.ini
config to locate the CVar you want to override.Copy the section header for the CVar you will be overriding and paste it into the
DefaultScalability.ini
if it doesn't already exist.Copy the CVar(s) you want to override into
DefaultScalability.ini
uner the appropriate section headers copied or located in step 3.Modify the values for those CVars.
After doing the above steps, you must re-upload your content and use the new content for the changes to take effect. Once that is done, the next time you launch a world with your new content, your users will be using the new quality settings with the custom CVars
Example usage
Assume I want my game to display cinematic quality shadows at the lower graphical settings. I can locate the BaseScalability.ini
file and find the section header [ShadowQuality@Cine]
. To ensure that the lowest quality setting show these same shadow settings I can copy and paste this section header and all CVars within it into <Project Location>/Config/DefaultScalability.ini
for my project. Now after changing the quality level in the heaer to be 0
, the lowest quality level will use these CVars and show cinematic shadows
DefaultScalability.ini
[ShadowQuality@0]
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=10
r.Shadow.MaxResolution=4096
r.Shadow.MaxCSMResolution=4096
r.Shadow.RadiusThreshold=0
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=1.0
r.Shadow.PreShadowResolutionFactor=1.0
r.DistanceFieldShadowing=1
r.VolumetricFog=1
r.VolumetricFog.GridPixelSize=4
r.VolumetricFog.GridSizeZ=128
r.VolumetricFog.HistoryMissSupersampleCount=16
r.LightMaxDrawDistanceScale=1
r.CapsuleShadows=1
r.Shadow.Virtual.MaxPhysicalPages=8192
r.Shadow.Virtual.ResolutionLodBiasDirectional=-1.5
r.Shadow.Virtual.ResolutionLodBiasDirectionalMoving=-1.5
r.Shadow.Virtual.ResolutionLodBiasLocal=0.0
r.Shadow.Virtual.ResolutionLodBiasLocalMoving=0.0
r.Shadow.Virtual.SMRT.RayCountDirectional=16
r.Shadow.Virtual.SMRT.SamplesPerRayDirectional=8
r.Shadow.Virtual.SMRT.RayCountLocal=16
r.Shadow.Virtual.SMRT.SamplesPerRayLocal=8
How to override CVars globally
CVars can be overridden by creating a DefaultConsoleVariables.ini
file in the same folder as the project config files, i.e. <Project Location>/Config/DefaultConsoleVariables.ini
and putting all the cvars under the section [WorldBuilder]
.
The contents should look like this with a list of the CVars to override:
[WorldBuilder]
r.ScreenPercentage=150
t.MaxFPS=120
sg.GlobalIlluminationQuality=0
Any scalability group CVar (starts with 'sg.') will only be overridden if the user has not made graphics settings changes, as those changes take priority. Any other CVar will apply if they are not marked read-only (CVar is marked with the ECVF_ReadOnly flag in the codebase).
When a CVar has no effect, a warning will be logged.
You can also add CVars specific to device profile platforms:
; Disables GI globally unless using a G6 Full (GFN) device
[WorldBuilder]
sg.GlobalIlluminationQuality=0
[Windows_G6Full WorldBuilder]
sg.GlobalIlluminationQuality=3
Last updated
Was this helpful?