Quality Game Settings Menu, a good looking UI ready for use

Conflicting keys detection is now added.

Player is told in a tooltop about the conflicting keys.

They are defined as:
Equal - Exact same input combination.
Subset - Entire combination is a part of another keybinding
Superset - Keybinding contains entire combination of another binding.
Overlapping - Bindings are sharing keys. Etc A + B of one, and B + C of another.
OverlappingModifier - Hidden: Bindings are sharing overlapping modifier keys. This is usually intended, and does not show up as a warning.

By default, only a subset combination is blocked and will not run inputs when the superset activates.

This is awesome and I can’t wait for the new keybindings feature. Purchased

Any intentions to still support VR?

VR support was intended to have its own 3D menu, by not using UMG (or with 3D umg elements if it’s stable enough).
It was put on hold since Gamesettings needed a large rewrite to support multiple menu systems.
That rewrite is done now, together with this keybinding system. I also assume the editor crashes way less now then before, so it might be more fun developing without losing work ;D

The main new features of a 3D menu would be gamepad navigation support and animations. I can assume it will work in VR headset, but I don’t have one to test it with for now, so I can’t guarantee that it will work.

Back in unreal 4.8 I tried the 2D UMG Settings in a vr headset, and it was not usable. It might be better now since 4.11/4.12 have huge support for VR, but you have to test that one out yourself.

Awesome, thanks for the info.

One other thing… I just purchased this pack and set it up, and it’s all working great, except for two video options… They all work except Resolution Scale and Anti-Aliasing. Neither has any effect on the game, either in the editor or when launched as standalone.

I am on 4.12, is it because it’s just not compatible yet? I followed the tutorial and don’t think I missed anything…

If the other options are working, then something is up with 4.12. I have not tested out 4.12 preview yet. I’m going to finish 4.11 first, then fix potential conflicts with 4.12. Thanks for telling me so I don’t forget to fix those.

Awesome, thanks again for your work!

I need help!!! The menu works perfectly for pc games. I am very close from finishing a android game. But their is a couple problems mainly with the effect Quality option. Basically if i leave effect quality at default value of 3. None of my static mesh or foliage have lighting. meaning they are all black in game. if i set the default value to 0. My static meshed and foliage have lighting again but the Main terrain becomes invisible until i do a restart. this happens on every load unless i do a ingame restart. aka ingame loading the same map. i have been trying to find a way around this for 2 weeks now. my game is practically finished i just don’t want to leave this bug in on release day.
Please Can anyone give me a idea on how to fix this.

I am very sorry, but I have not tested out the menu on android.
(I asked Epic to hide the marketplace icons indicating support IOS/Android/VR, but it was not removed.)

If only effect quality settings is causing problems, I see two solutions.
You can disconnect the execution path in “Apply Effect Quality” inside the “Game Settings” blueprint. This makes sure the “sg.EffectsQuality x” is never run.
This disables Effects quality setting, but it could be a way to have most of the Effect settings working.

The command “sg.EffectsQuality x” is made up of several sub commands. You can read more here:

In short, these are the console commands sg.EffectQuality is actually made up of.

(Example of “sg.EffectQuality 3”)
r.TranslucencyLightingVolumeDim 64
r.RefractionQuality 2
r.SSR 1
r.SceneColorFormat 4
r.DetailMode 2
r.TranslucencyVolumeBlur 1
r.MaterialQualityLevel 1

So, you can replace the sg.EffectQuality with these nodes.

Now you can disable one command at the time, and remove the non working one.
**
To save you some time, I have made the nodes for you.**
Copy all the code text inside spoiler and press CTRL-V inside “Apply Effect Quality” blueprint graph to past nodes. (It should work in 4.10)
I hope this will help you find the conflicting console command.


Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4498"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6415"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6416"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6417"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6418"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6419"
   End Object
   Begin Object Name="EdGraphPin_6415"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2095'
   End Object
   Begin Object Name="EdGraphPin_6416"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4608.EdGraphPin_6442'
   End Object
   Begin Object Name="EdGraphPin_6417"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_818.EdGraphPin_3354'
   End Object
   Begin Object Name="EdGraphPin_6418"
      PinName="Console Command"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4499.EdGraphPin_6433'
   End Object
   Begin Object Name="EdGraphPin_6419"
      PinName="-"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6415'
   Pins(1)=EdGraphPin'EdGraphPin_6416'
   Pins(2)=EdGraphPin'EdGraphPin_6417'
   Pins(3)=EdGraphPin'EdGraphPin_6418'
   Pins(4)=EdGraphPin'EdGraphPin_6419'
   NodePosX=1088
   NodePosY=1696
   NodeGuid=C577AF6F4F2225E014B713B834AA216B
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_818"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3354"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3355"
   End Object
   Begin Object Name="EdGraphPin_3354"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4498.EdGraphPin_6417'
   End Object
   Begin Object Name="EdGraphPin_3355"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3354'
   Pins(1)=EdGraphPin'EdGraphPin_3355'
   NodePosX=880
   NodePosY=1680
   NodeGuid=EC4BF39D45E2775787A392B9D90CB3E3
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4499"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6430"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6431"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6432"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6433"
   End Object
   Begin Object Name="EdGraphPin_6430"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Kismet String Library Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6431"
      PinName="A"
      PinToolTip="A
