Documenting the protocols, structures and concepts used by Hyperscape.
edit | blame | history | raw
# 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`                                           |