Download

BP "save/unload" actor making it almost a part of that level. Any ideas?

I’m trying to make a “Single Player - Open World - Road game” where the player can find and move actors around as he/she like. But the hole point of the game is surrounded that the actors stays where the player left them in a big level streaming world. I almost jumpt on the most undocumented game type in the hole got dam world. :frowning: Atleast I’m happy with the engine I’m trying to work with :smiley:

It’s going to be a struggle with world origin changing as the player moves miles away from the actros it can interact with. That’s why I like to find a way to trigger a actor spawn / despawn occurring when current landscape of that actor spawn / despawns. What did I try to say???

It’s a workaround to bind actor to current level stream really. I don’t get why something like this is not a standard part of “level streaming” tools. It sounds really basic for a open world I think. :stuck_out_tongue:

If this save/unload works when you trigger a “unloading of streamd level” it checks that level for all actors inside of itself*. Actors that are relevent get it’s info saved in a game instance with the “tag” of some kind that tell what level it belongs to, the actor type it is and what state it’s in and at last with consideration of world origin position** saves the placement on that level tile. After that unloads all actors and after that the level itself.

When you trigger that level to load agen you do everything backwards. Load level => Get Actros => Spawn Actors and the level is as you left it. :cool:

When the actor cross into a new level streaming volume nothing happens until that streaming level unloads. Where the “tag” and position is yet agen saved for the game session. It’s probobly the most elegant way of spawn/despawn streaming actors in a open world game like the one I like to created. But there is no real docs or threads taking about this to learn how to make it happen. :<

  • How do I call this funktion of checking what actors is inside of that level I like to unload from my current level? (“Level 1” check for actors in “Trigger Volume 4” in “Level 4” and get everything needed of this actors for “Level 4” to refrence spawn it later-)

** World origin almost needs to be changed with the player triggering a unload or load streaming level. Move it to every new tile the player enters? I don’t know how to handle the position saving right.

I can’t recall a open world game that remember player interaction in this kind of way. Most likely why there is no info on the internet how to accomplish something like this. It’s sad really how everything despawn for ever in open world games. I have tried to find a way to make this work for days now. Someone with a fresh eye with more skills then me know how to make this happen? I can’t start making a game and assume this will work. I like making a demo and test it first. :0

Thanks in advance for helping me!

My auto-save plugin remembers actors from Streaming levels; to do so it checks the map asset that actor is saved in.
Btw, everything else, I have no clue what you’re trying to ask…

Yea but at no point is this actors really going to be a part of the streaming levels. The actors is actually loaded in the persistent level. I overlooked that being hard to gather from my ramble even if my English was not trash. :stuck_out_tongue:

All the streaming levels have to do with this really are the fact that it’s critical they work together. If not the actors drops into the void.

The ground the actors are on can’t be removed before unloading. And the ground the actors are on is the streaming levels. I can’t leave the actors forzen there due to how far away the player is going to move from it. It needs to be unloaded and doing it togheter with the levels are the only sane way of unloading and loading the actors. Especially when it comes to loading them back in. The actors can’t be a child of a level streaming sector. It needs to be totaly free to move and stay where the player leave it. If that’s on the outher side of the map or not shouldn’t matter.

And why I’m rambling on about world origin is due to the actors is going to refrence there position with something like “GetWorldLocation” when saving with world origin at “X” but when loading the world origin maby isn’t =“X” anymore. I don’t know how to get around that.

Edit: If there is some way to set the position of origin for the actor be the level itself maby? No ide if that’s a thing but sounds kinda smart maybe?

It is part of the streaming level.
To check which streamed level is owner of an Actor you simply call:



AActor->GetLevel()->GetPathName();


That will tell you which *.map asset is the one who owns this Actor even though it is loaded to the persistent world.