String

The original string"
      PinType=(PinCategory="string")
      DefaultValue="r.TranslucencyLightingVolumeDim "
   End Object
   Begin Object Name="EdGraphPin_6432"
      PinName="B"
      PinToolTip="B
String

The string to append to A"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_12.EdGraphPin_5390'
   End Object
   Begin Object Name="EdGraphPin_6433"
      PinName="ReturnValue"
      PinToolTip="Return Value
String

A new string which is the concatenation of A+B"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4498.EdGraphPin_6418'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6430'
   Pins(1)=EdGraphPin'EdGraphPin_6431'
   Pins(2)=EdGraphPin'EdGraphPin_6432'
   Pins(3)=EdGraphPin'EdGraphPin_6433'
   NodePosX=704
   NodePosY=1728
   NodeGuid=ED4EE4C244F42455B933DAB139B8211D
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_12"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5385"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5386"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5387"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5388"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5389"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5390"
   End Object
   Begin Object Name="EdGraphPin_5385"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="64"
   End Object
   Begin Object Name="EdGraphPin_5386"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="48"
   End Object
   Begin Object Name="EdGraphPin_5387"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="32"
   End Object
   Begin Object Name="EdGraphPin_5388"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="24"
   End Object
   Begin Object Name="EdGraphPin_5389"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5390"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4499.EdGraphPin_6432'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5385'
   Pins(1)=EdGraphPin'EdGraphPin_5386'
   Pins(2)=EdGraphPin'EdGraphPin_5387'
   Pins(3)=EdGraphPin'EdGraphPin_5388'
   Pins(4)=EdGraphPin'EdGraphPin_5389'
   Pins(5)=EdGraphPin'EdGraphPin_5390'
   NodePosX=464
   NodePosY=1664
   NodeGuid=736DCAD944F8B2E5207DC9AF783E8CD3
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4608"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6442"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6443"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6444"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6445"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6446"
   End Object
   Begin Object Name="EdGraphPin_6442"
      PinName="execute"
      PinToolTip="
Exec"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4498.EdGraphPin_6416'
   End Object
   Begin Object Name="EdGraphPin_6443"
      PinName="then"
      PinToolTip="
Exec"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4580.EdGraphPin_6469'
   End Object
   Begin Object Name="EdGraphPin_6444"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Game Settings Interface Interface"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_821.EdGraphPin_3393'
   End Object
   Begin Object Name="EdGraphPin_6445"
      PinName="Console Command"
      PinToolTip="Console Command
String"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4609.EdGraphPin_6460'
   End Object
   Begin Object Name="EdGraphPin_6446"
      PinName="-"
      PinToolTip="-
Boolean"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6442'
   Pins(1)=EdGraphPin'EdGraphPin_6443'
   Pins(2)=EdGraphPin'EdGraphPin_6444'
   Pins(3)=EdGraphPin'EdGraphPin_6445'
   Pins(4)=EdGraphPin'EdGraphPin_6446'
   NodePosX=1088
   NodePosY=1872
   NodeGuid=CD6183EF4C14D308C0F96AA7AD1071F7
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_821"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3393"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3394"
   End Object
   Begin Object Name="EdGraphPin_3393"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4608.EdGraphPin_6444'
   End Object
   Begin Object Name="EdGraphPin_3394"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3393'
   Pins(1)=EdGraphPin'EdGraphPin_3394'
   NodePosX=880
   NodePosY=1872
   NodeGuid=E7E9253C4664544B444E53A03E33B4FB
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4609"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6457"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6458"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6459"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6460"
   End Object
   Begin Object Name="EdGraphPin_6457"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Kismet String Library Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6458"
      PinName="A"
      PinToolTip="A
String

The original string"
      PinType=(PinCategory="string")
      DefaultValue="r.RefractionQuality "
   End Object
   Begin Object Name="EdGraphPin_6459"
      PinName="B"
      PinToolTip="B
String

The string to append to A"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_15.EdGraphPin_5420'
   End Object
   Begin Object Name="EdGraphPin_6460"
      PinName="ReturnValue"
      PinToolTip="Return Value
String

A new string which is the concatenation of A+B"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4608.EdGraphPin_6445'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6457'
   Pins(1)=EdGraphPin'EdGraphPin_6458'
   Pins(2)=EdGraphPin'EdGraphPin_6459'
   Pins(3)=EdGraphPin'EdGraphPin_6460'
   NodePosX=704
   NodePosY=1920
   NodeGuid=183068584307989F6263C9A28BD08E3F
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_15"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5415"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5416"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5417"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5418"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5419"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5420"
   End Object
   Begin Object Name="EdGraphPin_5415"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5416"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5417"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="2"
   End Object
   Begin Object Name="EdGraphPin_5418"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="2"
   End Object
   Begin Object Name="EdGraphPin_5419"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5420"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4609.EdGraphPin_6459'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5415'
   Pins(1)=EdGraphPin'EdGraphPin_5416'
   Pins(2)=EdGraphPin'EdGraphPin_5417'
   Pins(3)=EdGraphPin'EdGraphPin_5418'
   Pins(4)=EdGraphPin'EdGraphPin_5419'
   Pins(5)=EdGraphPin'EdGraphPin_5420'
   NodePosX=464
   NodePosY=1856
   NodeGuid=A73F735C4573A4E0769BCE8E1FBEA056
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4580"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6469"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6470"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6471"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6472"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6473"
   End Object
   Begin Object Name="EdGraphPin_6469"
      PinName="execute"
      PinToolTip="
Exec"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4608.EdGraphPin_6443'
   End Object
   Begin Object Name="EdGraphPin_6470"
      PinName="then"
      PinToolTip="
Exec"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4470.EdGraphPin_6496'
   End Object
   Begin Object Name="EdGraphPin_6471"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Game Settings Interface Interface"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_820.EdGraphPin_3432'
   End Object
   Begin Object Name="EdGraphPin_6472"
      PinName="Console Command"
      PinToolTip="Console Command
String"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4581.EdGraphPin_6487'
   End Object
   Begin Object Name="EdGraphPin_6473"
      PinName="-"
      PinToolTip="-
Boolean"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6469'
   Pins(1)=EdGraphPin'EdGraphPin_6470'
   Pins(2)=EdGraphPin'EdGraphPin_6471'
   Pins(3)=EdGraphPin'EdGraphPin_6472'
   Pins(4)=EdGraphPin'EdGraphPin_6473'
   NodePosX=1088
   NodePosY=2064
   NodeGuid=A4742C96449D598743EA5A956B7E0D48
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_820"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3432"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3433"
   End Object
   Begin Object Name="EdGraphPin_3432"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4580.EdGraphPin_6471'
   End Object
   Begin Object Name="EdGraphPin_3433"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3432'
   Pins(1)=EdGraphPin'EdGraphPin_3433'
   NodePosX=880
   NodePosY=2064
   NodeGuid=5C301B1B422A46D22896E6B0E3E17D47
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4581"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6484"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6485"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6486"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6487"
   End Object
   Begin Object Name="EdGraphPin_6484"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Kismet String Library Reference"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6485"
      PinName="A"
      PinToolTip="A
String

The original string"
      PinType=(PinCategory="string")
      DefaultValue="r.SSR "
   End Object
   Begin Object Name="EdGraphPin_6486"
      PinName="B"
      PinToolTip="B
String

The string to append to A"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_14.EdGraphPin_5471'
   End Object
   Begin Object Name="EdGraphPin_6487"
      PinName="ReturnValue"
      PinToolTip="Return Value
String

