Skip to content
This repository has been archived by the owner on Jul 15, 2023. It is now read-only.
bootjp edited this page May 18, 2022 · 15 revisions

なぜやるか

現行の同期エンジンはVR世界で運用するには以下の問題があり, iguagileはそれを解決することを目標とする

  • 実装が公開されており、その実装に従っていることでVR世界での公平性が担保されていることを保証する
    • オブジェクトの管理・制御を提供する
      • 権限ごとのオブジェクトの管理機構
      • オブジェクト所有権の譲渡や取引
      • 譲渡や取引時に改ざん検出可能なプロトコルの提供
      • VR空間内で完結するシームレスな意思疎通や取引を可能とするときに信用できる通信機構とプロトコルを提供する
      • VR空間内におけるオブジェクトや物品の取引
      • 人体(IK)の一部の制御をネットワーク越しの人に委譲するという行為の同意プロセス
        • Ex) 手をつなぐ時など

開発スコープ

  • Phase1 (prototype)

    • Unity環境での同期通信を実装する
    • WebSocket on TCPで実装する
    • 通信プロトコルは変更容易なようにする
  • Phase2

    • レイテンシーを意識してアーキテクチャを最適化する
    • QUIC上でProtocol Bufferを用いた通信に変更する
      • ただしシリアライズのオーバヘッドに耐えられない場合は生のバイナリとする

仕様

  • アーキテクチャ
    • iguagile-unity-sdk
      • C#
    • iguagile-engine
      • go
      • WebSocket のバイナリメッセージで実装する
        • PHASE2でgRPCに載せる
    • ミドルウェア

ブランチ

  • master
    • 本番リリース
  • develop
    • 開発環境リリース
  • prototype
    • Phase1で使用する production readyではない実装
  • 開発フロー
    • Pull Requestベース
Clone this wiki locally