互換性と差異
UdonEmu は VRChat 公式の Udon 実装を模倣していますが、環境(Unity/SDK)や未実装領域により差異が出る可能性があります。
互換性の考え方
対応範囲
UdonEmu は以下の範囲で公式実装との互換性を目指しています:
- ✅ UdonAssembly の命令セット(OpCode)
- ✅ 変数の読み書き
- ✅ エントリポイント(イベント)の実行
- ✅ 基本的な制御フロー
制約・既知の差異
- Editor 専用機能: 一部の機能は Unity エディタでのみ動作します(
#if UNITY_EDITORによるもの) - VRChat 固有 API: ネットワーク関連など、VRChat 環境に強く依存する機能は模倣に限界があります
- パフォーマンス特性: 実行速度や最適化は公式実装と異なる場合があります
差異が出たときの切り分け手順
公式の VRChat と UdonEmu で挙動が異なる場合、以下の手順で原因を切り分けることができます。
1. プログラム構造の確認
実行対象の UdonProgram を Dump して構造を確認します。
using HoshinoLabs.UdonEmu.Udon;
// プログラムの構造を JSON で出力
var programJson = udonProgram.Dump();
Debug.Log(programJson);
参照: Dump
3. 最小再現コードの作成
問題を最小限に再現できるコードを作成します:
- イベント1つのみ
- 変数は最小限
- 外部依存を排除
4. Issue 報告
最小再現コードができたら、GitHub の Issues で報告してください:
- UdonEmu のバージョン
- Unity / VRChat SDK のバージョン
- 最小再現コード
- 期待される動作と実際の動作