Skip to content

RallyHere Unreal Integration QuickStart Guide

The intention of this guide is to help integrate the Rally Here Unreal Plugins as quickly as possible, ending with being able to succesfully login to RallyHere in-game via the RallyHere Debug Tool.

Prerequisites

The following are required to be able to use this guide.

  • Connectivity configuration for RallyHere. This can be found via the RallyHere Developer Portal (https://developer.rallyhere.com/). You will need:
    • The Environment URL for your development environment
      • Select your development environment in the RallyHere Developer Portal, the Environment URL should be near the top right of the page once you have selected your development environment.
    • A Client Id / Client Secret pair
      • These can be created and configured in the Clients section of the RallyHere Developer Portal, which is available in the left side navigation bar.
      • The client should have the GameClient default policy assigned to it, to ensure it is able to login with this guide.
      • Once a client is created, a Client Secret can be created by clicking the “Rotate Secret” button on the client page and following the prompt. Once that prompt is closed, it cannot be retrieved, so store it securely.
        • Note - Rotating the secret will invalidate the previous secret, making it unusable.
  • Unreal Engine 5 with the ability to compile C++ code
  • The RallyHere Unreal SDK - the latest release is available at https://github.com/RallyHereInteractive/unreal-plugins/releases/latest

Installing the plugin files

The plugin files should be unzipped and placed in your <Project_Directory>/Plugins folder. If you wish, you can make a RallyHere subfolder to place them in (ex: <Project_Directory>/Plugins/RallyHere) Note - you can install the plugins as an Engine plugin instead, if desired and supported by your Engine installation.

Rally Here Plugin Configuration

The following steps will allow you to configure the RallyHere plugins in the editor to enable basic functionality. More advanced configuration is beyond the scope of this guide.

Once the plugin files are installed, restart the editor if it is running. It should prompt to build the plugins, which can take a few minutes. Alternatively, build the plugins via your code editor of choice before starting the editor.

RallyHere Connectivity Configuration

The following settings are needed to allow your project to log in to the RallyHere API

  1. With the editor running, click the Settings button in the top right corner. Select Project Settings to open the Project Settings window.
  2. In the project settings window, scroll down on the left side and select Rally Here Integration Settings. It is in the Plugins section and should be near the bottom.
  3. In the Connectivity section, set the following values based on the values from the Developer Portal mentioned in Prerequisites. This will create a new ini file in your <Project_Directory>/Config directory called DefaultRallyHereIntegration.ini with the settings.
    • Base Url - The Environment URL. Make sure to include the protocol on the front (https://)
    • Client Id - The Client Id from the Developer Portal
    • Client Secret - The Client Secret from the Developer Portal
  4. All other settings can be left at their default values for the purposes of this guide.

LocalPlayer Class Configuration

Our integration layer depends on some custom features added to the ULocalPlayer class, which works in concert with the IpConnection class mentioned below. If your project does not have a custom ULocalPlayer class, you can set it to use our default one by doing the following in the editor.

  1. With the editor running, click the Settings button in the top right corner. Select Project Settings to open the Project Settings window.
  2. In the project settings window, scroll down on the left side and select General Settings. It is in the Engine section and should be near the top.
  3. In the Default Classes section, change the Local Player Class to RH_LocalPlayer (which should be visible in the dropdown).

Alternatively, you can instead directly modify your configuration files. This requires editing your project’s DefaultEngine.ini. Add the following to it:

[/Script/Engine.Engine]
LocalPlayerClassName=/Script/RallyHereIntegration.RH_LocalPlayer

If your project has a custom ULocalPlayer class already, you can either modify it to extend from URH_LocalPlayer, or if that is not viable then implement the IRH_LocalPlayerInterface interface with your custom ULocalPlayer. Note that there may be a few functions in URH_LocalPlayer you will need to adapt as well, but the interface should provide the bulk of the functionality.

IpConnection Class Configuration

Our integration layer depends on some custom features added to the UIpConnection class, which works in concert with the LocalPlayer class mentioned above. If your project does not have a custom UIpConnection class, you can set it to use our default one by doing the following.

This requires editing your project’s DefaultEngine.ini. Add the following to it:

[/Script/OnlineSubsystemUtils.IpNetDriver]
NetConnectionClassName=/Script/RallyHereIntegration.RH_IpConnection

If your project has a custom UIpConnection class already, you can either modify it to extend from URH_IpConnection, or if that is not viable then implement the IRH_IpConnectionInterface interface with your custom UIpConnection. Note that there may be a few functions in UIpConnection you will need to adapt as well, but the interface should provide the bulk of the functionality.

Cross-play compatibility Configuration

This requires editing your project’s DefaultEngine.ini. This change makes the project’s networking layer cross-compatible with the specified types, which is important for multiplayer. Simply add the following to your DefaultEngine.ini (if you do not plan on using Peer-to-Peer functionality, you can add to DedicatedServerEngine.ini instead)

[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
!CompatibleUniqueNetIdTypes=ClearArray
+CompatibleUniqueNetIdTypes=PS5
+CompatibleUniqueNetIdTypes=PS4
+CompatibleUniqueNetIdTypes=GDK
+CompatibleUniqueNetIdTypes=Anon
+CompatibleUniqueNetIdTypes=Basic
+CompatibleUniqueNetIdTypes=Steam
+CompatibleUniqueNetIdTypes=EOS
+CompatibleUniqueNetIdTypes=Switch
+CompatibleUniqueNetIdTypes=Null

Note that you can remove platforms you do not intend to support, though Basic is needed for dedicated server support currently.

Additionally, the following edit is also recommended, unless you know you will be disabling Steam support. It is in the same file. This disables the Steam OnlineSubsystem from overridding the default socket subsystem during initialization, which causes problems for non-steam connections.

[OnlineSubsystemSteam]
bUseSteamNetworking=false

Steam Login Configuration

We use Steam Session Tokens for login, which is not the engine default in UE5.2 and above. To specify to Steam that you wish to use session token types, add the following to your project’s DefaultEngine.ini file.

[OnlineSubsystemSteam]
DefaultLinkedAccountAuthTokenType=Session

Logging In

Opening the RallyHere Debug Tool and Finding the Login Window

  1. Start gameplay in your preferred manner (Play In Editor, for example). Once in gameplay, open the RallyHere Debug Tool menu. By default, F7 is bound to open the menu, but you can also use the console command “rh.toggledebugtool” if that does not work.
  2. Locate the Login window within the Debug Menu (note - it may be behind other windows, windows can be moved by dragging them as needed).

Logging in with an existing provider

If you have an existing provider, such as Epic Online Services, Steam, or are running on a console, you can login using their provider.

  1. In the top of the login window, verify that the Login OSS field is showing that provider name, which should be detected automatically via normal Unreal methods.
  2. Check the checkboxes for Accept EULA, Accept TOS, and Accept PP (for Privacy Policy)
  3. Click Autologin
  4. Assuming everything was configured correctly, you should see the screen update to the logged in state, and you should see a Player UUID field indicating your player now exists and is ready for use!

Logging in via RallyHere’s Anonymous provider for Developers

If you do not have an existing provider, or are having trouble using one, you can log in with our unauthenticated developer module called Anon.

  1. In the top of the login window, verify that the Login OSS field is displaying “ANON”. 2. If the login type is not “ANON”, open Unreal’s console (default: ~ key), and type in rh.setOSS Anon, then close the console. You should see the Login OSS Name field updated to “ANON”
  2. In the “OSS ID/Username” field, type in a username to use (it must be at least 3 characters long). This username is persistent - logging in with this username again will log in to the same account!
  3. Check the checkboxes for Accept EULA, Accept TOS, and Accept PP (for Privacy Policy)
  4. Click Login.
  5. Assuming everything was configured correctly, you should see the screen update to the logged in state, and you should see a Player UUID field indicating your player now exists and is ready for use!