| | |
| | | ### 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. |
| | |
| | | > [!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) |
| | |
| | | ## 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 |
| | |
| | | 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 |
| | | |
| | |
| | | |
| | | ## 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. |
| | | |
| | |
| | | |
| | | | 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] |
| | |
| | | ## 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) |