Game User Settings

In this guide we will look at the options for changing game settings, such as whether or not to use fullscreen, the window or fullscreen resolution used, the position of the window, and scalability...

Updated over 4 years ago Edit Page Revisions

In this guide we will look at the options for changing game settings, such as whether or not to use fullscreen, the window or fullscreen resolution used, the position of the window, and scalability/graphics settings.

This is a guide written by .

The UGameUserSettings class

API documentation:

Since version 4.11 of UE this class is also exposed to Blueprints, but in this guide we will work with it via a game code module (C++). A pointer to the global

UGameUserSettings

can be found in the global

GEngine

.

UGameUserSettings* GetGameUserSettings()
{
    if (GEngine != nullptr)
    {
        return GEngine->GameUserSettings;
    }
    return nullptr;
}

Several of the values used internally by this class are saved to the GameUserSettings.ini config file. If you have external automation needs, this would be the place to start.

Setting the mode

When you use the various mode setting functions, the mode is not immediately applied, much like you would expect from a PC game settings menu. Instead, the value is saved to the Game config. To set up a mode test flow (e.g. user selects mode, clicks apply, and is prompted to confirm if the mode is worked), you should use the following:

int32 Width = 1280, Height = 720;
UGameUserSettings* Settings = GetGameUserSettings(); // note we are using the function defined above
if (Settings != nullptr)
{
    Settings->RequestResolutionChange(Width, Height, EWindowMode::Type::Windowed, false); // we can choose to ignore the command line arguments, this is probably best when the game UI sets the mode after startup
}

// ...

if (UserConfirmed)
{
    Settings->ConfirmVideoMode();

    // Save the requested settings to our local data now
    Settings->SetScreenResolution(Settings->GetLastConfirmedScreenResolution());
    Settings->SetFullscreenMode(Settings->GetLastConfirmedFullscreenMode());
    Settings->SaveSettings();
}
else
{
    Settings->RevertVideoMode();
}

Setting the scalability settings

The

UGameUserSettings

class provides access to a instance which it refers to when using the

ApplySettings(bool)

and

ApplyNonResolutionSettings()

functions. It is very simple to set these. Note that a

GetQualityLevels()

function exists in

GEngine

to obtain the current quality levels, unrelated to the quality levels in the user settings (these can diverge for the purposes of easy settings dialog implementations).

Settings->ScalabilityQuality.AntiAliasingQuality = 0; // Use "Low" AA quality
Settings->ScalabilityQuality.ResolutionQuality   = 3; // Use "Epic" resolution quality

Settings->ApplyNonResolutionSettings();
Settings->SaveSettings();

The values range from 0 to 3 and correspond to "Low", "Medium", "High" and "Epic" as in the editor quick settings dialog and in the scalability cvars. The actual meaning of these (e.g. the cvar presets to use) can be set in Scalability.ini (some sane defaults are copied to your Saved/CleanSourceConfigs and are a good basis for your own). More info on Scalability from UE4 documentation.