I’ve spent way too much time trying to find the reason and as a last resort had to compile two engine versions to figure it out but here is the culprit: https://github.com/EpicGames/UnrealEngine/pull/12824
I’ve made PR, you can either merge it or wait until some other kind of fix comes in, but with this change you don’t have to load every config file you are using explicitly, but it’s still a nice workaround.
A bit sad that without engine source there is not much else that can be done I guess, but once I found this I haven’t bothered spending any more time on the issue so who knows.
In case someone does not have github access (which would be weird tbh ):
Fix is to move the
if (KeyWithoutFlags != 0)
{
bReadAnyFile = true;
}
or (depending on your engine version)
if (HierarchyIt.Key != 0)
{
bReadAnyFile = true;
}
in ConfigContext.cpp
before the // skip non-existant files
if block, which gets hit all the time and starts the loop again.
EDIT: Yea loading works just fine but saving doesn’t which is just eh. I know it’s related to this, but idk why it matters only when that if is moved.
EDIT2: Ah ok, so because I allow it to load this line FinalFile.bCanSaveAllSections = bLocalSaveAllSections || bIsUserFile || bIsEditorSettingsFile;
in ConfigContext.cpp
is executed which changes the default boolean. So basically the config system is broken af atm.
Edit3: I just did this FinalFile.bCanSaveAllSections = true;//bLocalSaveAllSections || bIsUserFile || bIsEditorSettingsFile;
in ConfigContext.cpp
and am done with it. I have no idea why they would implement such a feature without a notice or option to specify to save all sections from the uobject. I don’t believe there are not hundreds of broken projects now. Anyway this works.