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.
Snippets
Section titled “Snippets”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.
The packages
Section titled “The packages”| Package | Core mechanic | Ports cleanly? |
|---|---|---|
| AAChair | Chair that auto-fits the avatar | Partial — station removed, bone math replaced with height |
| OpenFlight | Winged flight with flap detection | Core only — flap flight depends on hand tracking |
| HnFClimbing | Grip-to-climb walls | Partial — hand transform approximated with viewpoint |
| PlayerPicker | Pick up and move other players | Rewired — CVR routes this via explicit messages |
| UdonChat | In-world chat with keyboard | Controller 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 data —
VRCPlayerApi.GetTrackingData(LeftHand|RightHand)is not exposed. Fall back to the head viewpoint fromPlayer.GetViewPoint(), or drive motion fromCVRInputaxes. - Bone positions —
VRCPlayerApi.GetBonePosition(HumanBodyBones.X)is not exposed. Use scalarPlayer.GetCurrentHeight()or skip the feature. UdonSyncedfields — all sync in WASM is explicit. Replace withNetworking.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.
Running the ports
Section titled “Running the ports”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.