Udon規定

  • VketMall ProtoではSDK3及びUdonを使用します。 Udonは出来る事の幅が広い分、容易にインスタンスに致命的な不具合を発生させることが可能なため、入稿ルールに加えて下記の制限を課させていただきます。
  • Udonによる処理負荷を軽減するため、ワールド内のUdonは運営が用意するUdonによって動作が制御されます。詳しい内容に関しては D. ワールド内Udon制御規定 を参照してください。
  • 規定に沿わないアイテムが入稿された場合、再提出を依頼、もしくは配置しない等の処置を行わせて頂きます。予めご了承下さい。
  • この規定は入稿期間外、期間中に関わらず改訂される可能性があります。

A. 入稿規定

  • Udonを作成する際はUdonSharpを使用してください。
  • UdonNodeGraph及びその他のUdonアセンブリによって作成されたUdonは使用できません(運営が配布するprefabsを除く)。
  • 使用するUdonSharpは入稿時の最新版を使用してください。最新版のUdonSharpはVketToolsからインポートすることも出来ます。
  • 出力元のスクリプトファイル(拡張子.cs)を入稿フォルダに含めてください。
    • スクリプトファイルはVketToolsによって作成される Assets/[出展者IDの番号名]/UdonScripts フォルダに入れてください。
    • Udonプログラムアセット(拡張子.asset)は、入稿フォルダ内の上記フォルダ以外の場所に入れてください。

B. UdonBehaviour規定

  • UdonBehaviourコンポーネントはアイテムあたり 5個までとします。
  • 同期変数を使用する場合はSynchronization MethodをManualに設定してください。
  • Allow Collision Ownership Transferは無効にしてください(コライダが含まれる場合)。
  • UdonBehaviourコンポーネントを使用する際は、同オブジェクトに運営が配布するコンポーネント(以下、VketMallUdonControlコンポーネント)をアタッチしてください。
  • D. ワールド内Udon制御規定 における下記のコールバックは、1つのUdonBehaviourのみで、かつ下記コールバックのうちいずれか1つのみ受け取り可能とします。
    • VketUpdate
    • VketFixedUpdate
    • VketLateUpdate

C. スクリプト規定

  • 同期変数([UdonSynced]を付与した変数)はアイテムあたり 10個まで使用できます。
    • 同期変数には下記の型のみ使用できます(配列型やstring型は使用できません)。
      • bool, byte, sbyte, char, double, float, int, uint, long, ulong, short, ushort
    • 同期変数の更新(RequestSerialization関数の実行)はInteractやCollisionなどプレイヤーのアクションによってのみ行われるようにしてください。Update等で、毎フレーム同期変数の更新が行われるような実装はしないでください。
    • Continuous設定による常時同期は使用できません。
  • 全てのクラスは下記namespaceに所属させてください。
    • VketMall.Circle[出展者ID]
    • [出展者ID]は数字で置き換えてください 例: VketMall.Circle9999
    • [出展者ID]の後ろにnamespaceを追加することは許可されています。 例: VketMall.Circle9999.Example
  • 下記の変数、関数、コールバックは使用できません
    • 使用禁止変数
      • Transform transform.root
      • RenderSettingsクラスの変数全て
    • 使用禁止関数
      • UdonSharpBehaviour.VRCInstantiate
      • GameObject.Find
      • Object.Destroy
      • Object.DestroyImmediate
      • VRCPlayerApi.TeleportTo
    • 下記の#defineディレクティブは使用できません。
      • #if UNITY_EDITOR
    • 使用禁止コールバック
      • Update
      • LateUpdate
      • FixedUpdate
      • OnPlayerJoined
      • OnPlayerLeft
      • InputJump
      • InputUse
      • InputGrab
      • InputDrop
      • InputMoveHorizontal
      • InputMoveVertical
      • InputLookHorizontal
      • InputLookVertical
      • OnPlayerRespawn

D. ワールド内Udon制御規定

  • 入稿されたUdonは運営が用意するUdon(以下、VketUdonManager)によって一部動作が制御されます。
  • アイテムが配置されるショップ内全体をアイテムのUdon更新範囲とし、それを基準にVketUdonManagerから出展者のUdonにコールバックを送信します。(表を参照)コールバックはUdonBehaviour.SendCustomEventによって送信されます。
  • VketUdonManagerからのコールバックは下記の手順で受け取ることができます。
    • スクリプトに下記表の関数を実装する。(アクセス修飾子public、引数・返り値無し)
    • VketMallUdonControlコンポーネントにて受け取りたいコールバック名にチェックを入れる。
関数 呼び出しタイミング
void VketUpdate() Update更新時(ローカルプレイヤーがUdon更新範囲内にいる際)
void VketFixedUpdate() FixedUpdate更新時(ローカルプレイヤーがUdon更新範囲内にいる際)
void VketLateUpdate() LateUpdate更新時(ローカルプレイヤーがUdon更新範囲内にいる際)
void VketOnShopEnter() ローカルプレイヤーがUdon更新範囲に入ったとき
void VketOnShopExit() ローカルプレイヤーがUdon更新範囲から出たとき
void VketOnReset() ショップ内のリセットボタンが押下されたときまたは、ショップ内にプレイヤーが一人もいなくなったとき
  • ショップ内のリセットボタンが押下されたとき、または、ショップ内にプレイヤーが一人もいなくなったとき、オブジェクトは位置が初期地点にリセットされます。
  • Pickupオブジェクトはプレイヤーがショップから出た時点で位置が初期位置にリセットされます。
  • 下記コンポーネントは、ローカルプレイヤーがUdon更新範囲から出た時点でDisabledにされます。
    • Camera
    • AudioSource
  • 下記コンポーネントを含むオブジェクトは、ローカルプレイヤーがUdon更新範囲から出た時点で非Activeにされます。
    • Projector

E. ギミック制限規定

  • 来場者体験、または他出展者への影響を鑑みて下記挙動を取るギミックを制限します。
  • アイテムをスペース外に出す行為は、InteractやPickup等プレイヤーの操作によりのみ可能とします。また、VketOnResetコールバックが呼ばれた後は、再度プレイヤーの操作があるまでは必ずスペース内に留まるようにしてください。
  • プレイヤーの設定(WalkSpeed等)の変更・プレイヤーのVelocityの変更は、プレイヤーがアイテムをPickupしているときのみ許可されます。
  • D. ワールド内Udon制御規定 におけるUdon更新範囲外で、常に処理が発生し続けるようなUdonを構成することは禁止です。
  • 自アイテム内以外(他出展者アイテム、ワールド)のオブジェクトに干渉するあらゆる行為は禁止です。