private dynamic GetPlayer(int id, ArkPlayer player = null)
        {
            var result = (dynamic)_players.GetOrCreate(id, () => {
                dynamic o       = new ExpandoObject();
                var n           = _playerNext++;
                o.Id            = 10000000 + n;
                o.Name          = GetPlayerName(id);
                o.CharacterName = GetCharacterName(id);
                o.SteamId       = (10000000000000000 + n).ToString();

                return((ExpandoObject)o);
            });

            return(result);
        }
        public void Do(ArkPlayer i)
        {
            var anon = GetPlayer(i.Id, i);

            i.Id            = anon.Id;
            i.Name          = anon.Name;
            i.CharacterName = anon.CharacterName;

            if (i.TribeId.HasValue)
            {
                var tribe = GetTribe(i.TribeId.Value);
                i.TribeId = tribe.Id;
            }
            i.SteamId             = anon.SteamId;
            i.SavedNetworkAddress = anon.SteamId;
        }