Hey, I know this one’s old, but it still comes up when you google the problem, so here’s what was actually going on (in case it saves someone else two days):
- Pawn vs Actor. BP config variables are read from whatever ini the C++ parent class uses. Actor uses Engine, but Pawn, Character and PlayerController all use Game. So for a Pawn like BP_CanvasCamera the section had to go in DefaultGame.ini, not DefaultEngine.ini. That’s why moving the vars to a plain Actor “fixed” it.
- The “baked” thing. A packaged UE5 build doesn’t read the Default*.ini files at all. When you package, all the config gets baked into Config/BinaryConfig.ini, so editing DefaultEngine.ini afterwards does nothing, pak or no pak.
- What a packaged build does read on every launch is the ini in Saved:
Drop the same section into Game.ini there (Engine.ini for a plain Actor), create the file if it isn’t there, restart, and you’ll get the new values:
[/Game/Blueprints/BP_CanvasCamera.BP_CanvasCamera_C]
testNumber=777
testString=changed
Heads-up: if the game itself ever writes to that file, the engine only keeps the sections it’s been told to keep, so a hand-added one can just vanish. Keep a copy somewhere.
Small plug, feel free to skip it: I made a plugin for exactly this kind of thing, Blueprint Project Settings | Fab . You make a settings Blueprint, tick Config Variable, and read the values anywhere with Get Settings. No casting, no C++. Set its Storage to Saved and whoever runs the build just edits a `[BP_GallerySettings]` section in that same Game.ini, and the plugin makes sure the engine doesn’t drop it. It’s UE 5.6+ though, and yeah, I’m biased, so the steps above work fine without it too 