Lyra In-Game Settings

Does anybody knows how the Lyra settings work. I want to learn how they work and understand why it works like it does. Whenever I load up the game the settings are fully fleshed out, but whenever I find anything settings related in the content browser it is all blank. Does anybody know where the Lyra settings are located?

2 Likes

Same, actually. If I find anything I will post here, but look into the blueprints maybe you might find something.

1 Like

This is the path of the settings: Content/UI/Settings
The only way for now to find out how they work is to explore blueprints and C++ code.

1 Like

I too would love to see how to build a settings menu like they have using the in editor UI tools.

I looked through pretty much every widget blueprint in the editor and couldn’t find where they were pulling the settings menu information from so I started digging in the project folder outside the engine.

It looks like the information that gets populated into the settings menu comes from here:
LyraStarterGame\Source\LyraGame\Settings\CustomSettings

So I’m guessing they did quite a bit of the menu as C++ coding. Unfortunately my coding background is in web development so I couldn’t really digest how this gets integrated into the in editor blueprints they have setup, but it’s the only place that I could actually find the ‘settings’ they have. Here’s a snippet of the code to give as example.

void ULyraSettingValueDiscrete_OverallQuality::OnInitialized()
{
	Super::OnInitialized();

	ULyraSettingsLocal* UserSettings = ULyraSettingsLocal::Get();
	const int32 MaxQualityLevel = UserSettings->GetMaxSupportedOverallQualityLevel();

	auto AddOptionIfPossible = [&](int Index, FText&& Value) { if ((MaxQualityLevel < 0) || (Index <= MaxQualityLevel)) { Options.Add(Value); }};

	AddOptionIfPossible(0, LOCTEXT("VideoQualityOverall_Low", "Low"));
	AddOptionIfPossible(1, LOCTEXT("VideoQualityOverall_Medium", "Medium"));
	AddOptionIfPossible(2, LOCTEXT("VideoQualityOverall_High", "High"));
	AddOptionIfPossible(3, LOCTEXT("VideoQualityOverall_Epic", "Epic"));

	OptionsWithCustom = Options;
	OptionsWithCustom.Add(LOCTEXT("VideoQualityOverall_Custom", "Custom"));

	const int32 LowestQualityWithFrameRateLimit = UserSettings->GetLowestQualityWithFrameRateLimit();
	if (Options.IsValidIndex(LowestQualityWithFrameRateLimit))
	{
		SetWarningRichText(FText::Format(LOCTEXT("OverallQuality_Mobile_ImpactsFramerate", "<strong>Note: Changing the Quality setting to {0} or higher might limit your framerate.</>"), Options[LowestQualityWithFrameRateLimit]));
	}
}

I definitely think that setting up an in-depth settings menu like the one in the Lyra game example would be a great tutorial for Epic to do.

2 Likes

It doesnt save from session to session. they stopped short of integrating it with GameUserSettings.

That really sucks.

This Might help for writing it.

1 Like

Someone please make a blueprint tutorial for this. I dismantled the whole thing trying to find out how it populates. C++ is a no go territory for me.