public void Write(Stream stream)
        {
            // Game length
            stream.WriteInt(LengthInSeconds);

            // Game version, 8 bytes, ASCII
            stream.WriteString(GameVersion, 8, Encoding.ASCII);

            // Date and time, 8 bytes
            stream.WriteLong(DateAndTime.ToBinary());
            // SawCompletion, 1 byte
            stream.WriteBool(SawCompletion);
            // Number of players, 1 byte
            stream.WriteByte(Convert.ToByte(GetPlayerCount()));
            // Average FPS, 4 bytes
            stream.WriteInt(AverageFPS);
            // Map name, 128 bytes (64 chars), Unicode
            stream.WriteString(MapName, 128);
            // Game mode, 64 bytes (32 chars), Unicode
            stream.WriteString(GameMode, 64);
            // Unique game ID, 4 bytes
            stream.WriteInt(GameID);
            // Whether game options were valid for earning a star, 1 byte
            stream.WriteBool(IsValidForStar);

            // Write player info
            for (int i = 0; i < GetPlayerCount(); i++)
            {
                PlayerStatistics ps = GetPlayer(i);
                ps.Write(stream);
            }
        }