STYLY NetSync for LBEとは
STYLYでは、LBE(ロケーションベースドエンターテイメント)XR用のオープンソースプロジェクトを発表しました。
STYLY NetSync for LBEはLBEコンテンツを制作するうえで必要な基本機能を提供するオープンソースモジュールとサーバーです。

概要
本記事では、ネットワークモジュールであるSTYLY NetSync for LBEの基本機能であるTransform同期を実現するまでの方法をステップ・バイ・ステップで解説します。
体験場所に皆で集まり同じ体験を共有することはLBE XRの醍醐味の一つですが、ネットワーク機能をUnity上で実装しLBEコンテンツを制作するのはなかなか大変です。

Unityでネットワーク機能はPhoton, NetCode, Mirrorなどの様々なモジュールを用いて実装することが可能です。ただ、それらのモジュールは1対1の格闘ゲームも、10人で遊ぶFPSも、100人で遊ぶMMORPGも、様々な用途に対応できる低レイヤーの通信モジュールであるため、LBE向けのコンテンツを実装しようとした場合に主に下記のような課題があるかと思います。
- LBEで利用しない機能も存在するため学習コストが高い
- LBEに最適なチューニングを行うのが大変
また、LBEは同一ロケーションに集まりHMDを用いて体験するため
- Local Area Network内で利用することが前提
- 管理された端末からしかサーバーへアクセスがない
- 認証やチート対策が不要
などLBEに最適化されたシステムでは通常考慮する必要がある項目もスキップすることが可能です。
STYLY NetSync for LBEは、利用用途をLBEに限定することでコンテンツ制作者にとって学習コストを低く簡単に利用できるよう心がけて設計しました。
下記では、新規Unityプロジェクトでひとつのシーンを複数の端末からデフォルトアバターで共有するというシンプルなシナリオを実現する方法を説明します。
チュートリアル
STYLY NetSync for LBEのGitHubレポジトリ
詳しい内容は下記レポジトリのREADMEを確認
事前準備
ターミナルで下記のコマンドを実行し、開発環境のマシンにNodeJS、uv、OpenUPMのインストールを行います。
# Windows
winget install -e --id OpenJS.NodeJS.LTS
winget install --id=astral-sh.uv -e
npm install -g openupm-cli
# Mac
brew install node
brew install uv
npm install -g openupm-cli
UnityプロジェクトへSTYLY NetSyncの追加
ターミナルでUnityプロジェクトへカレントディレクトリを移動したあと、OpenUPMコマンドでSTYLY NetSyncをUnityプロジェクトへ追加します。
@バージョン番号を省略すると最新版がインストールされます。
# Go to your unity project directory
cd YOUR_UNITY_PROJECT_DIR
# Add NetSync package with specific version
openupm add -f com.styly.styly-netsync@0.7.0
Package Managerを確認すると、STYLY NetSyncの他、様々な依存先のライブラリがインストールされていることを確認できます。
HMDデバイス用SDKの追加と設定
STYLY NetSync for NetSyncの依存関係として自動的にインストールされるSTYLY XR Rigでは各種デバイス用SDKのインストール及び設定をワンクリックで実現できます。
対象のHMDの種類を選択すると、SDKのダウンロード、SDKのインストール、SDK及びUnityの適切な設定をすべて自動で行ってくれます。
Project Settingを開くと、SDKがインストールされるだけでなく、OpenXRの各種設定がなされていることを確認できます。
XR Rigの追加
ヒエラルキーにXR Rigを追加しましょう。ヒエラルキーで右クリックするとメニューにSTYLY XR Rigが表示されますので選択して追加します。
STYLY XR Rigは、UnityのInteraction Toolkitで提供されるほとんどのサンプルに対応する便利なXR用のRigになります。
NetSync Managerの追加
ヒエラルキーを右クリックし、メニューからNetSync Managerプレファブを追加します。プレファブにアタッチされているNetSyncManager.csはNetSyncサーバーへ接続し各種通信を司るメインのスクリプトになります。
NetSyncManagerではサーバーのアドレスやルームID、アバターの設定を行うことができます。とりあえず、設定は変更せずにデフォルトのままで構いません。サーバーアドレスが空欄の場合は、接続されているLAN内に存在するNetSyncサーバーを自動的に検出し接続します。
Unityクライアントの設定は以上です。1行のコマンドと、3回のクリックだけで基本的な設定は完了です。
サーバーの起動
いちばん簡単なサーバーの起動方法は、Unity EditorのメニューからStart NetSync Serverを選択します。

ターミナルが起動しますので、サーバー検出ポートを選択します。とりあえず、1を選択してデフォルトのポートを利用しましょう。(この機能は、オフィスの同じネットワークで複数人が開発を行う場合にサーバー検出ポートを個人ごとに設定することで開発を行うやすくするための機能になります。)
サーバープログラムがダウンロードされ、Python仮想環境の構築、サーバーの実行がすべて自動で行われます。
STYLY NetSyncのロゴが表示されればサーバー起動成功です。

ターミナルから手動でサーバーを起動したい場合は下記のコマンドを実行します。@バージョン番号を省略すると最新版のサーバーが起動しますが、UnityにインストールしたNetSyncのバージョンとサーバーのバージョンを同一にしておくためにバージョン番号は明示しておくのが良いでしょう。
uvx styly-netsync-server@0.7.0
ビルドして実行
あとはAndroidアプリとしてビルドし、apkファイルをデバイス実機に転送するだけ。
最後に
本記事では、LBE特化のオープンソースネットワークモジュール&サーバーのSTYLY NetSync for LBEの基本的なセットアップを説明しました。
STYLY NetSync for LBEはApache2.0ライセンスで提供されるため、企業・個人・商用・非商用問わず無償で利用できます。
バグの報告、機能追加要望、機能追加コードのPull Requestは、GitHubにて受け付けていますのでモジュールの改善にご協力いただければ幸いです。








