Download

"Persistant" actors after seamless travel?

Hi everyone,

I’m currently working on a client/server based project (using blueprint), and I’m trying to restart the match after it’s over. In my game, I need to transfer information from the last match to the new one.
I read in the documentation that after a seamless travel on the server, some actors “persist”. Here’s the list:

Persistant actors.png

My question is: what does exactly “persist” mean? Because if I check on the server the variables in my GameMode (which is supposed to be “persistant”) after the seamless travel, everything is reset to the default value. Same goes for the PlayerControllers. Is that normal, or should it not be erased?

If that’s normal, then how can I transfer information from the last match through seamless travel (server side)?

Thanks for answering and please forgive my possibly not so perfect english! :slight_smile:

Hey Syalen, I have the same question as yours. Did you find your answer anywhere?

Hey
Hum, actually I just avoided the problem by asking the clients after the restart for the information I needed (it was about cosmetic things). So I don’t have a real solution for this, but maybe you can simply pass arguments through the OpenLevel node, instead of using the RestartLevel one. I didn’t try, but it should work. Sadly, it can only be useful if you want to pass integers, floats or other simple variables, but not a whole actor.
And by the way, I switched to non-seamless travel, so the clients are disconnected and reconnected to the server each time you restart it, this way I can catch when a player connects, just the same way as when the server starts for the first time.

Hope I helped you!

Me too. And only find some miss leading or not good explained information. Would be nice if someone can explain why UE4 documentations is speaking of persistent GM and possible persistent actors on seamless travel, but on server travel by using seamless travel GM get’s reset. Thanks a lot!

https://forums.unrealengine.com/development-discussion/c-gameplay-programming/1775847-preserving-data-on-seamless-travel
https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/102335-gamemode-variable-empty-after-seamless-travel

Basically the actors/objects aren’t destroyed/recreated. Their actor/object persists.

For persistent data look at Game Instance. UGameInstance | Unreal Engine Documentation

It’s good for storing some data. If you need a more indepth long term approach look at GameSave. Save Game | Unreal Engine Documentation

Just as an FYI Game States are unique between levels. Each level has it’s own GS, so when you switch levels a new GS is created.

Thanks for the answer, but that’s not what official documentation says. (At least as I understand it)
https://docs.unrealengine.com/en-US/…ing/index.html

I know GameInstance and have a good understanding of most concept and class types of UE4.
ButI still struggle to understand the documentation text for seamless travel.

There is nothing written, that all data in actros gets wiped or resetted. And when they talk from “persistent” and someone read this, of course he will think that data in the object persists also. I find nothing on the page telling the opposite.
https://docs.unrealengine.com/en-US/…ing/index.html
Or perhaps I simply do not find it.

And when documentation says that “All Controllers that have a valid PlayerState” on server side “are persistent”, then it’s sounds like also data data will be. Also here … at least as my understanding of the text is telling me.
Especially because documentation also cleary says this “When using seamless travel, it’s possible to carry over (persist) actors from the current level to the new one. This is useful for certain actors, like inventory items, players, etc.
So, it seems to be the “easy and preferred” way to take “playerstate” and other things with you when servertravel into new level, **instead **of GameInstance.

So, I am still curios how its working and why every data get nuked on seamless travel and how to prevent this. E.g. how to take full PlayerState with you on seamless Servertravel, with all data in it of course.