Skip to content
RallyHere Docs
GitHub

RallyHere Unreal Integration QuickStart Guide

The intention of this guide is to help integrate the RallyHere 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 your Developer Portal. You will need:
    • BaseURL for your development environment
    • Client Id / Client Secret pair
  • Unreal Engine 5 with the ability to compile C++ code
  • RallyHere plugins - the latest release from https://github.com/RallyHereInteractive/unreal-plugins/releases

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.

RallyHere 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 RallyHere 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: BaseURL, ClientId, ClientSecret. This will create a new ini file in your Project/Config director called DefaultRallyHereIntegration.ini with the settings.

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

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!