A new string which is the concatenation of A+B"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4580.EdGraphPin_6472'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6484'
   Pins(1)=EdGraphPin'EdGraphPin_6485'
   Pins(2)=EdGraphPin'EdGraphPin_6486'
   Pins(3)=EdGraphPin'EdGraphPin_6487'
   NodePosX=704
   NodePosY=2112
   NodeGuid=E1B2ADDD41337FB84FEBFCBF898C3955
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_14"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5466"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5467"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5468"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5469"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5470"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5471"
   End Object
   Begin Object Name="EdGraphPin_5466"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5467"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5468"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5469"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5470"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5471"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4581.EdGraphPin_6486'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5466'
   Pins(1)=EdGraphPin'EdGraphPin_5467'
   Pins(2)=EdGraphPin'EdGraphPin_5468'
   Pins(3)=EdGraphPin'EdGraphPin_5469'
   Pins(4)=EdGraphPin'EdGraphPin_5470'
   Pins(5)=EdGraphPin'EdGraphPin_5471'
   NodePosX=464
   NodePosY=2048
   NodeGuid=692C58714F95DDF3CEED3386F9B39F18
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4470"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6496"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6497"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6498"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6499"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6500"
   End Object
   Begin Object Name="EdGraphPin_6496"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4580.EdGraphPin_6470'
   End Object
   Begin Object Name="EdGraphPin_6497"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4636.EdGraphPin_6523'
   End Object
   Begin Object Name="EdGraphPin_6498"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_777.EdGraphPin_3471'
   End Object
   Begin Object Name="EdGraphPin_6499"
      PinName="Console Command"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4471.EdGraphPin_6514'
   End Object
   Begin Object Name="EdGraphPin_6500"
      PinName="-"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6496'
   Pins(1)=EdGraphPin'EdGraphPin_6497'
   Pins(2)=EdGraphPin'EdGraphPin_6498'
   Pins(3)=EdGraphPin'EdGraphPin_6499'
   Pins(4)=EdGraphPin'EdGraphPin_6500'
   NodePosX=1088
   NodePosY=2256
   NodeGuid=BD085CEA46FDA4B111E89A8689B9ECCD
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_777"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3471"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3472"
   End Object
   Begin Object Name="EdGraphPin_3471"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4470.EdGraphPin_6498'
   End Object
   Begin Object Name="EdGraphPin_3472"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3471'
   Pins(1)=EdGraphPin'EdGraphPin_3472'
   NodePosX=880
   NodePosY=2272
   NodeGuid=BB6B19C74FB82FE3C46A60A4443FA9CB
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4471"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6511"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6512"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6513"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6514"
   End Object
   Begin Object Name="EdGraphPin_6511"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6512"
      PinName="A"
      PinType=(PinCategory="string")
      DefaultValue="r.SceneColorFormat "
   End Object
   Begin Object Name="EdGraphPin_6513"
      PinName="B"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_11.EdGraphPin_5543'
   End Object
   Begin Object Name="EdGraphPin_6514"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4470.EdGraphPin_6499'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6511'
   Pins(1)=EdGraphPin'EdGraphPin_6512'
   Pins(2)=EdGraphPin'EdGraphPin_6513'
   Pins(3)=EdGraphPin'EdGraphPin_6514'
   NodePosX=704
   NodePosY=2304
   NodeGuid=A4409DA547AE2799ECD3969350687B32
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_11"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5538"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5539"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5540"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5541"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5542"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5543"
   End Object
   Begin Object Name="EdGraphPin_5538"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="3"
   End Object
   Begin Object Name="EdGraphPin_5539"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="3"
   End Object
   Begin Object Name="EdGraphPin_5540"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="3"
   End Object
   Begin Object Name="EdGraphPin_5541"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="4"
   End Object
   Begin Object Name="EdGraphPin_5542"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5543"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4471.EdGraphPin_6513'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5538'
   Pins(1)=EdGraphPin'EdGraphPin_5539'
   Pins(2)=EdGraphPin'EdGraphPin_5540'
   Pins(3)=EdGraphPin'EdGraphPin_5541'
   Pins(4)=EdGraphPin'EdGraphPin_5542'
   Pins(5)=EdGraphPin'EdGraphPin_5543'
   NodePosX=464
   NodePosY=2240
   NodeGuid=B9F40FAB430ED15AC1D36A84B7B315BB
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4636"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6523"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6524"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6525"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6526"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6527"
   End Object
   Begin Object Name="EdGraphPin_6523"
      PinName="execute"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4470.EdGraphPin_6497'
   End Object
   Begin Object Name="EdGraphPin_6524"
      PinName="then"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4664.EdGraphPin_6550'
   End Object
   Begin Object Name="EdGraphPin_6525"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_822.EdGraphPin_3522'
   End Object
   Begin Object Name="EdGraphPin_6526"
      PinName="Console Command"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4637.EdGraphPin_6541'
   End Object
   Begin Object Name="EdGraphPin_6527"
      PinName="-"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6523'
   Pins(1)=EdGraphPin'EdGraphPin_6524'
   Pins(2)=EdGraphPin'EdGraphPin_6525'
   Pins(3)=EdGraphPin'EdGraphPin_6526'
   Pins(4)=EdGraphPin'EdGraphPin_6527'
   NodePosX=1088
   NodePosY=2448
   NodeGuid=85EC937C464F840097A9AB97833E377C
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_822"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3522"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3523"
   End Object
   Begin Object Name="EdGraphPin_3522"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4636.EdGraphPin_6525'
   End Object
   Begin Object Name="EdGraphPin_3523"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3522'
   Pins(1)=EdGraphPin'EdGraphPin_3523'
   NodePosX=880
   NodePosY=2464
   NodeGuid=0369513545B61BD406E2D9A002C4FCE2
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4637"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6538"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6539"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6540"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6541"
   End Object
   Begin Object Name="EdGraphPin_6538"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6539"
      PinName="A"
      PinType=(PinCategory="string")
      DefaultValue="r.DetailMode "
   End Object
   Begin Object Name="EdGraphPin_6540"
      PinName="B"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_16.EdGraphPin_5591'
   End Object
   Begin Object Name="EdGraphPin_6541"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4636.EdGraphPin_6526'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6538'
   Pins(1)=EdGraphPin'EdGraphPin_6539'
   Pins(2)=EdGraphPin'EdGraphPin_6540'
   Pins(3)=EdGraphPin'EdGraphPin_6541'
   NodePosX=704
   NodePosY=2496
   NodeGuid=EE93329741546BB6D8C8D9A70E388D11
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_16"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5586"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5587"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5588"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5589"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5590"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5591"
   End Object
   Begin Object Name="EdGraphPin_5586"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5587"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5588"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5589"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="2"
   End Object
   Begin Object Name="EdGraphPin_5590"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5591"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4637.EdGraphPin_6540'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5586'
   Pins(1)=EdGraphPin'EdGraphPin_5587'
   Pins(2)=EdGraphPin'EdGraphPin_5588'
   Pins(3)=EdGraphPin'EdGraphPin_5589'
   Pins(4)=EdGraphPin'EdGraphPin_5590'
   Pins(5)=EdGraphPin'EdGraphPin_5591'
   NodePosX=464
   NodePosY=2432
   NodeGuid=24F20ED3483D03A7793C9CB9A98D52C2
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4664"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6550"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6551"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6552"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6553"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6554"
   End Object
   Begin Object Name="EdGraphPin_6550"
      PinName="execute"
      PinToolTip="
