migrating from photon
i call RealtimeView.RequestOwnership() and it just doesnt happen. doesnt give me any errors or anything
20 Replies
Hi @ev. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
A few common Normcore gotchas can make RequestOwnership feel like it βdoes nothing.β Hereβs a focused checklist to help you debug:
1) Make sure the view actually has a model yet
- For scene RealtimeViews, they register in Start(). If you call RequestOwnership() too early, youβll hit the βno model yetβ case and ownership wonβt change. Wait until realtime.connected == true or after didConnectToRoom, or call from Start/after Start rather than Awake. [RealtimeView FAQ] 2) Check parent ownership and preventOwnershipTakeover
- The server will reject a takeover if a parent RealtimeView is owned by someone else, or if preventOwnershipTakeover is true anywhere in the hierarchy. In those cases, requests are optimistically applied client-side and then rolled back silently if the server denies them. [RealtimeTransform; Prevent takeover; Requesting ownership of a RealtimeView] 3) Verify youβre requesting ownership on the right component
- For movement, ownership needs to be on the RealtimeTransform (not just the RealtimeView). If the view is owned by someone else, RealtimeTransform RequestOwnership() can still be rejected due to hierarchy ownership. If you want collision-based handoff, ensure the RealtimeView remains unowned. [RealtimeTransform; RealtimeTransform FAQ] 4) If itβs a custom RealtimeComponent/RealtimeModel
- Ownership only works if the model was compiled with a meta-model. Add [RealtimeModel(createMetaModel: true)] to your model attribute; otherwise ownership calls wonβt affect anything. [Requesting ownership of anyβ¦; RealtimeModel methods] 5) Timing on prefabs vs scene objects
- Prefab views are ready by Start on the prefab instance. Scene views might not be ready until after they register with Realtime; wait for the room to connect or use didConnectToRoom before interacting with ownership. [RealtimeView FAQ] 6) How to quickly validate at runtime
- Use the RealtimeView inspector buttons (Request Ownership / Clear Ownership) in Play mode to see if the request sticks. If it doesnβt, itβs likely being denied due to hierarchy ownership or preventOwnershipTakeover. [Requesting ownership of a RealtimeView; RealtimeView editor] Practical steps: - Ensure you call RequestOwnership() after the view is registered (e.g., after didConnectToRoom). - Check realtimeView.isOwnedLocallyInHierarchy and preventOwnershipTakeover in the inspector at runtime. - If you only need to move an object, call realtimeTransform.RequestOwnership() and leave the parent RealtimeView unowned. [RealtimeTransform; RealtimeTransform FAQ] If you share a snippet showing where you call RequestOwnership() (Awake/Start/after connect) and whether this is a scene object or a prefab, I can help pinpoint which of the above is the culprit. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
- For scene RealtimeViews, they register in Start(). If you call RequestOwnership() too early, youβll hit the βno model yetβ case and ownership wonβt change. Wait until realtime.connected == true or after didConnectToRoom, or call from Start/after Start rather than Awake. [RealtimeView FAQ] 2) Check parent ownership and preventOwnershipTakeover
- The server will reject a takeover if a parent RealtimeView is owned by someone else, or if preventOwnershipTakeover is true anywhere in the hierarchy. In those cases, requests are optimistically applied client-side and then rolled back silently if the server denies them. [RealtimeTransform; Prevent takeover; Requesting ownership of a RealtimeView] 3) Verify youβre requesting ownership on the right component
- For movement, ownership needs to be on the RealtimeTransform (not just the RealtimeView). If the view is owned by someone else, RealtimeTransform RequestOwnership() can still be rejected due to hierarchy ownership. If you want collision-based handoff, ensure the RealtimeView remains unowned. [RealtimeTransform; RealtimeTransform FAQ] 4) If itβs a custom RealtimeComponent/RealtimeModel
- Ownership only works if the model was compiled with a meta-model. Add [RealtimeModel(createMetaModel: true)] to your model attribute; otherwise ownership calls wonβt affect anything. [Requesting ownership of anyβ¦; RealtimeModel methods] 5) Timing on prefabs vs scene objects
- Prefab views are ready by Start on the prefab instance. Scene views might not be ready until after they register with Realtime; wait for the room to connect or use didConnectToRoom before interacting with ownership. [RealtimeView FAQ] 6) How to quickly validate at runtime
- Use the RealtimeView inspector buttons (Request Ownership / Clear Ownership) in Play mode to see if the request sticks. If it doesnβt, itβs likely being denied due to hierarchy ownership or preventOwnershipTakeover. [Requesting ownership of a RealtimeView; RealtimeView editor] Practical steps: - Ensure you call RequestOwnership() after the view is registered (e.g., after didConnectToRoom). - Check realtimeView.isOwnedLocallyInHierarchy and preventOwnershipTakeover in the inspector at runtime. - If you only need to move an object, call realtimeTransform.RequestOwnership() and leave the parent RealtimeView unowned. [RealtimeTransform; RealtimeTransform FAQ] If you share a snippet showing where you call RequestOwnership() (Awake/Start/after connect) and whether this is a scene object or a prefab, I can help pinpoint which of the above is the culprit. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
<@419782903405215744> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
also any object with a realtime transform is just frozen and it doesnt have any physics. i think its because nobody owns it in the room but i cant really own it anyway
You need to request ownership of the RealtimeTransform and make sure Maintain Ownership While Sleeping is true if the body is at rest
alright ill try that, thanks
sure thing!
got it to work yippee
great! glad to hear it π let us know if you have any other questions
does rv.isOwnedLocalySelf mean like you have authority over the view
cus ive been messing around with it and for me its quite the opposite
nvm i got it to work
is there anything for syncing animators? like how mirror has network animator and photon has an animator view
@Normcore Assistant do you work
Let me check the knowledge base for you again. One moment! :books:
oh it work
----------------------
Iβm here to help with questions about NormalVR (Normcore). If you have a Normcore questionβlike ownership, RealtimeTransform, or player controller setupβask away and Iβll dive in. If your question isnβt about NormalVR, Iβm not able to answer it.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
<@419782903405215744> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
can you read images and if so what this mean

@Normcore Assistant can you read images and if so what does this mean blah blah bleh bleh blublublub

Let me check the knowledge base for you again. One moment! :books:
----------------------
Iβm tuned to answer questions about NormalVR (Normcore). I canβt interpret arbitrary images or non-Normcore content.
If you have a Normcore-related image (e.g., a screenshot of a Unity inspector or error) and describe what youβre seeing, I can help interpret it using the docs. Otherwise, feel free to ask a Normcore questionβgetting started, avatars/voice, ownership, or scaling roomsβand Iβll cite the relevant guides. [Getting Started; Ownership flags]
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
<@419782903405215744> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
did you destroy the RealtimeTransform or Rigidbody component at runtime? that's what this looks like
mb i didnt check here i fixed a lot of stuff but im getting an error upon spawning the network player prefab
Failed to set model on component (3:NetRig(Clone) (NetRig)).
idk what i did wrong ill do some more troubleshootinthere should be another error next to that one that explains whatβs wrong