Udon Rules (Poppin' Jump)
- Virtual Market 2021 uses SDK3 and Udon. Since Udon has a wide range of capabilities, it is possible to easily cause a fatal defect in the instance, so we will impose the following restrictions in addition to the submission rules.
- In order to reduce the processing load of Udon, the operation of Udon in the world is controlled by Udon prepared by the organizers. See
D. Udon control rules in the world
for more information. - Please note that if space not compliant with the regulations is submitted, we will take measures such as requesting resubmission or not placing it.
- This policy may be revised regardless of whether it is outside the submission period or during the period.
A. Submission rules
- Use UdonSharp when creating Udon.
- Udon created by UdonNodeGraph and other Udon assemblies cannot be used (except for prefabs distributed by the organizers).
- Please use the version of UdonSharp specified by the organizers. The specified version can be imported from VketTools.
- Include the source script file (extension .cs) in the submission folder.
- The script file needs to be put it in the
Assets / [Exhibitor ID number name] / UdonScripts
folder created by VketTools.
- The script file needs to be put it in the
- Include the SerializedUdonProgramAsset automatically generated on Udon creation in the above folder.
- The organizer is planning to prepare prefabs that can switch the Active of the object and operate the Animator without writing a code. You may choose to use it.
B. Udon Behavior Regulations
- Up to 20 UdonBehaviour components per space.
- Please set Synchronization Method to be Manual.
- Please disable Allow Collision Ownership Transfer if the object includes a collider.
- When using the UdonBehaviour component other than the prefabs distributed by the organizer, Please attach the component distributed by the organizer (hereinafter referred to as VketUdonControl component) to the same object.
C. Script rules
- Up to 10 Sync variables (variables with [UdonSynced]) can be used per a space.
- You may only use following types as Sync variables. You may not use array or string types.
- bool, byte, sbyte, char, double, float, int, uint, long, ulong, short, short
- Please make sure to update the Sync variables such as running RequestSerialization function only in response to a player’s action.Please avoid such an implementation that updates the Sync variable every frame.
- You may not use continuous synchronization by the Continous setting.
- All classes should belong to the namespace below.
Vket2021.Circle [Exhibitor ID]
- Please replace
[Exhibitor ID]
with a number. Example:Vket2021.Circle9999
- It is allowed to add namespace after
Exhibitor ID
. Example:Vket2021.Circle9999.Example
- The following variables, functions and callbacks cannot be used
- Disabled variables
- All variables of RenderSettings class
- Prohibited function
- UdonSharpBehaviour.VRCInstantiate
- GameObject.Find
- Object.Destroy
- Object.DestroyImmediate
- Prohibited callback
- Start
- Update
- LateUpdate
- FixedUpdate
- PostLateUpdate
- OnTriggerStay
- OnCollisionStay
- OnAnimatorMove
- OnRenderObject
- OnWillRenderObject
- OnPlayerJoined
- OnPlayerLeft
- InputJump
- InputUse
- InputGrab
- InputDrop
- InputMoveHorizontal
- InputMoveVertical
- InputLookHorizontal
- InputLookVertical
- OnPlayerRespawn
- Disabled variables
- Below #define directive may not be used.
- #if UNITY_EDITOR
D. Udon control rules in the world
- The operation of the submitted Udon is partially controlled by the Udon (hereinafter referred to as VketUdonManager) prepared by the organizers.
- The Udon update range for the space is ± 10m in the X and Z direction and 12m in the Y direction (width 20m x depth 20m x height 12m) from the origin of the space. Based on that, VketUdonManager will send a callback to the exhibitor Udon. (See table) The callback is sent by UdonBehaviour.SendCustomEvent. Udon update range is subject to change depending on the world.
- You can receive the callback from VketUdonManager by following the steps below.
- Implement the functions in the table below in the script. (Access modifier public, no arguments / return value)
- Check the callback name you want to receive in the VketUdonControl component.
Function | Call timing |
---|---|
void _VketStart() | 3 seconds after the local player joins the world, with some frames of discrepancy depending on the space placement |
void _VketUpdate() | When updating Update (when the local player is within the Udon update range) |
void _VketFixedUpdate() | When updating FixedUpdate (when the local player is within the Udon update range) |
void _VketLateUpdate() | When updating LateUpdate (when the local player is within the Udon update range) |
void _VketPostLateUpdate() | When updating PostLateUpdate (when the local player is within the Udon update range) |
void _VketOnBoothEnter() | When a local player enters the Udon update range |
void _VketOnBoothExit() | When a local player leaves the Udon update range |
E. Gimmick restrictions
- We will restrict the gimmicks that take the following actions in consideration of the visitor experience or the influence on other exhibitors.
- The act of moving an object out of space is prohibited.
- When you use mechanisms that follow the player, script it in such a way that it does not follow the player outside the space.
- This is not the case if the VRC Pickup component causes the player to pick up and bring an object out of space (it is prohibited to have the pickup follow the object).
- Changes to player settings (Walk Speed, etc.) are only allowed if the player is in space.
- Player teleportation is only allowed if the player is in the space and is moved inside the space.
- If you change the player's Velocity, make sure it returns to normal when the player goes out of space.
- It is prohibited to configure Udon so that processing always occurs outside the Udon update range in the
D. Udon control rules in the world
. - Any act that interferes with objects other than in your own space (other exhibitor spaces, world) is prohibited.