Striven
2025-11-11 abbcd30c0ad8e15440c1c99b3369df29ba3bcb20
Add SessionProtocol::CreateSession method
2 files added
1 files modified
79 ■■■■■ changed files
00_packet_dumps/C2S-SessionProtocol__CreateSession_V1 patch | view | raw | blame | history
04_rendezvous/01_rmc_protocols/sessionprotocol.md 66 ●●●●● patch | view | raw | blame | history
04_rendezvous/05_rmc_protocol.md 13 ●●●● patch | view | raw | blame | history
00_packet_dumps/C2S-SessionProtocol__CreateSession_V1
Binary files differ
04_rendezvous/01_rmc_protocols/sessionprotocol.md
New file
@@ -0,0 +1,66 @@
# RendezVous: RMC Protocols: SessionProtocol
The session protocol is presumably responsible for managing creating a game session, joining them and leaving them. A session is first created when logging into the game.
## Method: `CreateSession`
Creates a session as the name suggests. Unknown exactly what sessions are used for.
### Request
##### Example
```
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000  0D 00 50 61 72 74 79 53 65 73 73 69 6F 6E 00 10  ..PartySession..
00000010  DD 0B D5 FC 58 74 4D 36 9F C0 09 48 59 95 0D 00  Ý.ÕüXtM6ŸÀ.HY•..
00000020  00 00 00 00 00 00 00 00 63 00 31 30 64 64 30 62  ........c.10dd0b
00000030  64 35 66 63 35 38 37 34 34 64 33 36 39 66 63 30  d5fc58744d369fc0
00000040  30 39 34 38 35 39 39 35 30 64 35 63 35 37 63 35  094859950d5c57c5
00000050  61 32 64 38 66 37 65 33 36 33 66 66 66 66 66 66  a2d8f7e363ffffff
00000060  66 66 66 66 66 66 66 66 66 66 30 30 30 30 30 30  ffffffffff000000
00000070  30 30 30 30 30 30 30 30 30 30 30 31 66 66 66 66  000000000001ffff
00000080  66 66 66 66 66 66 66 66 66 66 66 66 00           ffffffffffff.
```
> [!TIP]
> This is just the request data portion of a full packet. Check out a [full request packet dump](../../00_packet_dumps/C2S-SessionProtocol__CreateSession_V1) for this call.
##### Parsing
| Name                | Description                                                         | Type                                                     |
|---------------------|---------------------------------------------------------------------|----------------------------------------------------------|
| Token               | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_structure.md#structure-string)          |
| Client Version Info | Information about the client version                                | [`ClientVersionInfo`](#client-version-info)              |
| Diagnostic URL      | Unknown.                                                            | [`Station URL`](../03_structure.md#structure-stationurl) |
### Successful Response
> [!NOTE]
> TODO: Example
##### Parsing
> [!NOTE] It is not clear what much of the response for this method is for or does, and is extracted straight from the game disassembly.
| Name      |              |              | Description                              | Type                                            |
|-----------|--------------|--------------|------------------------------------------|-------------------------------------------------|
| Unknown 1 |              |              | Unknown.                                 | `u64`                                           |
| Unknown 2 |              |              | Unknown.                                 | `u32`                                           |
| String 1  |              |              | Unknown.                                 | [`String`](../03_structure.md#structure-string) |
| UUID 1    |              |              | Unknown.                                 | [`UUID`](../03_structure.md#structure-uuid)     |
| Unknown 3 |              |              | Unknown.                                 | `u32`                                           |
|           |              |              |                                          |                                                 |
|           | **Branch 1** |              | If `Unknown 3` is not equal to `0`...    |                                                 |
|           | String 2     |              | Unknown.                                 | [`String`](../03_structure.md#structure-string) |
|           | UUID 2       |              | Unknown.                                 | [`UUID`](../03_structure.md#structure-uuid)     |
|           | ???          |              | There may be some additional bytes here. | Unknown.                                        |
|           | Unknown 4    |              | Unknown.                                 | `u64`                                           |
|           | String 3     |              | Unknown.                                 | [`String`](../03_structure.md#structure-string) |
|           |              |              |                                          |                                                 |
|           | **Branch 2** |              | If `Unknown 3` is equal to `0`...        |                                                 |
|           | Unknown 5    |              | Unknown.                                 | `u32`                                           |
|           |              |              |                                          |                                                 |
|           |              | **Branch 3** | If `Unknown 5` is not equal to `0`...    |                                                 |
|           |              | String 4     | Unknown.                                 | [`String`](../03_structure.md#structure-string) |
|           |              | ???          | There may be some additional bytes here. | Unknown.                                        |
|           |              |              |                                          |                                                 |
|           | Unknown 6    |              | Unknown.                                 | `u32`                                           |
04_rendezvous/05_rmc_protocol.md
@@ -16,12 +16,13 @@
Here are the currently understood RMC protocols implemented in HyperScape. Some appear to be standard to Ubisoft games as a whole, while others appear to be designed specifically for the game.
| Protocol                                                                     | Description                                                       | HyperScape-specific? |
|------------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------|
| [`LoginProtocol`](./01_rmc_protocols/loginprotocol.md)                       | Used for authenticating with an RMC server using a Ubisoft token. | ✖️                   |
| [`CloudServersProtocol`](./01_rmc_protocols/cloudserversprotocol.md)         | Used for listing datacenters for connecting to game servers.      | ✔️                   |
| [`ApexAntitoxicityProtocol`](./01_rmc_protocols/apexantitoxicityprotocol.md) | Currently unknown, presumably for managing bans and mutes.        | ✔️                   |
| ...                                                                          | ...                                                               | ...                  |
| Protocol                                                                     | Description                                                                                      | HyperScape-specific? |
|------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|----------------------|
| [`LoginProtocol`](./01_rmc_protocols/loginprotocol.md)                       | Used for authenticating with an RMC server using a Ubisoft token.                                | ✖️                    |
| [`CloudServersProtocol`](./01_rmc_protocols/cloudserversprotocol.md)         | Used for listing datacenters for connecting to game servers.                                     | ✔️                    |
| [`ApexAntitoxicityProtocol`](./01_rmc_protocols/apexantitoxicityprotocol.md) | Currently unknown, possibly for managing bans and mutes.                                         | ✔️                    |
| [`SessionProtocol`](./01_rmc_protocols/sessionprotocol.md)                   | Presumably for creating, joining and leaving game sessions, but it is unknown what that entails. | ✔️                    |
| ...                                                                          | ...                                                                                              | ...                  |
> [!NOTE]
> This list is far from complete.