VRChat の状態と動きを、テクスチャストリームで伝送。
TSMP(Trans Sync Media Protocol)は、ランタイムデータをテクスチャストリームで送る通信プロトコルです。TSMP Core は、このプロトコルを VRChat ワールドで利用するためのランタイム・同期コンポーネント・設定ツールを提供するオープンソースのネットワークフレームワークです。
Encoder がシーンのデータをピクセルに変換し、キャプチャ・配信経路を経由した映像を Decoder が読み取り、対応する受信オブジェクトに適用します。
| 機能 | 内容 |
|---|---|
| テクスチャ転送 | TSMP Encoder / Decoder によるランタイムデータのエンコード・デコード |
| マルチインスタンス通信 | 外部のキャプチャ・配信経路と組み合わせ、異なる VRChat インスタンス間の同期ソリューションを構築 |
| 状態とイベント | [TransSync] フィールド同期、SendTransRPC(methodName, target) による RPC |
| 動きと再生 | Transform、Rigidbody、Humanoid・VRChat Avatar Pose、BlendShape、Animator、Timeline |
| シーン設定 | TSMPSetup の自動設定、コーデック検出・選択、コンポーネントとバインディングの自動更新 |
| コーデック拡張 | カスタムコーデック用の共通ランタイム、shader include、catalog asset |
VRChat 環境: Unity 2022.3 LTS · VRChat Worlds SDK 3.9.0 以降
-
VRChat Creator Companion に以下の VPM リポジトリを追加します。
https://vpm.kiba.red/ -
TSMP Core と TSMP Codec Luma4 を一緒にインストールし、インポートが完了するまで待ちます。
Core はシーンランタイムとセットアップを、別のコーデックパッケージはピクセルエンコードを担当します。
VRCSDK のない通常の Unity で使う場合
- 通常の Unity 対応を含む Core と Luma4 のリビジョンを使用します。
- Unity Package Manager の Add package from disk で各パッケージの
package.jsonを選択します。 - 下記と同じ Controller プレハブを使用します。コンポーネントとバインディングは自動準備されます。
- 検証済みの構成は Windows x64、Mono、managed stripping 無効です。リフレクション・stripping の制限と IL2CPP の検証範囲はインストールガイドを参照してください。
TSMPController.prefabをシーンに配置します。- 同期したいオブジェクトに必要な
TSMPNetwork*コンポーネントを追加します。 TSMPSetupでRefresh Codecsを押し、コーデックと入出力設定を確認します。コンポーネントとバインディングは自動更新されます。- Play Mode に入るか VRChat でテストし、共通 Controller の初期設定のローカルループバックでエンコード・デコードを確認します。
- 外部転送では Encoder の出力 RenderTexture を配信し、受信した TSMP 映像を Decoder の入力テクスチャに接続します。
生成リソース: Assets/TSMPGenerated をシーンと一緒にバージョン管理してください。
| やりたいこと | ドキュメント |
|---|---|
| 最初のシーンをインストール・設定 | インストール · クイックスタート |
| 同期コンポーネントを使う | Network components |
| カスタムコーデックを作る | Custom codec |
| 受信・デコードの問題を調べる | Troubleshooting |
TSMP Core 1.0.0 は正式リリースです。0.2.0 以降のベータで追加された機能・修正・最適化を含みます。Luma4 1.0.0 と組み合わせて使用してください。
不具合や改善案は Issues にお寄せください。コード・ドキュメントへの貢献は貢献ガイドを参照してください。
MIT License · Copyright (c) 2026 KIBA_Labs.
