I am working on a party system, which works just fine. However, when the players are extremely far from each other (big map), they stop sending each other the information (hp, etc) because they are outside each other’s net cull distance area, hence turning not relevant.
Is there a way to make two player/actors (and only between those two actors) to share information, no matter the distance?
Adding an actor in map (placed), to pass out that kind of information, has the same issue: doesnt work
I believe it to playerstate is a no-go, as I dont want all players to have the party information, only keep transfering the info between the party members.
So yeah, in the image, when actor1 and actor2 are nearby, it works fine. as soon as actor2 leaves the netcull distance, they wont receive the party info, even the UI of hp/mp/name goes blank because of that, as the reference just doesnt exists anymore.
Playerstate is a better option because that’s where you’re supposed to store the player’s state (health, score, team, etc.). If you only want to access members in a party, then only access members in a party. You can store the player’s party in their playerstate, then access the other members of the party from an array in the gamestate.
Blueprint doesn’t expose custom replication rules but in C++ you can do this:
You could make a derived Actor class with a TeamId Property (don’t replicate this property) and have the Server set this when appropriate. Then override the “IsNetRelevantFor” function and if it returns false check again if the RealViewer belongs to the same TeamId then return true.
Without C++ you would have to make it always relevant which is a bad solution not only for network traffic but also cheating.