Udon規定(私立Vket学園“電市祭”)
- バーチャルマーケット2021ではSDK3及びUdonを使用します。Udonは出来る事の幅が広い分、容易にインスタンスに致命的な不具合を発生させることが可能なため、入稿ルールに加えて下記の制限を課させていただきます。
- Udonによる処理負荷を軽減するため、ワールド内のUdonは運営が用意するUdonによって動作が制御されます。詳しい内容に関しては
D. ワールド内Udon制御規定
を参照してください。 - 規定に沿わないブースが入稿された場合、再提出を依頼、もしくは配置しない等の処置を行わせて頂きます。予めご了承下さい。
- この規定は入稿期間外、期間中に関わらず改訂される可能性があります。
A. 入稿規定
- Udonを作成する際はUdonSharpを使用してください。
- UdonNodeGraph及びその他のUdonアセンブリによって作成されたUdonは使用できません(運営が配布するprefabsを除く)。
- UdonSharpは運営が指定するバージョンを使用してください。指定バージョンのUdonSharpはVketToolsからインポートすることも出来ます。
- 出力元のスクリプトファイル(拡張子.cs)を入稿フォルダに含めてください。
- スクリプトファイルはVketToolsによって作成される
Assets/[出展者IDの番号名]/UdonScripts
フォルダに入れてください。
- スクリプトファイルはVketToolsによって作成される
- Udon新規作成時に自動生成されるSerializedUdonProgramAssetは必ず入稿フォルダに含めてください。
- 運営より、コードを書かずにオブジェクトのActiveの切替やAnimatorの操作等を行えるprefabを準備予定であり、そちらを使用することもできます。
B. UdonBehaviour規定
- UdonBehaviourコンポーネントは1ブースあたり 10個までとします。
- 同期変数を使用する場合はSynchronization MethodをManualに設定してください。
- Allow Collision Ownership Transferは無効にしてください(コライダが含まれる場合)。
- 運営が配布するprefabs以外でUdonBehaviourコンポーネントを使用する際は、同オブジェクトに運営が配布するコンポーネント(以下、VketUdonControlコンポーネント)をアタッチしてください。
C. スクリプト規定
- 同期変数([UdonSynced]を付与した変数)は1ブースあたり 10個まで使用できます。
- 同期変数には下記の型のみ使用できます(配列型やstring型は使用できません)。
- bool, byte, sbyte, char, double, float, int, uint, long, ulong, short, ushort
- 同期変数の更新(RequestSerialization関数の実行)はInteractやCollisionなどプレイヤーのアクションによってのみ行われるようにしてください。Update等で、毎フレーム同期変数の更新が行われるような実装はしないでください。
- Continuous設定による常時同期は使用できません。
- 同期変数には下記の型のみ使用できます(配列型やstring型は使用できません)。
- 全てのクラスは下記namespaceに所属させてください。
Vket2021.Circle[出展者ID]
[出展者ID]
は数字で置き換えてください 例:Vket2021.Circle9999
[出展者ID]
の後ろにnamespaceを追加することは許可されています。 例:Vket2021.Circle9999.Example
- 下記の変数、関数、コールバックは使用できません
- 使用禁止変数
- RenderSettingsクラスの変数全て
- 使用禁止関数
- UdonSharpBehaviour.VRCInstantiate
- GameObject.Find
- Object.Destroy
- Object.DestroyImmediate
- 使用禁止コールバック
- Start
- Update
- LateUpdate
- FixedUpdate
- PostLateUpdate
- OnTriggerStay
- OnCollisionStay
- OnAnimatorMove
- OnRenderObject
- OnWillRenderObject
- OnPlayerJoined
- OnPlayerLeft
- InputJump
- InputUse
- InputGrab
- InputDrop
- InputMoveHorizontal
- InputMoveVertical
- InputLookHorizontal
- InputLookVertical
- OnPlayerRespawn
- 使用禁止変数
- 下記の#defineディレクティブは使用できません。
- #if UNITY_EDITOR
D. ワールド内Udon制御規定
- 入稿されたUdonは運営が用意するUdon(以下、VketUdonManager)によって一部動作が制御されます。
- ブースの原点からX方向に±1.5m、Z方向に±2m、Y方向に3m(幅3m×奥行4m×高さ3m)をそのブースのUdon更新範囲とし、それを基準にVketUdonManagerから出展者のUdonにコールバックを送信します。(表を参照)コールバックはUdonBehaviour.SendCustomEventによって送信されます。Udon更新範囲はワールドによって変更になる可能性があります。
- VketUdonManagerからのコールバックは下記の手順で受け取ることができます。
- スクリプトに下記表の関数を実装する。(アクセス修飾子public、引数・返り値無し)
- VketUdonControlコンポーネントにて受け取りたいコールバック名にチェックを入れる。
関数 | 呼び出しタイミング |
---|---|
void _VketStart() | ローカルプレイヤーがワールドにJoinしたときから3秒後(ブース配置によって数フレーム前後あり) |
void _VketUpdate() | Update更新時(ローカルプレイヤーがUdon更新範囲内にいる際) |
void _VketFixedUpdate() | FixedUpdate更新時(ローカルプレイヤーがUdon更新範囲内にいる際) |
void _VketLateUpdate() | LateUpdate更新時(ローカルプレイヤーがUdon更新範囲内にいる際) |
void _VketPostLateUpdate() | PostLateUpdate更新時(ローカルプレイヤーがUdon更新範囲内にいる際) |
void _VketOnBoothEnter() | ローカルプレイヤーがUdon更新範囲に入ったとき |
void _VketOnBoothExit() | ローカルプレイヤーがUdon更新範囲から出たとき |
E. ギミック制限規定
- 来場者体験、または他出展者への影響を鑑みて下記挙動を取るギミックを制限します。
- オブジェクトをスペース外に移動させる行為は禁止です。
- プレイヤーに追従する機構はスペース外のプレイヤーには追従しないようスクリプトを組んでください。
- VRC Pickupコンポーネントによって、プレイヤーがオブジェクトをPickupすることでスペース外に出る場合はこれに当たりません(Pickupにオブジェクトを追従させるのは不可)。
- プレイヤーの設定(WalkSpeed等)の変更はプレイヤーがスペース内にいる場合のみ許可されます。
- プレイヤーのテレポートは、プレイヤーがスペース内にいる状態で、かつスペース内に移動させる場合のみ許可されます。
- プレイヤーのVelocityを変更する場合、スペース外に出た時点で正常な値に戻るようにしてください。
D. ワールド内Udon制御規定
におけるUdon更新範囲外で、常に処理が発生し続けるようなUdonを構成することは禁止です。- 自ブース内以外(他出展者ブース、ワールド)のオブジェクトに干渉するあらゆる行為は禁止です。