예제 #1
0
 public Player(string customId, PlayFabApiSettings settings)
 {
     this.customId = customId;
     httpClient    = new HttpClient();
     context       = new PlayFabAuthenticationContext();
     clientApi     = new PlayFabClientInstanceAPI(settings, context);
     mpApi         = new PlayFabMultiplayerInstanceAPI(settings, context);
 }
예제 #2
0
        public override void ClassSetUp()
        {
            clientApi = new PlayFabClientInstanceAPI();
            authApi   = new PlayFabAuthenticationInstanceAPI(clientApi.authenticationContext);
            dataApi   = new PlayFabDataInstanceAPI(clientApi.authenticationContext);

            PlayFabSettings.staticPlayer.ForgetAllCredentials();
        }
        public override void ClassSetUp()
        {
            client1 = new PlayFabClientInstanceAPI(player1);
            client2 = new PlayFabClientInstanceAPI(player2);
            auth1   = new PlayFabAuthenticationInstanceAPI(player1);
            auth2   = new PlayFabAuthenticationInstanceAPI(player2);

            PlayFabSettings.staticPlayer.ForgetAllCredentials();
        }
예제 #4
0
        private static async Task Run(string titleId, string playerId, bool chinaVer, bool listQosForTitle, bool verbose)
        {
            PlayFabApiSettings settings = new PlayFabApiSettings()
            {
                TitleId = titleId
            };
            PlayFabClientInstanceAPI clientApi = new PlayFabClientInstanceAPI(settings);

            // Login
            var loginRequest = new LoginWithCustomIDRequest()
            {
                CustomId      = playerId,
                CreateAccount = true
            };
            PlayFabResult <LoginResult> login = await clientApi.LoginWithCustomIDAsync(loginRequest);

            if (login.Error != null)
            {
                Console.WriteLine(login.Error.ErrorMessage);
                throw new Exception($"Login failed with HttpStatus={login.Error.HttpStatus}");
            }
            Console.WriteLine($"Logged in player {login.Result.PlayFabId} (CustomId={playerId})");
            Console.WriteLine();

            // Measure QoS
            Stopwatch sw = Stopwatch.StartNew();

            PlayFabSDKWrapper.QoS.PlayFabQosApi qosApi    = new PlayFabSDKWrapper.QoS.PlayFabQosApi(settings, clientApi.authenticationContext);
            PlayFabSDKWrapper.QoS.QosResult     qosResult = await qosApi.GetQosResultAsync(250, degreeOfParallelism : 4, pingsPerRegion : 10, listQosForTitle : listQosForTitle, chinaVer : chinaVer);

            if (qosResult.ErrorCode != 0)
            {
                Console.WriteLine(qosResult.ErrorMessage);
                throw new Exception($"QoS ping failed with ErrorCode={qosResult.ErrorCode}");
            }

            Console.WriteLine($"Pinged QoS servers in {sw.ElapsedMilliseconds}ms with results:");

            if (verbose)
            {
                string resultsStr = JsonConvert.SerializeObject(qosResult.RegionResults, Formatting.Indented);
                Console.WriteLine(resultsStr);
            }

            int timeouts = qosResult.RegionResults.Sum(x => x.NumTimeouts);

            Console.WriteLine(string.Join(Environment.NewLine,
                                          qosResult.RegionResults.Select(x => $"{x.Region} - {x.LatencyMs}ms")));

            Console.WriteLine($"NumTimeouts={timeouts}");
            Console.WriteLine();

            Console.ReadKey();
        }
        public override void ClassSetUp()
        {
            titleData = TestTitleDataLoader.LoadTestTitleData();
            PlayFabSettings.staticSettings.TitleId = titleData.titleId;

            client1 = new PlayFabClientInstanceAPI(player1);
            client2 = new PlayFabClientInstanceAPI(player2);
            auth1   = new PlayFabAuthenticationInstanceAPI(player1);
            auth2   = new PlayFabAuthenticationInstanceAPI(player2);

            PlayFabSettings.staticPlayer.ForgetAllCredentials();
        }
        public override void SetUp(UUnitTestContext testContext)
        {
            PlayFabSettings.staticSettings.ConnectionString = testTitleData.connectionString;

            authApi   = new PlayFabAuthenticationInstanceAPI(PlayFabSettings.staticSettings, PlayFabSettings.staticPlayer);
            clientApi = new PlayFabClientInstanceAPI(PlayFabSettings.staticSettings, PlayFabSettings.staticPlayer);
            dataApi   = new PlayFabDataInstanceAPI(PlayFabSettings.staticSettings, PlayFabSettings.staticPlayer);

            maxRetry = 1;
            if (!TITLE_INFO_SET)
            {
                testContext.Skip(); // We cannot do client tests if the titleId is not given
            }
        }
