It’s very refreshing to see someone wanting to discuss structure. That is something I don’t find anywhere in the Unreal Universe for the most part, it’s more nuts and bolts. I have something analogous to what you are doing, but I think less structured. I use a Scenario Manager Component Class for any prominent actors defined for a given level. The Scenario Manager Class is how I let the modeler design a level, he drops a blueprint into the level that has the scenario component attached. The scenarios roll up to Missions and Objectives, in parallel to levels. For this type of actor, I keep hard references (discovered or more accurately spawned, at beginplay) in a centralized array created when the actors are discovered in a level as modified by a save file. Other transient items in the world are not kept in this array, but are discovered and used/acted upon, by the prominent actors as they come across them. This latter class of actors are more as I think most people use UE, a more distributed approach.
The prominent actors are set with a component that says they are part of the level scenario, the transient actors have the scenario component, but have a flag ticked to say they are not actually part of the game scenario and are thus not tracked with hard references though when interacted with, their characteristics can be determined. The only reason I have these “non-scenario” actors is to allow ad-hoc inclusion of actors not overly important to the gameplay and story. They are useful for inventory pickups of extraneous items not impactful of the story’s scenario. It allows a lot of extra “unmanaged” fun to be tossed in randomly that doesn’t need more expensive tracking and communication. A third class are totally dumb actors, they just respond to physics as the other types interact with them.
The reason I have things designed this way is that I’m a bit old fashioned, I can’t keep control in my head, of what I think is the normal way people develop games with UE (though I am not certain what that is, because as stated above, people don’t discuss structure much). I have gathered that people have all actors that are completely autonomous and discover one another as part of the game play or iterating through the actors of the world on the fly. This concept wasn’t something I could get my head around easily and still produce a highly integrated story. So the Scenario manager class defines the path through the story, missions and objectives, the non-scenario actors can impact the player in a minor way, actors without the component, are virtually ignored except as an actor interacts with them for physics.
A major difference is that non-scenario items are static in terms of saving. They exist again at level load. Another is that Player always has a hard reference to everything critical to gameplay and the story. For example, player has intimate communications to all the HUDs of the enemies.
This was not actually intentional so much. It evolved as I developed our mechanics in lieu of documentation defining how a game should be structured in Unreal. Most of the integration and hard reference abilities are implemented in Level Script. This was a mistake and if I were doing it over, it would be through GameMode (actually much has been converted to GameMode at this point). The hard references still sit in Level Script as rolled up from the actors in the world, but it probably should be Game Mode.
I am highly interested in how others, who I think of as doing it “right”, are doing this process of Actors and story. I’m certainly not too “old fashioned” to do it right when I understand it.