This protocol is the old version of the Ranking protocol. It was rewritten on NEX 3.0.0.
All methods include a Sint16
on the response, possibly being used as a result code but this isn’t certain. A method will always give the same value on this field, but this value may be different between methods.
Scores are stored as a List<Uint32>
for assigning multiple scores to a RankingData. All scores must contain 2 elements, even if the game doesn’t use the second value.
In NEX 1, the category is represented as a List<Uint16>
, but the server will only accept having a single value on the list.
The common data is used in games to display user information on the ranking. Its value is game-specific on NEX 2, but on NEX 1 this must be an always-allocated 0x14-byte buffer which stores the player’s name in UTF-16. If a user doesn’t have common data or it has been deleted, any methods that query it will give an empty buffer, still allocated on NEX 1.
In some cases, when using a unique ID that doesn’t exist on a method that requires it, the server will give error 0x00670004
.
Extended Protocols
The following games have additional methods in the legacy ranking protocol:
Methods
(1) UploadScore
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
List<Uint32> | Scores |
Uint8 | Unknown (1) |
Uint32 | Unknown (2) |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(2) UploadScores
Request
Response
Type | Description |
---|
Sint16 | Result code (50) |
(3) DeleteScore
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(4) DeleteAllScore
Request
Type | Description |
---|
Uint32 | Unique ID |
Response
Type | Description |
---|
Sint16 | Result code (100) |
(5) UploadCommonData
Request
Type | Description |
---|
Uint32 | Unique ID |
Buffer | Common data |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(6) DeleteCommonData
Request
Type | Description |
---|
Uint32 | Unique ID |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(7) UnknownMethod0x7
This method requires ownership of the unique ID, and having scores in the given category. In NEX 1, the server will return Ranking::RegistrationError
if the user doesn’t have scores in the given category. In NEX 2, Ranking::NotFound
is returned instead.
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(8) UnknownMethod0x8
This method requires ownership of the unique ID.
Request
Type | Description |
---|
Uint32 | Unique ID |
Response
Type | Description |
---|
Sint16 | Result code (100) |
(9) UnknownMethod0x9
Request
Type | Description |
---|
Uint32 | Unknown (1) |
Uint32 | Unknown (2) |
List<Uint32> | Unknown (3) |
List<Uint8> | Unknown (4) |
Response
The response format of this method is unknown.
(10) GetTopScore
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Response
Type | Description |
---|
Sint16 | Result code (20) |
List<Uint32> | Scores |
(11) GetCommonData
Request
Type | Description |
---|
Uint32 | Unique ID |
Response
Type | Description |
---|
Sint16 | Result code (20) |
Buffer | Common data |
(12) UnknownMethod0xC
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Response
Type | Description |
---|
Sint16 | Result code (20) |
Uint8 | Unknown |
(13) UnknownMethod0xD
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Uint8 | Unknown (1) |
Uint8 | Unknown (2) |
Response
Type | Description |
---|
Sint16 | Result code (20) |
Uint32 | Unknown |
(14) UnknownMethod0xE
Request
Type | Description |
---|
Uint8 | Ranking mode |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Uint8 | Score index to order by |
Uint8 | 0: Lowest score, 1: Highest score |
Uint8 | Rank calculation |
Uint8 | Unknown (1) |
Uint8 | Unknown (2) |
Uint8 | Unknown (3) |
Uint32 | Unknown (4) |
Uint32 | Offset |
Uint8 | Length |
Response
(15) UnknownMethod0xF
Request
Type | Description |
---|
Uint32 | Unique ID |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Uint8 | Score index to sort by |
Uint8 | 0: Lowest score, 1: Highest score |
Uint8 | Rank calculation |
Uint8 | Unknown (1) |
Uint8 | Unknown (2) |
Uint8 | Unknown (3) |
Uint32 | Unknown (4) |
Uint8 | Length |
Response
(16) GetTotal
Request
Type | Description |
---|
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
Uint8 | Unknown (1) |
Uint8 | Unknown (2) |
Uint8 | Unknown (3) |
Uint32 | Unknown (4) |
Response
Type | Description |
---|
Sint16 | Result code (30) |
Uint32 | Total count |
(17) UploadScoreWithLimit
It is unknown how the limit affects the score.
Request
Type | Description |
---|
Uint32 | Unique ID |
Uint32 | Category |
List<Uint32> | Scores |
Uint8 | Unknown (1) |
Uint32 | Unknown (2) |
Uint16 | Limit |
Response
Type | Description |
---|
Sint16 | Result code (50) |
(18) UploadScoresWithLimit
Request
Response
Type | Description |
---|
Sint16 | Result code (50) |
(19) UnknownMethod0x13
Request
Type | Description |
---|
Uint32 | Unknown (1) |
Uint32 | Unknown (2) |
List<Uint32> | Unknown (3) |
List<Uint8> | Unknown (4) |
Response
The response format of this method is unknown.
Types
Type | Description |
---|
Uint32 | Unique ID |
PID | PID |
Uint32 | Order |
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
List<Uint32> | Scores |
Uint8 | Unknown (1) |
Uint32 | Unknown (2) |
Buffer | Common data |
Type | Description |
---|
List<Uint16> (NEX 1) or Uint32 (NEX 2) | Category |
List<Uint32> | Scores |
Uint8 | Unknown (1) |
Uint32 | Unknown (2) |
RankingScoreWithLimit (Structure)
Type | Description |
---|
Uint32 | Category |
List<Uint32> | Scores |
Uint8 | Unknown (1) |
Uint32 | Unknown (2) |
Uint16 | Limit |