RequestOwnership() and a ball
I am working on a simple game that involves players applying forces to a shared ball. Documentation suggests that I should use RequestOwnership() to do this, but I am having trouble getting it to function as described. What am I missing? Thank you.
11 Replies
Hi @Hayden. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
In NormalVR, the
RequestOwnership()
function is used to designate which client is responsible for the movement of a game object. If you're trying to apply forces to a shared ball, you'll need to ensure that the client applying the force is the owner of the ball's RealtimeTransform
component.
Here's a simple example of how you might use RequestOwnership()
:
After calling RequestOwnership()
, only the local client can make changes to the RealtimeView
and any child views or components on myObject
. If you want to clear the ownership later, you can use myObjectView.ClearOwnership()
.
It's important to note that RequestOwnership()
and ClearOwnership()
take effect immediately, but if the server blocks the request—say, because preventOwnershipTakeover
is true
or because the view's parent is owned by another client—then ownership and all changes that required ownership will be rolled back.
If you're still having trouble, it might be because Normcore doesn’t send changes to the server immediately when you change ownership or the value on a model. Instead, it synchronizes at 20hz and sends the latest state. If you change something and then change it back immediately, nothing will be sent to the server. In this case, you might want to skip calling ClearOwnership()
.
For more information, you can refer to the RealtimeTransform documentation (https://normcore.io/documentation/realtime/realtimetransform) and the Common Questions (https://normcore.io/documentation/realtime/common-questions) section of the Normcore documentation.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@143551436603654145> kapa.ai is still learning and improving, please let us know how it did by reacting below
Thanks, that's pretty much what I'd gathered as well. I'll go through it again.
the way realtime transform works is one player takes ownership of the ball and then sends updates to other players of the new position and velocity but depending on the type of game you're making that will look better or worse if you're the owner. also if 2 people request ownership at the same time and both move the ball the last update sent to the server will override the first player's move
if you need both forces to be cumulative you'll probably need a custom solution
Interesting. Well, that does make sense. What I'm seeing though is that, even as the only player, I'm not able to apply force to the ball via script unless I collide with it, after which I can do so
It's as if the RequestOwnership() call isn't returning
make sure clear ownership on sleep is off
Solution
also you only need ownership of the realtime transform
that was it!
it works 🙂 thank you
Hey! What one was it if you dont mind
- make sure clear ownership on sleep is off
or
- also you only need ownership of the Realtime transform
Hi! I already had the first one set, and the second one is when it started working.
Awesome thank you!