internal bool ProcessGameData(string data, out string resp)
        {
            resp = "OK";
            string[] chunk = GameDataSplitter.Split(data);
            if (chunk.Length > 1)
            {
                string command = chunk[chunk.Length - 1];
                if (command == "READ_KEY")
                {
                    ushort playerid = ushort.Parse(chunk[0]);
                    GDP    gdp      = MakePacket(GDPCommand.READ_KEY, playerid, "");
                    AddPacket(playerid, gdp);
                    gdp = WaitForResponse(playerid);
                    if (gdp.Command == 14)
                    {
                        resp = Encoding.UTF8.GetString(gdp.Data);
                    }
                    else
                    {
                        resp = "000";
                    }
                    return(true);
                }


                else if (command == "STREAM_P")
                {
                    ushort playerid = ushort.Parse(chunk[0]);

                    GDP gdp = MakePacket(GDPCommand.PLAY_STREAM, playerid, chunk[1] + ";" + Streamer.GetVidTime(ushort.Parse(chunk[1])).ToString());
                    AddPacket(playerid, gdp);

                    return(true);
                }
                else if (command == "STREAM_B")
                {
                    ushort playerid = ushort.Parse(chunk[0]);
                    // Start the stream from server
                    Streamer.StreamVID(ushort.Parse(chunk[0]));
                    return(true);
                }
                else if (command == "LOGIN")
                {
                    ushort playerid = ushort.Parse(chunk[0]);
                    string username = chunk[1];
                    string AT       = GenerateAccessToken();
                    AddToken(playerid, AT);
                    AddPlayer(playerid, username);
                    CreatePacketStore(playerid);
                    return(true);
                }
                else if (command == "LOGOUT")
                {
                    ushort playerid = ushort.Parse(chunk[0]);
                    if (PlayerTable.ContainsKey(playerid))
                    {
                        PlayerTable.Remove(playerid);
                    }

                    if (AccessTok.ContainsKey(playerid))
                    {
                        AccessTok.Remove(playerid);
                    }

                    if (PacketStore.ContainsKey(playerid))
                    {
                        PacketStore.Remove(playerid);
                    }
                    return(true);
                }
                else if (command == "SAY_TTS")
                {
                    ushort playerid = ushort.Parse(chunk[0]);

                    GDP gdp = MakePacket(GDPCommand.PLAY_VOICE, playerid, chunk[1]);
                    AddPacket(playerid, gdp);
                    return(true);
                }
                else if (command == "STOP_TTS")
                {
                    ushort playerid = ushort.Parse(chunk[0]);

                    GDP gdp = MakePacket(GDPCommand.STOP_VOICE, playerid, "");
                    AddPacket(playerid, gdp);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }