x


RPCMode.All Question

Hey guys im trying to understand Unitys built in networking via the old M2H Networking Tutorial Example 4 which is a FPS multiplayer example. I feel that i know the flow of the code. However the following code is kind of throwing me off:

Code from the Pickup Script


    var playersNetworkView : NetworkView = object.GetComponent(NetworkView);
if(pickedUp=="hp"){
    var newHP=playerScript.hp+50;
    if(newHP>100){
        newHP=100;
    }
    playersNetworkView.RPC("setHP",RPCMode.All, newHP); 

And here is the code on the playerscript


@RPC
function setHP(newHP : int){
    hp=newHP;
}

now my question lies in the playersNetworkView.RPC("setHP",RPCMode.All, newHP); line of code.

Since it is using RPCMode.All doesnt that mean each playerscript will update their health when one player picks up the pickup? or does the reference to that players network view mean it will only execute the function on that player?

If someone could be so kind as to explain to me how this works i would greatly appreciate it as i was feeling confident with how RPC works until this =P

Thank you for your time and any additional info that may be needed i will post if requested, again this is from example 4 of the M2H Networking Tutorial.

more ▼

asked Feb 09 '11 at 02:05 AM

unitydev0008 gravatar image

unitydev0008
162 14 14 22

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

What's happening is when this particular player picks up a health pickup, he needs to send a message to all other players that his health increased (hence the RPCMode.All).

The NetworkView part is what is specifying what object to call the function on across the network. It's not calling it on all objects that have this function, its only calling it on all instances of this particular object across the network.

more ▼

answered Feb 09 '11 at 02:57 AM

PrimeDerektive gravatar image

PrimeDerektive
3.1k 57 64 84

Thanks Derek for clearing that up, it makes alot of sense now. For some reason i was thinking RPCMode.All meant everyone do it but i see what you mean that this particular gameobject will execute this function on each client. So if this wasnt the case it would simply update the local players health and to everyone else in the game that player would still be at say for example 50 health even...thanks again =D

Feb 09 '11 at 11:28 PM unitydev0008
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x700
x237
x114
x4

asked: Feb 09 '11 at 02:05 AM

Seen: 1540 times

Last Updated: Feb 09 '11 at 02:05 AM