// RPC methods
        // These are similar to those in IGameServerStub but tailored to RPC connections.

        public async Task<JoinResult> JoinAsync(GameClientInfo clientInfo, [RpcCaller]RpcConnection caller)
        {
            // Create a proxy that forwards server-calls to the client via RPC
            var clientStub = new ServerSideClientProxy(clientInfo, caller);
            var joinResult = await _gameServer.JoinAsync(clientInfo, clientStub);

            if (joinResult.IsSuccessful)
                _players.Add(caller.Id, clientInfo);

            return joinResult;
        }
 public NetGameClient(GameClientInfo playerInfo) : base(playerInfo)
 {
 }
 public ServerSideClientProxy(GameClientInfo clientInfo, RpcConnection connection)
 {
     PlayerInfo = clientInfo;
     _connection = connection;
 }
 public LocalGameClient(GameClientInfo playerInfo) : base(playerInfo)
 {
 }