Documenting the protocols, structures and concepts used by Hyperscape.
Striven
2026-02-20 095e0ecfb26eb0596a8878847fbc1176bf9252dd
Fix links
6 files modified
36 ■■■■ changed files
02_internals_of_hyperscape/01_entrypoint.md 2 ●●● patch | view | raw | blame | history
02_internals_of_hyperscape/02_uplay_r1.md 2 ●●● patch | view | raw | blame | history
02_internals_of_hyperscape/03_login_screen.md 2 ●●● patch | view | raw | blame | history
04_rendezvous/01_rmc_protocols/loginprotocol.md 2 ●●● patch | view | raw | blame | history
04_rendezvous/05_rmc_protocol.md 10 ●●●● patch | view | raw | blame | history
README.md 18 ●●●● patch | view | raw | blame | history
02_internals_of_hyperscape/01_entrypoint.md
@@ -33,7 +33,7 @@
### Launching the Game
Because the game is normally distributed with [BattlEye](https://www.battleye.com/), the following game flags are required to pass into the executable: `-eac_launcher /belaunch -be` in order to disable the anti-cheat in the game.
The game also handles game license checks through [Ubisoft Connect](https://www.ubisoft.com/en-us/ubisoft-connect) (Formerly known as, and in the game files as, 'UPlay'). Check out the [uplay_r1](02_uplay_r1.md) page for more information on how this works and how to bypass this restriction.
The game also handles game license checks through [Ubisoft Connect](https://www.ubisoft.com/en-us/ubisoft-connect) (Formerly known as, and in the game files as, 'UPlay'). Check out the [uplay_r1](02_uplay_r1) page for more information on how this works and how to bypass this restriction.
### Dumping Imports
The game executable is obfuscated with [VMProtect](https://vmpsoft.com/) v3.20-v3.5.0, but critical game functions are not.
02_internals_of_hyperscape/02_uplay_r1.md
@@ -7,5 +7,5 @@
> [!IMPORTANT] For `64-bit` devices, `uplay_r164_loader.dll` is loaded instead, and searches for `uplay_r164.dll`!
## Bypassing UPlay R1
- [Spring](../08_scapegoat/04_using_scapegoat.md) - Scapegoat's own UPlay R1 launcher and plugin loader, specifically for Hyperscape.
- [Spring](../08_scapegoat/04_using_scapegoat) - Scapegoat's own UPlay R1 launcher and plugin loader, specifically for Hyperscape.
- [LumaPlay](https://cs.rin.ru/forum/viewtopic.php?f=29&t=67197)
02_internals_of_hyperscape/03_login_screen.md
@@ -5,7 +5,7 @@
## Logging In
When the any key is pressed, the client begins to make several requests in parallel, but there are some that have since been broken or lost relevance, and thus have acted as blockers in effectively getting past this initial screen.
Firstly, the client attempts to create a session with the UbiServices API, see [Ubisoft Services: Creating a Session](../03_ubisoft_services/04_creating_a_session.md).
Firstly, the client attempts to create a session with the UbiServices API, see [Ubisoft Services: Creating a Session](../03_ubisoft_services/04_creating_a_session).
> [!NOTE]
> TODO: Finish
04_rendezvous/01_rmc_protocols/loginprotocol.md
@@ -3,7 +3,7 @@
The Login Protocol is common among Ubisoft games and is responsible for authenticating users by their [UbiServices ticket](../../03_ubisoft_services/02_accessing_ubiservices.md#getting-a-ticket). Additionally, it provides the server with information about the user's client and game information, and the server can re-direct the client to a more appropriate server.
## Method: `LoginWithToken`
Authenticates with the server using a [UbiServices ticket](../../03_ubisoft_services/02_accessing_ubiservices.md#getting-a-ticket). See [Initial Login Flow](../../03_ubisoft_services/04_initial_login_flow.md) for information on how to obtain one.
Authenticates with the server using a [UbiServices ticket](../../03_ubisoft_services/02_accessing_ubiservices.md#getting-a-ticket). See [Initial Login Flow](../../03_ubisoft_services/04_initial_login_flow) for information on how to obtain one.
### Request
04_rendezvous/05_rmc_protocol.md
@@ -6,7 +6,7 @@
## Official Implementation
As seen in HyperScape, this protocol is done over [RendezVous](03_structure.md) data packets.
As seen in HyperScape, this protocol is done over [RendezVous](03_structure) data packets.
When a request is made, usually in a function going by `<protocol name>Protocol::Call<method name>`, a call context is created and containers in memory for data returned by the server are associated with **return value pointers**, with IDs from `[0, n)`, where n is the number of parameters.
@@ -18,10 +18,10 @@
| 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. | ✔️                    |
| [`LoginProtocol`](01_rmc_protocols/loginprotocol)                       | Used for authenticating with an RMC server using a Ubisoft token.                                | ✖️                    |
| [`CloudServersProtocol`](01_rmc_protocols/cloudserversprotocol)         | Used for listing datacenters for connecting to game servers.                                     | ✔️                    |
| [`ApexAntitoxicityProtocol`](01_rmc_protocols/apexantitoxicityprotocol) | Currently unknown, possibly for managing bans and mutes.                                         | ✔️                    |
| [`SessionProtocol`](01_rmc_protocols/sessionprotocol)                   | Presumably for creating, joining and leaving game sessions, but it is unknown what that entails. | ✔️                    |
| ...                                                                          | ...                                                                                              | ...                  |
> [!NOTE]
README.md
@@ -10,17 +10,17 @@
## Starting Pages
If you're wanting to understand how to install and configure Scapegoat:
- [Scapegoat: Overview](08_scapegoat/01_overview.md)
- [Scapegoat: Installing and Using Scapegoat](08_scapegoat/03_install_and_use_scapegoat.md)
- [Scapegoat: Overview](08_scapegoat/01_overview)
- [Scapegoat: Installing and Using Scapegoat](08_scapegoat/03_install_and_use_scapegoat)
If you're wanting to understand how the game works internally:
- [General Information: Game Versions](01_general_information/01_game_versions.md)
- [Internals of Hyperscape: Entrypoint](02_internals_of_hyperscape/01_entrypoint.md)
- [General Information: Game Versions](01_general_information/01_game_versions)
- [Internals of Hyperscape: Entrypoint](02_internals_of_hyperscape/01_entrypoint)
## Outline
Hyperscape is made up of several components, each of which have been developed by different studios or licensed for different needs:
- [Ubisoft Services: Structure](03_ubisoft_services/03_structure.md)
- [RendezVous: Overview](04_rendezvous/02_overview.md)
- [Storm: Overview](05_storm/01_overview.md)
- [Apex: Overview](06_apex/01_overview.md)
- [AnvilNext: Overview](07_anvilnext/01_overview.md)
- [Ubisoft Services: Structure](03_ubisoft_services/03_structure)
- [RendezVous: Overview](04_rendezvous/02_overview)
- [Storm: Overview](05_storm/01_overview)
- [Apex: Overview](06_apex/01_overview)
- [AnvilNext: Overview](07_anvilnext/01_overview)