public async Task JoinAsync(NetGameServerInfo serverInfo)
        {
            var serializer = new DefaultJsonSerializer(typeof(NetGameClient).GetTypeInfo().Assembly, Serialization.JsonSerializationSettings);
            _rpcClient = await RpcClient.ConnectAsync(serverInfo.RemoteAddress, serverInfo.RemotePort, this, serializer);

            JoinResult joinResult = await _rpcClient.Server.JoinAsync(PlayerInfo);
            var serverStub = new ClientSideServerProxy(_rpcClient.Connection);

            if (joinResult.IsSuccessful)
                await InitializeAsync(joinResult.SpawnPosition, serverStub);
            else
                throw new InvalidOperationException("Failed to join game server");
        }
 public NetGameClientViewModel(NetGameServerInfo serverInfo)
 {
     _serverInfo = serverInfo;
 }
 public void ConnectClient()
 {
     var serverInfo = new NetGameServerInfo(ServerIp, Port);
     _frame.Navigate(typeof(GameClientPage), serverInfo);
 }