インスタンスオーナーとインスタンスマスターの違い

この記事は約5分で読めます。

VRChatには、インスタンスオーナーとインスタンスマスターと呼ばれる概念があります。
似たような名前ですが、実際には大きな違いがあります。

インスタンスオーナーとインスタンスマスターは同じとは限りません。

インスタンスオーナー(Instance Owner)

インスタンスを作成した人、具体的にはNew Instanceボタンを押した人のことです。
ただし、Publicインスタンスの場合はワールドオーナーがインスタンスオーナーになります。

画面上で王冠マークで表示されます。インスタンスが存続する限り、インスタンスオーナーが変更されることはありません。

Publicインスタンスではワールドオーナーがインスタンスオーナーと同等の権限を持ちますが、厳密にはインスタンスオーナーではありません。したがってPublicインスタンスではインスタンスオーナーは不在です。
また、GroupインスタンスおよびGroup+インスタンスではインスタンスオーナーは不在です。

Udonでは以下のプロパティでインスタンスオーナーの情報を取得できます。

Networking.IsInstanceOwnerでインスタンスオーナーかどうかのbool値を取得できます。インスタンスオーナーが不在のインスタンスタイプでは常にfalseとなります。

Networking.InstanceOwnerでインスタンスオーナーの情報をVRCPlayerApi型で取得できます。取得したオブジェクトのdisplayNameプロパティで表示名を取得できます。
インスタンスオーナーが不在もしくはインスタンスから退出済みの場合、Networking.InstanceOwnernullとなります。

https://creators.vrchat.com/worlds/udon/networking/network-components/

インスタンスへの入場権限の基準になったり、インスタンスからの追放(Kick)を行ったりすることができる権限を持ったりします。
Drop Portalが行えるのも原則としてインスタンスオーナーのみです(Publicインスタンスを除く)。

2023年2月24日現在、インスタンスオーナー名にマルチバイト文字が含まれる場合に画面上に表示されなくなることがある問題が発生しています。

2023年3月現在、この問題は修正されました。

通常、ワールド内に入れる人数はワールドに設定された人数の2倍が絶対的上限ですが、インスタンスオーナーとワールドオーナーはその上限を超えてJoinすることができます。
インスタンスオーナーとワールドオーナーが確実にインスタンスに戻ってこられるようにするための仕様です。

ワールドに設定できる人数の上限は40人ですので、技術的には最大82人が1つのインスタンスにJoinすることができます。

2023年11月現在、ワールドにJoinできる人数は、ワールドごとに設定されたMaximum CapacityとRecommended Capacityによって制約されるようになりました。
いずれも最大80人まで設定できます。技術的には、最大82人までJoin可能であることに変わりありません。

Maximum Capacityが絶対的上限です。Recommeneded Capacityに達するとインスタンスリストから非表示となり、Joinによってのみ入ることができます。
なお、Maximum Capacityの初期設定はRecommended Capacityの2倍です。

インスタンスマスター(Instance Master)

インスタンスに最初に入った人のことです。もし最初の人がインスタンスから去った場合、二番手の人にインスタンスマスターが移行します。
ワールドの同期の基準になることがあります。また、インスタンスマスターだけが操作できるワールド内のギミックが存在することもあります。

ワールドによっては、インスタンスマスターの接続が切断されると進行に支障をきたすこともあります。
ゲームワールドに多いため、ワールド内に注意書きがある場合はご注意ください。

インスタンスマスターは通常画面上には表示されませんが、ワールドギミックで表示されることがあります。

2023年2月24日現在、インスタンスへの入場時に時々インスタンスマスターが世界の果てまで飛ばされることがある事象が発生しています。

仕様変更の予定があります

2024年2月23日追記
インスタンスマスターが不在になった場合の動作安定性向上のため、この仕様は今後変更される可能性があります。

仕様変更後のインスタンスマスターの仕様

2025年1月13日現在は、以下のルールに従ってインスタンスマスターが存在します。

  • インスタンスマスターが不在になることはありません。
  • 最初にJoinした人がインスタンスマスターとなります。
  • インスタンスマスターだった人がインスタンスから退出すると、インスタンスマスターは交代します。
  • インスタンスマスターがAndroidプラットフォームの場合(Questもしくはモバイル版)、VRChatをバックグラウンド状態で長時間放置していた場合も交代することがあります。
  • インスタンスマスターはサーバー側の基準によって(プラットフォームやネットワーク条件によって)総合的に決定されます。Networking.IsMasterNetworking.Masterによってインスタンスマスターの情報を取得できますが、これらに依拠して設計すべきではありません。
タイトルとURLをコピーしました