Quick answer: Godot 4 C# string.Format using culture-dependent number format causing replication mismatch? German locale uses comma decimals; English uses period - use InvariantCulture for network data.
Replicated floats serialize as '1,5' on German clients; deserialized as '1.5' on English. Parse fails.
Use InvariantCulture
v.ToString(CultureInfo.InvariantCulture)Locale-independent. Network and save data use this universally.
Or use binary serialization
Skip string round-trip; serialize as binary. No locale dependency.
Audit ToString calls
Any data that crosses save or network is suspect. Locale defaults are silent corruption.
“Locales differ. Network data isn't user-facing; use invariant.”
Establish 'invariant for data, localized for display' as project rule. The bug class disappears.