d3ef76324fdb777147c96466bd7807c5e9fcc7eb
LastPlayTime and MissionChangeTime were typed as DateTime, which STJ serialised as "0001-01-01T00:00:00.0000000Z" for a fresh viewer (DateTime.MinValue). Prod's wire shape is "yyyy-MM-dd HH:mm:ss" (no T, no Z, no fractional seconds) when present and null when absent — verified against data_dumps/traffic_prod_tutorial.ndjson. The .NET default format has a real chance of crashing the client's DateTime.Parse path on any code that reads either field, and the fields are presence-sensitive (NetworkTask-family Keys.Contains followed by ToDateTime), so emitting the .NET default reaches the client as a stale-but-present value. Switching the properties to string? + FormatProdDateTime helper: - non-default DateTime -> "yyyy-MM-dd HH:mm:ss" - DateTime.MinValue -> null (omitted from wire via global WhenWritingNull policy in Program.cs) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
The SV Simulator server code, including the DCG Engine, SVSim content, and an entrypoint for the official game client.
Languages
C#
100%