public byte[] CreateChallengeSnapshot()
        {
            if (this.m_logicGameMode.GetState() != 1)
            {
                throw new Exception("GameMode.createChallengeSnapshot called in invalid logic state.");
            }

            LogicLevel      logicLevel = this.m_logicGameMode.GetLevel();
            LogicJSONObject jsonObject = new LogicJSONObject(64);

            jsonObject.Put("exp_ver", new LogicJSONNumber(logicLevel.GetExperienceVersion()));
            logicLevel.GetGameObjectManagerAt(0).SaveToSnapshot(jsonObject, 6);

            this.m_logicGameMode.GetLevel().GetHomeOwnerAvatar().SaveToDirect(jsonObject);

            ZLibHelper.CompressInZLibFormat(LogicStringUtil.GetBytes(LogicJSONParser.CreateJSONString(jsonObject, 1536)), out byte[] homeJSON);

            return(homeJSON);
        }