예제 #7
0
        private static async Task Run(string titleId, string playerId, string buildId, bool verbose)
        {
            PlayFabApiSettings settings = new PlayFabApiSettings()
            {
                TitleId = titleId
            };
            PlayFabClientInstanceAPI clientApi = new PlayFabClientInstanceAPI(settings);

            // Login
            var loginRequest = new LoginWithCustomIDRequest()
            {
                CustomId      = playerId,
                CreateAccount = true
            };
            PlayFabResult <LoginResult> login = await clientApi.LoginWithCustomIDAsync(loginRequest);

            if (login.Error != null)
            {
                Console.WriteLine(login.Error.ErrorMessage);
                throw new Exception($"Login failed with HttpStatus={login.Error.HttpStatus}");
            }
            Console.WriteLine($"Logged in player {login.Result.PlayFabId} (CustomId={playerId})");
            Console.WriteLine();

            // Measure QoS
            Stopwatch     sw        = Stopwatch.StartNew();
            PlayFabQosApi qosApi    = new PlayFabQosApi(settings, clientApi.authenticationContext);
            QosResult     qosResult = await qosApi.GetQosResultAsync(250, degreeOfParallelism : 4, pingsPerRegion : 10);

            if (qosResult.ErrorCode != 0)
            {
                Console.WriteLine(qosResult.ErrorMessage);
                throw new Exception($"QoS ping failed with ErrorCode={qosResult.ErrorCode}");
            }

            Console.WriteLine($"Pinged QoS servers in {sw.ElapsedMilliseconds}ms with results:");

            if (verbose)
            {
                string resultsStr = JsonConvert.SerializeObject(qosResult.RegionResults, Formatting.Indented);
                Console.WriteLine(resultsStr);
            }

            int timeouts = qosResult.RegionResults.Sum(x => x.NumTimeouts);

            Console.WriteLine(string.Join(Environment.NewLine,
                                          qosResult.RegionResults.Select(x => $"{x.Region} - {x.LatencyMs}ms")));

            Console.WriteLine($"NumTimeouts={timeouts}");
            Console.WriteLine();

            // Allocate a server
            string        sessionId        = Guid.NewGuid().ToString();
            List <string> preferredRegions = qosResult.RegionResults
                                             .Where(x => x.ErrorCode == (int)QosErrorCode.Success)
                                             .Select(x => x.Region).ToList();

            PlayFabMultiplayerInstanceAPI mpApi = new PlayFabMultiplayerInstanceAPI(settings, clientApi.authenticationContext);
            PlayFabResult <RequestMultiplayerServerResponse> server =
                await mpApi.RequestMultiplayerServerAsync(new RequestMultiplayerServerRequest()
            {
                BuildId          = buildId,
                PreferredRegions = preferredRegions,
                SessionId        = sessionId
            }
                                                          );

            if (server.Error != null)
            {
                Console.WriteLine(server.Error.ErrorMessage);
                throw new Exception($"Allocation failed with HttpStatus={server.Error.HttpStatus}");
            }

            string serverLoc = $"{server.Result.IPV4Address}:{server.Result.Ports[0].Num}";

            Console.WriteLine($"Allocated server {serverLoc}");

            // Issue Http request against the server
            using (HttpResponseMessage getResult = await HttpClient.GetAsync("http://" + serverLoc))
            {
                getResult.EnsureSuccessStatusCode();

                Console.WriteLine("Received response:");
                string responseStr = await getResult.Content.ReadAsStringAsync();

                Console.WriteLine(responseStr);
                Console.WriteLine();
            }
        }