Skip to content

Sync Doctor — Changelog

All notable changes to this pack are recorded here.

The format follows Keep a Changelog and the pack follows Semantic Versioning.

The version below must always match the one declared in Editor/AssemblyInfo.cs — that is the version the FOS Hub shows, and the one the Hub compares against the installed Core.


Nothing yet.


First release. Free. Requires FOS Essentials Core 1.1.0.

Audit windowFOS Essentials > FOS Sync Doctor > Audit

  • Synchronised variables with no OnDeserialization, the most common late-joiner bug. A field carrying [FieldChangeCallback] is not reported: that pattern already works.
  • RequestSerialization() called from Start(), which VRChat documents as not reaching players who join later.
  • Manual sync that never calls RequestSerialization(), so nothing is ever sent.
  • RequestSerialization() called with no ownership check nearby, where it silently does nothing for anyone who is not the owner.
  • Continuous sync carrying an array or a string, over the ~200 byte per-behaviour cap.
  • No [UdonBehaviourSyncMode] declared, reported as a note.

Scope mistakes — code written as if it ran on one machine

  • A network event broadcast to every client whose body acts on the local player. The local player is a different one on each machine, so the action hits everybody — the teleport meant for one person that moves the whole instance.
  • OnPlayerTriggerEnter and the other player events used without checking player.isLocal. They fire on every client, for every player entering.
  • SendCustomNetworkEvent targeting a method whose name starts with an underscore, which VRChat refuses to run remotely. The call leaves and nothing happens.

Documentation

  • Every finding carries a Documentation button opening the online guide directly at the section explaining that case.

Reliability

  • Findings are split between certain — read from the compiled types — and probable, deduced from the source text because a method body cannot be inspected otherwise. The window tags the probable ones rather than presenting every finding as a verdict.

Scope

  • The FOS packs and the SDK sample scripts are skipped by default; a toggle includes the FOS packs.
  • Every finding links to its script.
  • Interface translated into English, French, Spanish and German.
  • Editor code only. No component, no prefab, no runtime cost, nothing added to the world. The pack therefore ships without a Runtime assembly or a Prefabs folder.
  • The audit reads scripts, not scenes. A correct behaviour wired to the wrong object is outside what it can see.