Developer testing
Use this checklist when changing TSMP runtime code, adding a network behaviour, or adding a codec.
Testing should cover two things separately:
- Unity import and UdonSharp compile health.
- Runtime frame behaviour through a real texture path.
Static checks
Run Unity C# builds where project files are available:
dotnet build .\K13A.TSMP.Core.csproj --no-restore
dotnet build .\K13A.TSMP.Core.Editor.csproj --no-restore
These checks do not replace Unity import or UdonSharp compile, but they catch many C# reference issues early.
Unity checks
- Unity imports without missing scripts.
- UdonSharp compile succeeds.
TSMPSetupcan refresh codecs.Apply Setupassigns bindings.- Sample prefab references remain valid.
- Encoder and decoder inspectors show expected diagnostics.
- Luma4 appears in the Codec tab.
Runtime smoke test
- Place
TSMPController.prefab. - Add
TSMPNetworkGameObjectToggle. - Apply setup.
- Confirm local interact toggles immediately.
- Confirm decoded RPC toggles after loopback delay.
- Add
TSMPNetworkTransformSync. - Confirm payload bytes and message count are non-zero.
- Confirm decoder applies values.
This test proves the minimal end-to-end path before high-bandwidth pose data is introduced.
Protocol tests
- Valid frame header passes CRC validation.
- Mutated header byte fails CRC validation.
- Empty
VariableStatemessages are not counted. - RPC-only frames are encoded.
- Payload copy/FEC references are not reintroduced.
- Payload capacity boundaries reject oversized frames.
Codec tests
- Header region decodes correctly.
- Payload capacity matches actual writable data.
- Payload start row matches decoder shader expectations.
- Codec option bytes survive the header.
- Unused output area is cleared or ignored.
- Decode works after texture transport through the target capture path.
Regression checklist
Before releasing, test:
- Core plus Luma4 default install.
- Editor-time encoding.
- Unity Play mode encoding and decoding.
- Uploaded VRChat runtime.
- OBS/Spout loopback if the release changes transport, codec, or shader behaviour.