VRChatには、インスタンスオーナーとインスタンスマスターと呼ばれる概念があります。
似たような名前ですが、実際には大きな違いがあります。
インスタンスオーナー(Instance Owner)
インスタンスを作成した人、具体的にはNew Instanceボタンを押した人のことです。ただし、Publicインスタンスの場合はワールドオーナーがインスタンスオーナーになります。
画面上で王冠マークで表示されます。インスタンスが存続する限り、インスタンスオーナーが変更されることはありません。
Udonでは以下のプロパティでインスタンスオーナーの情報を取得できます。Networking.IsInstanceOwner
でインスタンスオーナーかどうかのbool値を取得できます。インスタンスオーナーが不在のインスタンスタイプでは常にfalse
となります。Networking.InstanceOwner
でインスタンスオーナーの情報をVRCPlayerApi
型で取得できます。取得したオブジェクトのdisplayName
プロパティで表示名を取得できます。
インスタンスオーナーが不在もしくはインスタンスから退出済みの場合、Networking.InstanceOwner
はnull
となります。
https://creators.vrchat.com/worlds/udon/networking/network-components/
インスタンスへの入場権限の基準になったり、インスタンスからの追放(Kick)を行ったりすることができる権限を持ったりします。
Drop Portalが行えるのも原則としてインスタンスオーナーのみです(Publicインスタンスを除く)。
インスタンスマスター(Instance Master)
インスタンスに最初に入った人のことです。もし最初の人がインスタンスから去った場合、二番手の人にインスタンスマスターが移行します。
ワールドの同期の基準になることがあります。また、インスタンスマスターだけが操作できるワールド内のギミックが存在することもあります。
ワールドによっては、インスタンスマスターの接続が切断されると進行に支障をきたすこともあります。
ゲームワールドに多いため、ワールド内に注意書きがある場合はご注意ください。
インスタンスマスターは通常画面上には表示されませんが、ワールドギミックで表示されることがあります。
仕様変更の予定があります
2024年2月23日追記
インスタンスマスターが不在になった場合の動作安定性向上のため、この仕様は今後変更される可能性があります。
hey active world creators, check this outhttps://t.co/LLUGbw7TZC
— tupper (@dtupper) February 22, 2024
we've been having some fun issues due to network user hosts persisting too long, and we flagged that ppl might be relying on host transfer acting a certain way.
if you've got networking brains, plz check it out
仕様変更後のインスタンスマスターの仕様
2025年1月13日現在は、以下のルールに従ってインスタンスマスターが存在します。
- インスタンスマスターが不在になることはありません。
- 最初にJoinした人がインスタンスマスターとなります。
- インスタンスマスターだった人がインスタンスから退出すると、インスタンスマスターは交代します。
- インスタンスマスターがAndroidプラットフォームの場合(Questもしくはモバイル版)、VRChatをバックグラウンド状態で長時間放置していた場合も交代することがあります。
- インスタンスマスターはサーバー側の基準によって(プラットフォームやネットワーク条件によって)総合的に決定されます。
Networking.IsMaster
やNetworking.Master
によってインスタンスマスターの情報を取得できますが、これらに依拠して設計すべきではありません。