GDScript int is i64 — when randi() returns a value with bit 31 set, left-shifting by 32 sets bit 63, producing a negative i64. MessagePack encodes this as a negative integer, which Rust rmp_serde rejects when deserializing as u64, causing ~50% startup failure rate. Fix: mask bit 31 before shifting in new_game() to cap entropy at 63 bits. Also mask the sign bit in _read_seed_file() to handle save files written before this fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>