Troubleshooting Xbox Services network traffic for PC games

If your GDK game is setup to use Xbox Services but doesn't appear to be interacting with Xbox Services, examining the network traffic generated by your game can help determine where the problem is occuring.

Using Fiddler to examine network trafic

In order see the network traffic from your game to xboxlive.com and the responses from xboxlive.com you'll need to install Fiddler.

Expected network traffic

Once you have Fiddler installed you can compare the network traffic for your game to the expected network traffic for the features of Xbox Services.

Expected network traffic for sign in

If your game has successfully signed in a user you should see a packet to userpresence.xboxlive.com that looks similar to this:
POST https://userpresence.xboxlive.com/users/xuid(2814616665093727)/devices/current/titles/current HTTP/1.1
where xuid(XXXXXX) is the Xbox User ID of your signed in test account.
If you don't see this packet try the following:

  • Verify the values you set for your project (in microsoftgame.config or in the IDE of your engine such as UE if you are using an engine) match the values for your project in Partner center.
  • Verify your computer is set to the sandbox you specified for your project in Partner center. You can check the current sandbox on your computer by opening the GDK command prompt and running XBLPCSandbox.exe If the sandbox doesn't match, you can set it in the same GDK command prompt by running XBLPCSandbox.exe [sandbox name], for example:
    XBLPCSandbox.exe XDKS.1
  • Make sure your test account is signed in. An easy way to do this is to open the Xbox App and see if your test account is shown.

Expected network traffic for querying and setting achievements

If your game has successfully requested information on the status of achievements for your test account, you should see a packet to achievements.xboxlive.com that looks similar to this:
GET https://achievements.xboxlive.com/users/xuid(2814616665093727)/achievements?titleId=1794603332&orderBy=title HTTP/1.1

If the request was successful, the packet will have a response listing the current status of achievements for the test user for your game.

If your game has successfully updated an achievement for your test account, you should see a packet to achievements.xboxlive.com that looks similar to this:

POST https://achievements.xboxlive.com/users/xuid(2814616665093727)/achievements/00000000-0000-0000-0000-00006af77944/update HTTP/1.1
...
{"action":"progressUpdate","serviceConfigId":"00000000-0000-0000-0000-00006af77944","titleId":1794603332,"userId":"2814616665093727","achievements":[{"id":"1","percentComplete":100}]}

If you don't see these packets or you don't get the expected response:

  • Make sure your test account is signed in. An easy way to do this is to open the Xbox App and see if your test account is shown.
  • Verify your achievements are published to your sandbox in Partner Center.
  • If you are using an engine such as UE make sure any engine specific config files exist and have the correct values. For example, in UE make sure WinGDKEngine.ini and Achievements.json exist and have values as specified in Setting Unreal to use the GDK online subsystem with title-managed achievements and event-based stats.

Expected network traffic for Cloud Saves

Cloud Save calls don't necessarily generate network trafic immediately and instead cause the gamingservices process to send packets to titlestorage.xboxlive.com that look similar to this:

PUT https://titlestorage.xboxlive.com/connectedstorage/users/xuid(2814616665093727)/scids/00000000-0000-0000-0000-00006AF77944/lock HTTP/1.1

In order to see the network traffic from the gamingservices process in Fiddler, you'll need to redirect winhttp to Fiddler using the following command in a command shell with administrator privileges:

netsh winhttp set proxy localhost:8888

To clear the redirect, use the following command:

netsh winhttp reset proxy