Skip to content

UdonSharp Ports

TL;DR: Five VRChat UdonSharp community packages ported to CVR WASM, each with source + notes on what survived the translation and what had to change. If you’re coming from UdonSharp, start with UdonSharp ↔ CVR WASM Mapping for the API-level reference, then read these for how the patterns look in practice.

If you’re looking for quick pattern conversions rather than whole packages, see UdonSharp snippet ports — six short VRChat docs snippets (spinning cube, teleport, get players, cross-behaviour comms, …) side-by-side with their CVR WASM versions.

PackageCore mechanicPorts cleanly?
AAChairChair that auto-fits the avatarPartial — station removed, bone math replaced with height
OpenFlightWinged flight with flap detectionCore only — flap flight depends on hand tracking
HnFClimbingGrip-to-climb wallsPartial — hand transform approximated with viewpoint
PlayerPickerPick up and move other playersRewired — CVR routes this via explicit messages
UdonChatIn-world chat with keyboardController only — keyboard UI left as an exercise

What doesn’t translate, regardless of package

Section titled “What doesn’t translate, regardless of package”

These Udon concepts have no direct CVR WASM equivalent, so any package that leans on them needs surgery:

  • VRChat stations — no CVR WASM station API. Use CCK’s seat components wired by UnityEvent.
  • Hand transforms / tracking dataVRCPlayerApi.GetTrackingData(LeftHand|RightHand) is not exposed. Fall back to the head viewpoint from Player.GetViewPoint(), or drive motion from CVRInput axes.
  • Bone positionsVRCPlayerApi.GetBonePosition(HumanBodyBones.X) is not exposed. Use scalar Player.GetCurrentHeight() or skip the feature.
  • UdonSynced fields — all sync in WASM is explicit. Replace with Networking.SendMessage + OnReceiveMessage.
  • OnDeserialization / RequestSerialization — not a thing in WASM. Re-broadcast on state change.
  • VRChat whitelists / download helpers — CVR uses world permissions (WebRequest, UdpConnection) with a different permission surface.

See UdonSharp ↔ CVR WASM Mapping for the full matrix.

All port sources are served under /assets/examples/ports/<package>/. Drop the relevant .cs files into your CVR WASM Unity project’s Assets/ folder and wire the GameObject fields the page describes.