Language:

サイドバー

バーチャルキャスト公式Wiki

メニュー

Steam版

デバイス

アセット

配信

その他

リリース情報

デベロッパー向け


開発環境

GLB

vci:component:sdk:subitem:owned

SubItemの所有権と同期処理の関係

SubItem・同期・所有権の関係性について説明します。

所有権とイベント関数の関係も参照してください。

概略

  • SubItemの位置・回転・拡大/縮小は、サーバを介してネットワーク同期が行われる
    • ここでの「同期」とは、同じ値になるよう強制すること
  • 位置・回転・拡大/縮小以外の値は同期されない
  • SubItemの子孫のオブジェクトの値は同期されない
  • SubItemには所有者 (VCIまたはSubItemの所有権を持つ者)非所有者の関係がある
    • 所有者側では物理挙動やUpdate関数などで動作した結果の情報が送信される
    • 非所有者側ではその結果を受信して再生する
  • SubItemをつかむと所有権が移る

その他、以下のような特徴があります。

  • 同期は毎フレームではなく、間引かれて実行される
  • 位置・回転・拡大/縮小はそのまま送信するとカクカクするため、バーチャルキャストが動きを補間する
    • 細かい動きや機敏な動きは同期した時に相手側で見た目が変になる場合がある
  • 同期には遅延があるため、完全に同じ見た目・同じ動きにはならず、若干のズレが発生する場合がある

所有権

SubItemの位置・回転・拡大/縮小を変更できる権利です。
SubItemごとにスタジオで一人だけが所有者になれます。同期は、所有者から非所有者への一方通行になされます。
※所有権は、ネットワーク同期の所有権であり、authorのことではありません

所有権を得る

バーチャルキャストでは、誰でもアイテムをつかむ(Grab)ことができて、アイテムをつかむと所有権が移ります。

VCIの所有権とSubItemの所有権

SubItemの所有権に加えて、VCIの所有権があります。
VCIの所有権は、VCIの所有者 (VCIをシーンに呼び出したユーザー) が持っていて、Grabで移動することはありません。
VCIイベント関数 の一つ、update関数は、VCIの所有者だけで呼ばれます。

このことにより例えば、update関数内で位置・回転・拡大/縮小を変更しても、所有権が無いSubItemの位置・回転・拡大/縮小は行えません。
(SubItemの所有権のあるユーザーに位置・回転・拡大/縮小の状態を上書きされる)

物理挙動

所有権と物理は密接な関係があり、物理が有効なSubItemは、所有権のあるアイテムだけ物理挙動します (所有権のないSubItemは Kinematic = true になる)。
所有権の無いアイテムは、所有者の結果をコピーします。
所有者の結果は間引きして送信されるので、間が補完されて奇妙な動きをする場合があります。
高速になるほど顕著になります。

vci/component/sdk/subitem/owned.txt · 最終更新: 2022/09/05 18:02 by pastatto

ページ用ツール