Exec"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4636.EdGraphPin_6524'
   End Object
   Begin Object Name="EdGraphPin_6551"
      PinName="then"
      PinToolTip="
Exec"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4552.EdGraphPin_6577'
   End Object
   Begin Object Name="EdGraphPin_6552"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Game Settings Interface Interface"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_823.EdGraphPin_3561'
   End Object
   Begin Object Name="EdGraphPin_6553"
      PinName="Console Command"
      PinToolTip="Console Command
String"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4665.EdGraphPin_6568'
   End Object
   Begin Object Name="EdGraphPin_6554"
      PinName="-"
      PinToolTip="-
Boolean"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6550'
   Pins(1)=EdGraphPin'EdGraphPin_6551'
   Pins(2)=EdGraphPin'EdGraphPin_6552'
   Pins(3)=EdGraphPin'EdGraphPin_6553'
   Pins(4)=EdGraphPin'EdGraphPin_6554'
   NodePosX=1088
   NodePosY=2640
   NodeGuid=D20C48704AEA474FBA58F5ACEFB39E73
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_823"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3561"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3562"
   End Object
   Begin Object Name="EdGraphPin_3561"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4664.EdGraphPin_6552'
   End Object
   Begin Object Name="EdGraphPin_3562"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3561'
   Pins(1)=EdGraphPin'EdGraphPin_3562'
   NodePosX=880
   NodePosY=2656
   NodeGuid=5B029F2D42674E70F3BC2393C7E2E4B8
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4665"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6565"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6566"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6567"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6568"
   End Object
   Begin Object Name="EdGraphPin_6565"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6566"
      PinName="A"
      PinType=(PinCategory="string")
      DefaultValue="r.TranslucencyVolumeBlur "
   End Object
   Begin Object Name="EdGraphPin_6567"
      PinName="B"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_17.EdGraphPin_5609'
   End Object
   Begin Object Name="EdGraphPin_6568"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4664.EdGraphPin_6553'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6565'
   Pins(1)=EdGraphPin'EdGraphPin_6566'
   Pins(2)=EdGraphPin'EdGraphPin_6567'
   Pins(3)=EdGraphPin'EdGraphPin_6568'
   NodePosX=704
   NodePosY=2688
   NodeGuid=674C9E084FAAB61A5A8817B9B1727981
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_17"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5604"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5605"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5606"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5607"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5608"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5609"
   End Object
   Begin Object Name="EdGraphPin_5604"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5605"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5606"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5607"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5608"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5609"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4665.EdGraphPin_6567'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5604'
   Pins(1)=EdGraphPin'EdGraphPin_5605'
   Pins(2)=EdGraphPin'EdGraphPin_5606'
   Pins(3)=EdGraphPin'EdGraphPin_5607'
   Pins(4)=EdGraphPin'EdGraphPin_5608'
   Pins(5)=EdGraphPin'EdGraphPin_5609'
   NodePosX=464
   NodePosY=2624
   NodeGuid=90957093454DF3425D680691E211CE5C
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4552"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6577"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6578"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6579"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6580"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6581"
   End Object
   Begin Object Name="EdGraphPin_6577"
      PinName="execute"
      PinToolTip="
