Unable to change game user settings at runtime on android?

Hi,

I would like the users of my android app to be able to change the game user settings.

Changing settings works fine in the editor and on a packaged build for windows. But on android I’m only able to change and save the resolution scale and the FPS limit. Things like Anti-aliasing, Shadow quality, Texture quality, Effect quality and so on, wont be saved nor read from the gameusersettings.ini.

Example:
If shadow quality is set to ‘1’, and I change it to ‘2’ using the blueprint nodes for game user settings, it is changed but not saved to gameusersettings.ini. And after a restart of the game shadow quality would be back to ‘1’ agian.

And if I set shadow quality to ‘2’ inside the gameusersettings.ini, the game will still read it as ‘1’ when I use the get shadow quality from the ‘get game user settings’ node.

(Resolution scale and the FPS limit is read and saved as it should, using the same gameusersettings.ini file)

This is also tested in a new project I made. It is the third person template and is set to mobile/tablet and scalable 3D or 2D. All I added was this widget:

This is the log whenever i try so apply the settings:

LogConsoleManager: Setting the console variable 'sg.ViewDistanceQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.AntiAliasingQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.ShadowQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.PostProcessQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.TextureQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.EffectsQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConsoleManager: Setting the console variable 'sg.FoliageQuality' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByDeviceProfile'. Value remains '1'

LogConfig: Applying CVar settings from Section [ShadingQuality@3] File [../../../RocketRide/Saved/Config/Android/Scalability.ini]

LogConfig: Setting CVar [[r.HairStrands.SkyLighting.SampleCount:16]]

LogConfig: Setting CVar [[r.HairStrands.SkyLighting.JitterIntegration:0]]

LogConfig: Setting CVar [[r.HairStrands.SkyAO.SampleCount:16]]

LogConfig: Setting CVar [[r.HairStrands.DeepShadow.SuperSampling:0]]

LogConfig: Setting CVar [[r.HairStrands.VisibilityPPLL:0]]

LogConfig: Setting CVar [[r.HairStrands.RasterizationScale:0.5]]

LogConfig: Setting CVar [[r.HairStrands.VelocityRasterizationScale:1]]

LogAudio: Warning: Can't increase MaxChannels past MaxSources

From the above I would imagine that the settings are overwritten by the device profile or something ?

But on " [Customizing Device Profiles and Scalability for Android][2] " it states that: “The initial scalability settings selected by a device profile are simply the defaults, and scalability can easily be changed at runtime through a variety of methods.”

How do I get game user settings this to work on android ? What am I missing ?

Thanks in advance

By the way, I ended up deleting all the device profiles, and I am now able to save and load settings from the gameusersettings.ini. On launch the app will get the active device profile name (which contains no settings), and then set some default settings depending on that name. It will only do this if there’s no save file (so ideally only on 1st launch), mimicking the intended behavior of device profiles.

So it still seems to me, at this moment, that the device profiles will override everything to and from the gameusersettings.ini, rendering androrid devices unable to save and load game user settings, while using default device profiles. And furthermore that the statement that “The initial scalability settings selected by a device profile are simply the defaults, and scalability can easily be changed at runtime through a variety of methods.” from Customizing Device Profiles and Scalability for Android does not hold true.

But I am still in need of some further clarification.

I need info on this as well for oculus quest is doing the same thing.

I am having the same issue on Windows. I’m not sure what triggered it.

And furthermore that the statement that “The initial scalability settings selected by a device profile are simply the defaults, and scalability can easily be changed at runtime through a variety of methods.” from Customizing Device Profiles and Scalability for Android does not hold true.

For anyone coming across here. I found that if you disable the “Android Device Profile Selector” plugin in the plugin manager, then the statement does hold true and game user settings can be changed as expected. It still uses Device Profiles on the first run, but the user can modify the settings at runtime.

I tried all these, didn’t work :frowning: