I’m using one of the FPS templates on the UE4 marketplace but I’ve added my own character class written in C++.
On one of the maps from the template, the following code inside of my character class does this:
GetLocalRole() // returns ROLE_AutonomousProxy
But when I start on a different map and server travel in game to the same map mentioned above, it does this:
GetLocalRole() // returns ROLE_Authority
I originally encountered this problem because I have a rep notify that isn’t getting called on the client on certain maps.
I have a decent understanding of replication and the like, but I’ll admit this is going completely over my head. The only thing I can imagine is the server travel is somehow changing the role on the actor my character is controlling.
Any help would be much appreciated! I’ve been stuck on this for weeks
Hi there, I might be totally wrong, as my understanding of replication is not at all great. However, doesn’t unreal gets a random controller to be the server? When you switch maps, maybe that is why it’s happening?
Have you tried using dedicated server for testing?
I thought of some things, but you probably already tried it all:
Have you tried packaging the game and see if the error persists?
(I asked, because I have some bugs with UI that only shows on my packaged game, as the server doesn’t show at all in the editor).
Are you using seamless travel?
How is the character been spawned in the new map? Is the game mode handling the spawning?
Sorry that I can’t be much more of a help, which FPS template are you using?
edit: forgot to answer about the “Play as client” - the documentation says that play as client will spawn a dedicated server, yes. " * Play As Client: Enables the Editor to act as a client. A dedicated server spawns behind the scenes to connect to."
I haven’t tried packaging it yet due to load times (my computer is as old as time itself), but that’s something I’ll try!
Yes, my game mode has seamless travel turned on and the game mode is handling the spawning of characters and the possessing of those characters via a controller. How would this affect things?
No worries. Thanks for trying to help. I’m befuddled
Hi, i dont know your exact code, but when you execute server travel on your client with ?listen at the end of the URL you are specifieing the server as a listen server, which could also result in you having the Authority Role.
// NOTE - This is a temp check while we work on a long term fix
// There are a few issues with seamless travel using single process PIE, so we're disabling that for now while working on a fix
if (World->WorldType == EWorldType::PIE && bUseSeamlessTravel && !FParse::Param(FCommandLine::Get(), TEXT("MultiprocessOSS")))
{
UE_LOG(LogGameMode, Warning, TEXT("CanServerTravel: Seamless travel currently NOT supported in single process PIE."));
return false;
}