What does "run on server" specific mean?

I know how to use “run on server” function in the pawn that possess by client controller.
but how I can use it in other actors?
should The actor be spawned on server or client? I tried both ways but looks like it didn’t work?
so does anyone know how to do it?
or, can somebody explain the word “Target owned by invoking client” means in this page (Networking Overview for Unreal Engine | Unreal Engine 5.1 Documentation)

Run on server means that you are calling a function from a client and you expect the server to execute it. Run on server can only be used by autonomous proxys which is usually player characters and their controllers I think. On a multiplayer game, every actor should be spawned on the server if you want all the clients to see it. If you spawn stuff in a client, only the client that spawned it will see it. Target owned by invoking client refers to who is calling the RPC (Remote Procedure Call) in the client. It means that the actor who calls the function is owned locally, which is, in most cases, the player character of that client.

so I spawn the character on the “post login” when a client joined, but this character is owned by client ? I’m so confused

so I spawn the character on the “post login” when a client joined, but this character is owned by client ?

Yes. Player characters are owned by each client because each player is controlling his character so he is the owner of that character. To me that sounds intuitive.

I recommend reading these

https://udn.epicgames.com/Three/NetworkingOverview.html

they helped me a lot to understand the concepts of unreal networking

I finally figured it out, looks like I have to set the actor’s owner to be the client’s controller to use the “run on server” function normally.

Great to hear it’s solved!!