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), and Input project settings (these are read at the point of spawning your character's Input 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.

An example of some "Read-only settings" - the 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.

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.

The base scalability group CVars can be found within <Editor Location>/Config/BaseScalability.ini for reference. Section headers are structured as [<section name>@<configuration variant>] where the configuration variants are the quality levels that the user is able to choose. For example, the [AntiAliasingQuality@0] section will define all the anti aliasing CVars to be applied when a user selects quality level 0

To override the CVars that will be applied when a user selects any quality level you can

  1. Find or create the <Project Location>/Config/DefaultScalability.ini config file for your project.

  2. Refer to the <Editor Location>/Config/BaseScalability.ini config to locate the CVar you want to override.

  3. Copy the section header for the CVar you will be overriding and paste it into the DefaultScalability.ini if it doesn't already exist.

  4. Copy the CVar(s) you want to override into DefaultScalability.ini uner the appropriate section headers copied or located in step 3.

  5. Modify the values for those 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

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?