Exec"
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4664.EdGraphPin_6551'
   End Object
   Begin Object Name="EdGraphPin_6578"
      PinName="then"
      PinToolTip="
Exec"
      Direction=EGPD_Output
      PinType=(PinCategory="exec")
      LinkedTo(0)=EdGraphPin'K2Node_FunctionResult_6.EdGraphPin_2092'
   End Object
   Begin Object Name="EdGraphPin_6579"
      PinName="self"
      PinFriendlyName="Target"
      PinToolTip="Target
Game Settings Interface Interface"
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_VariableGet_819.EdGraphPin_3600'
   End Object
   Begin Object Name="EdGraphPin_6580"
      PinName="Console Command"
      PinToolTip="Console Command
String"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4553.EdGraphPin_6595'
   End Object
   Begin Object Name="EdGraphPin_6581"
      PinName="-"
      PinToolTip="-
Boolean"
      Direction=EGPD_Output
      PinType=(PinCategory="bool")
      DefaultValue="false"
      AutogeneratedDefaultValue="false"
   End Object
   bIsInterfaceCall=True
   FunctionReference=(MemberParent=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C',MemberName="Run Console Command",MemberGuid=931E34A1462115FD457762A86A9BB178)
   Pins(0)=EdGraphPin'EdGraphPin_6577'
   Pins(1)=EdGraphPin'EdGraphPin_6578'
   Pins(2)=EdGraphPin'EdGraphPin_6579'
   Pins(3)=EdGraphPin'EdGraphPin_6580'
   Pins(4)=EdGraphPin'EdGraphPin_6581'
   NodePosX=1088
   NodePosY=2832
   NodeGuid=1F4E60794B7BE101B9714E8FF03880A8
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_819"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3600"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3601"
   End Object
   Begin Object Name="EdGraphPin_3600"
      PinName="Game Settings Interface"
      Direction=EGPD_Output
      PinType=(PinCategory="interface",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/util/GameSettingsInterface.GameSettingsInterface_C')
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4552.EdGraphPin_6579'
   End Object
   Begin Object Name="EdGraphPin_3601"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/QualityMenu/Blueprints/GameSettings.GameSettings_C')
      bHidden=True
   End Object
   VariableReference=(MemberName="Game Settings Interface",bSelfContext=True)
   Pins(0)=EdGraphPin'EdGraphPin_3600'
   Pins(1)=EdGraphPin'EdGraphPin_3601'
   NodePosX=880
   NodePosY=2848
   NodeGuid=3201DCEC43C7627A592B8A9FE7FB5B48
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4553"
   Begin Object Class=EdGraphPin Name="EdGraphPin_6592"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6593"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6594"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_6595"
   End Object
   Begin Object Name="EdGraphPin_6592"
      PinName="self"
      PinFriendlyName="Target"
      PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetStringLibrary')
      DefaultObject=Default__KismetStringLibrary
      bHidden=True
   End Object
   Begin Object Name="EdGraphPin_6593"
      PinName="A"
      PinType=(PinCategory="string")
      DefaultValue="r.MaterialQualityLevel "
   End Object
   Begin Object Name="EdGraphPin_6594"
      PinName="B"
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_Select_13.EdGraphPin_5573'
   End Object
   Begin Object Name="EdGraphPin_6595"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4552.EdGraphPin_6580'
   End Object
   bIsPureFunc=True
   FunctionReference=(MemberParent=Class'/Script/Engine.KismetStringLibrary',MemberName="Concat_StrStr")
   Pins(0)=EdGraphPin'EdGraphPin_6592'
   Pins(1)=EdGraphPin'EdGraphPin_6593'
   Pins(2)=EdGraphPin'EdGraphPin_6594'
   Pins(3)=EdGraphPin'EdGraphPin_6595'
   NodePosX=704
   NodePosY=2880
   NodeGuid=7C30A7794DC9BDDA043E958BD040E687
End Object
Begin Object Class=K2Node_Select Name="K2Node_Select_13"
   Begin Object Class=EdGraphPin Name="EdGraphPin_5568"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5569"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5570"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5571"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5572"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_5573"
   End Object
   Begin Object Name="EdGraphPin_5568"
      PinName="Option 0"
      PinType=(PinCategory="string")
      DefaultValue="0"
   End Object
   Begin Object Name="EdGraphPin_5569"
      PinName="Option 1"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5570"
      PinName="Option 2"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5571"
      PinName="Option 3"
      PinType=(PinCategory="string")
      DefaultValue="1"
   End Object
   Begin Object Name="EdGraphPin_5572"
      PinName="Index"
      PinType=(PinCategory="int")
      DefaultValue="0"
      LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_2916.EdGraphPin_2096'
   End Object
   Begin Object Name="EdGraphPin_5573"
      PinName="ReturnValue"
      Direction=EGPD_Output
      PinType=(PinCategory="string")
      LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4553.EdGraphPin_6594'
   End Object
   NumOptionPins=4
   IndexPinType=(PinCategory="int",PinSubCategory=)
   Pins(0)=EdGraphPin'EdGraphPin_5568'
   Pins(1)=EdGraphPin'EdGraphPin_5569'
   Pins(2)=EdGraphPin'EdGraphPin_5570'
   Pins(3)=EdGraphPin'EdGraphPin_5571'
   Pins(4)=EdGraphPin'EdGraphPin_5572'
   Pins(5)=EdGraphPin'EdGraphPin_5573'
   NodePosX=464
   NodePosY=2816
   NodeGuid=BE9782A440060D0E90FCD39CF1313F0B
End Object

PS: I am impressed that you have converted my system to be usable on android. Could you share some pictures of the settings menu on an android?
Thank you.

Mr this all looking great but I got a small question.

You say the keybinding system is all blueprints but as far as I know you can not change key bindings with blueprint in game. Is that changed, or does your menu have some C++ connection, or maybe its a plugin? I just wonder how you achieved “all in blueprints” part, thanks!

It does not use the editors keybinding system, It is an independent system that checks the keys pressed every frame.
My job is make it as easy as possible to use, and fast. I need to do some testing, but in the demo room I am running in 120 fps with or without the keybinding system active.
nQy7ZK7.png

Credit where credit belongs, I did not think it was possible either, until another blueprint showed up on marketplace.

I did not download and read the his blueprints on how he did it, but looking at his images, I managed to find the pieces of the puzzle I needed to find and create my own implementation.
I am really looking forward to buy his system and see how we did things different, after I release my update.

Hey just to let you know, the latest update to 4.12 seems to have fixed The Anti-Aliasing and Resolution Scale to work now. At least after updating they work properly, so no worries there :smiley:

Thank you for the information. :slight_smile:

Thank You so much for you help, and the quick response. Sorry i did not respond earlier i went on a business trip.

I found out that it was materialquality, and detailmode. it sucks though becuase if i turn off either. my static mesh uv works but my terrain is invisible. if i raise the value to either the terrain becomes visible but the static mesh becomes black again… i think i found the solution. it sucks but i will have to delete all of my second uv channels for all my mesh. it’s weird because i always read that a 2nd uv helps stop your lighting from breaking. then again this is my first mobile game. Thank you again for your help!!

I am excited for your next update. i am also in the middle of makeing a rpg on pc that i may use your settings menu to save some time. ill wait for the custom key mapping though.
When my mobile game comes closer to release ill post some pics in your forum :slight_smile: all i really did is delete some options. enlarge the sliders, and a couple personal tweaks. it works very smooth believe it or not.

I am mostly done on the 1.5 release. Should be stable. (But I’m going over it to find improvements)

If anyone wants to try (to break) it, I have put up an executable demo.

Only documentation is left. Then I will submit it to Epic.

V1_5 Changelogv
Added keybinding system
Supports key combinations
Auto generate keybinding menu from data table
Display key conflicts

Added Action Manager Component
Event system to dispatch inputs to player controller or character.
(More events can be added)

Added pause on game open option.
Added Save on Apply option. (Does not revert if cancel is pressed)

dszgX4V.png

Rewritten Gamesettings
Variables in Gamesettings use getters/setters now
Improved UMG menu blueprints
Added combobox to resolution settings.

dszgX4V.png
QtlXZnt.png

Added development tab (Is hidden when packaged for shipping)
Menu where developers can add tools related to game development.
Includes time dillation. Speed up or slow down game time. (Can break your game)
Pause game
Delete Settings file.
(More can come later, Suggestions?)

Currently not supported:
Navigate menu with gamepad
Multiplayer
VR
Mobile

Thank you. Let me know if you find something else.

You are welcome. If you want to add a similar system to your fighting project, you can ask me for help. (I’ve been battling blueprints getting this to work.)

Looking forward to it. I have not decided where to continue after this release. I don’t know if I should make new theme directed to mobile. How many people are developing mobile games with Unreal 4. Is it a market for it?

Just wanted to say I bought this last week and it is a great product. Very nice layout and it does most of what I need. Can’t wait for the new stuff in 1.5.

One question - I see you are storing all of the settings in a custom save file. In 4.11 epic added blueprint nodes for setting the graphics options directly in the ini files. Will you be incorporating those new nodes into your menu system?

Thanks!

Hi, that’s a good idea. I need to see how well it behaves with my system.
It wont give me access to the .ini files directly, so it’s limited to what I can read and save, but I can get some of the more important values.

Going to do some testing after 1.5, but it sounds like it should be “doable”.
Thanks for feedback!

Update for 4.11 and 4.12 with keybinding has been pushed to marketplace Team.
So now we wait for the release on Launcher. I don’t think it will be within tomorrow, so after the weekend. (Hopefully)

Text documentation has been updated for this release and is released.
A video tutorial for the update will be made later.

I fixed a some tiny hickups from the beta demo from a few days ago.
(Game no longer stutter on menu close, analog axis direction can now be used as buttons, tiny improvements everywhere)
I did not find any issues when upgrading from 4.11 to 4.12. But if you finds some problems, please tell me.

Also, since the keybinding system adds a lot value, I am planning to increase price soon.
So if you are smart, you buy it now, instead of later, and it will be like a discount. (#Sellout)

I am going to enjoy the last sun of today. Cheers.

Release 1.5 is now live on marketplace!

New Trailer: https://www.youtube.com/watch?v=zvsWjTqI_Mc
New install tutorial: https://www.youtube.com/watch?v=jtA3OyT81Ns

Release is quite solid, but feedback is welcome. Please tell me if you find something to be improved.

Hello! How can I add a keypress in the level blueprint?

Hello ,

Congrats for your option menu I bought last week. It seems to work good (except Key binding for me). I installed it with no problems (longer than expected but clear tutorials). I think the Blueprints and widget Blueprint are clean as well as the design. The top bar grab ability is interesting and I like the different hints for each parameter.

Here is some problems I have / things to improve (I use the 4.12 version) :

  • Key binding : This doesn’t work in my project. I put a key then “Any key” is displayed in the box.
    It works In the QualityGameSetting project but I have other problem. For example with the Forward box, I click it, I put “Z” then I click the “Backward” box and the Forward box displays “Z+L.Mouse buton” because I didn’t see I had to wait a little. Maybe a solution would be to decrease this delay.

  • Many resolutions are missing (I don’t see 1920*1080 for example). There is a variable called Video resolutions (in the ClassicSettingsVideo widget) with many resolutions and I can’t see those resolutions in the video options.

  • The View Distant Scale edit box doesn’t work.

  • I don’t see difference between low and medium for AA and Effect.

  • A video reset option would be great (like for the key binding).

  • Adding sound feedbacks would be nice.

  • There is a “shake” effect when man clicks on “Audio”, “Video”… How can I disable it ?

  • In the Unreal Editor 4.12, when I play my level in New Editor Window (PIE), I have some problems. For example with the resolutions : when I change the resolution, the applied resolution is wrong (1280x720 seems to be something like 1380x920). But there is no problems playing it with Standalone Game (in the Editor too).

I already have a Menu and PauseMenu widget : can I call your options menu from them ?

Finally, I tried the option menu with a gamepad and sometimes it’s really close to work (I enter the video section by clicking, then I can set many parameters with gamepad).

Regards.