GameInstanceSubsystem not Initializing

Hello, I have a couple GameInstanceSubsystems. All of which work correctly. For this setup, I have an AchievementManager that is a subsystem. And in Initialize I am logging the fact that it initialized. As I am parsing a data table on initialization, I created a child blueprint to supply the data-table. My Quest Manager works exactly the same way and works fine.

Here is the strange thing. The Achievement Manager does NOT work when I play, UNLESS I opened the BP_AchievementManager and close the window before playing. Once I close the engine, this resets and it won’t initialize until I open the blueprint again.

Any ideas what might be causing this?

2 Likes

To fix this issue, you must tell Unreal to load up these assets explicitly, otherwise, it doesn’t know to use them. I had done this before and completely forgot somehow!

To do this, go to your Project Settings->Game->Asset Manager and you will find the “Primary Asset Types To Scan.” You need to add an entry for your blueprint GameInstanceSubsystem. To do this, select the class type and set the Primary Asset Type to the exact name of the asset. Also make sure to set the Directory to search for the asset. Also, make sure to tick the box saying “Has Blueprint Classes” so it knows that it’s a blueprint.

5 Likes

Amazing, this worked perfectly! I was scratching my head as to why the subsystem would appear for me after PIE, but not for others in the team. This explicit load solves it all!

2 Likes

Dude this saved me thank you so much. To anyone else who finds this: the name of the Primary Asset Type/ Asset Base Class that you put in here is the name of the BLUEPRINT that you’ve created out of your C++ game instance subystem class (if you’ve made one and then created a child BP out of it), even though it’s got the little checkbox for ‘Has Blueprint Classes’, which made me think that what I needed to put in was the parent C++ class rather than the Blueprint child.

Also… why am I having to do all of this? This all worked prefectly in PIE but then to get it working in an actual build I have to go into the Package Manager and put in the actual filepath of my instance subsytem Blueprint… this seems fiddly and fragile. Have we all done something weird to end up having to do this or is this the actual normal way of using subsystems?

1 Like