Authority on scene placed actor

Hello, I have some confusion about Actor replication and its authority for the actors that placed in scene.
The Frist thing the actor have to be spawned on Server and replicated to the client and then we can invoke server functions from client, but how does it works when the actor just placed in scene? If I understand it right we have to set owner that will be owned its authority, Ok I have tried to do that, but “Run On Server Event not Invoke”, what could be the problem?
The main idea that I want to run server functions from client


To check invoking function from client I am using Remote (the client copy on Actor)

RPC your authoritative proxy → Have it reference the actor → call event/function.

An actor spawned into the scene by default has no owner. Behavior defaults to the server having authority over the actor.

You cannot call a Server RPC from this actor from the client since the actor is not locally owned. Generally, most Server RPCs are done in the player controller which is locally owned on the client.

Setting the owner to the remote player controller allows Server RPCS to be called from that client but not from any other client.

So for default behavior it is perfectly alright not the set the owner. It depends on why you need to call a Server RPC for that actor if making the actor locally owned works in that case.

It gets complicated, hope this helps.

To add. In your example. Begin play is called both on the server and the client for the player controller. The Server has authority, so the owner will be set to the server, not the client, and therefore the Server RPC will not work from the client.

1 Like

Yeah that right BrginPlay called on Server and server player controller sets as owner to this actor and local player controller to local actor, if I understand it right seting the local player controller (wich is replicated) should give the posibility sync the client/server actor and run server events?
if not what is the right way to do that? or scene actor schouldn`t be like that?

The way I always handle this type of stuff is to rpc the authority proxy (client pawn → server pawn) and have it call the event on the actor. Auth Proxies are “Owned” by the server. Thus it can do whatever to whichever actor on the server.

I don’t recall ever having to set Owner for this approach.

When Begin Play is run on the client, Set Owner is being called on the client, but the client does not have the Authority to set the Owner of a replicated actor. So this will not work in the way you have it set up.

You need to set up your Server RPC in the Player Controller and call it there with the actor as a parameter and do your Server action there.

The only reliable client owned actors are the player controller and the player character. Server RPCs are almost always called from either of those two actors.

I don’t want to say it’s not possible to create a client owned replicated actor, but it is just not done at all as far as I know.

You mean if I need replicated actor on the level I have to use pawn (that will make it owned by controller)? I reparent my actor to Character but nothing changes

Ok, setup server logic in another way sounds like a trick, here is another question, what if I have component could I set up my server function there and setup owner to component and run server function there?

To make it clear, lets take the setuation that only authority actor allowed set owner, ( if I understend it right when I change authority actor that means it should update client actor and set owner there)
Ok lets check the idea


Unfortunatly that also not work (I also give it some time to update by using delay)

Just look at a networked door. You aren’t setting the actor as owned by anything. You are simply calling an event on that actor. The event makes that actor do something… Open or close.

By default “All Actors Placed” in scene (Not Spawned) are “Owned” by the server.
You cannot call an event on an actor that is not owned by you (Autonomous Proxy). Therefore you must call the event from ANY other Server actor.

An Authoritative Proxy is a “Server” actor.

With a door you are simply pressing a key that calls an event on the characters auth proxy. The auth proxy gets a reference to the door, then calls an interact event on the door actor.

No ownership is set. The door still belongs to the server.


If you are attaching the actor to the character, or claiming it, then you should set owner. Otherwise there’s no need to set owner.

Hm, thats makes it clear, it looks like all events from client to server could go only from player controller or character that controlled by this controller,
Thats happens so becouse that is only client that server could “trust”? in your example like player controller os only the door from client to the server.
Ok, thank you very much, I think I got it. Thats is really nice example, thank you very much!

You can never trust a client. All gameplay actions should be validated and executed by the server. You only input an action, play anims/fx etc. The server does the important part.

Yeah you right, it better to say that the player controller is only client who could ask server to do smth.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.