Skip to main content

Built-in network components

TSMP includes several TSMPNetworkBehaviour components that cover common VRChat world synchronization cases. They all share networkId, receive interpolation, active-state checks, and setup binding.

Common behaviour

FeatureMeaning
networkIdStable ID used to match sender and receiver components.
receiveInterpolationNone, Discrete, or Continuous received-value handling.
Active stateDisabled components or inactive GameObjects do not participate.
TSMPBeforeEncode()Captures component state before the encoder reads [TransSync] fields.
OnTSMPVariableReceived()Applies decoded state after a frame is received.

Component overview

ComponentWhat it synchronizes
TSMPNetworkTransformSyncTransform position, rotation, scale, compression range, and optional Rigidbody state.
TSMPNetworkHumanoidPoseSyncSelected humanoid bones plus root motion position.
TSMPNetworkBlendShapesSyncSelected blendshape weights for one SkinnedMeshRenderer.
TSMPNetworkVrchatAvatarPoseSyncVRChat player tracking pose for avatar-pool playback.
TSMPNetworkAnimatorSyncAnimator parameters and layer-related state supported by the runtime path.
TSMPNetworkTimelineSyncPlayableDirector timeline time/play state where supported by Udon.
TSMPNetworkGameObjectToggleToggle event through TSMP RPC.
TSMPDebugCanvasText UI for frame counters, bitrate, loss, and header metadata.

Choosing a component

Use built-in components when the data model matches your object. Write a custom TSMPNetworkBehaviour when:

  • You need a different packed byte format.
  • You need to synchronize several fields as one packet.
  • You need a custom receive interpolation policy.
  • You need to run logic from a TSMP RPC.

Binding rule

After adding or removing network components, run Apply Setup. The encoder and decoder do not discover fields every frame in runtime worlds; setup creates explicit binding tables for performance and Udon compatibility.