Online Integration
Updated October 2, 2026
Hyper Online Integration (HOI) is the provider and platform integration plugin for Unreal Engine multiplayer projects. It exposes one compact, provider-neutral Blueprint and C++ API while routing the actual work to Steam, Epic Online Services (EOS), or a configured EOS + Steam crossplay profile.
For shared setup guidance, see the Migration and Integration Guide. Use the System Atlas to look up functions, variables, events, components, and ownership references. Use this page for HOI installation, provider setup, Blueprint usage, local testing, and deployment.
Updated October 2, 2026. Reviewed against the current HOI source.
What Hyper Online Integration Does
HOI removes provider-specific setup and Blueprint branching from normal gameplay code. A session search, login request, stat update, voice action, or purchase uses the same shared node regardless of the active provider.
- One Unreal plugin containing isolated runtime, Steam, EOS, and editor modules.
- Guided setup and repair for Steam, EOS, EOS + Steam crossplay, and Unreal defaults.
- Provider-neutral authentication, users, friends, presence, lobbies, sessions, matchmaking, and server discovery.
- Listen-server and dedicated-server session registration, discovery, joining, travel, and cleanup.
- Stats, achievements, leaderboards, cloud saves, voice chat, commerce, and external platform UI.
- Local client and dedicated-server launch tools, generated BAT launchers, logs, health checks, packaging, and release diagnostics.
- Structured results and provider readiness information instead of silent fallback or fake success.
HOI is the platform integration layer. Your game still decides its rules, validates gameplay, builds menus, awards progression, fulfills consumable purchases, and defines what should happen after a successful online operation.
Supported Profiles
| Profile | Use it for | Online owner |
|---|---|---|
| Steam | A Steam-only Windows build, Steam friends and overlay, Steam sessions, and the Steam server browser. | Steam |
| EOS | An Epic Store or EOS-only build using EOS accounts, services, sessions, networking, and RTC voice. | EOS |
| EOS + Steam (Crossplay) | A Steam build that uses Steam storefront identity while EOS owns the shared session pool, networking, matchmaking, and cross-platform services. | EOS shared services with Steam identity |
| Unreal Default | Return the project to Unreal’s default Null/LAN subsystem and base GameInstance. | Unreal |
Crossplay uses one EOS-backed session pool. Steam and Epic clients can therefore discover the same sessions when both builds use the same EOS product, deployment, and session bucket. HOI never merges unrelated Steam and EOS searches after the fact.
Installation
- Close Unreal Editor.
- Copy the HyperOnlineIntegration folder into YourProject/Plugins.
- Open the project and enable Hyper Online Integration if Unreal did not enable it automatically.
- Restart Unreal when requested.
- Click the HOI toolbar button to open the Hyper Online Integration setup hub.
The current plugin descriptor targets Unreal Engine 5.8 and Win64. Use plugin binaries built for your Unreal Engine version.
No separate customer-facing Steam or EOS plugin is installed. Steam, EOS, the provider-neutral API, and editor tooling are modules inside the single HOI plugin. Normal builds use the provider SDK integrations supplied by the selected Unreal Engine installation.
Quick Setup
Steam
- Open HOI → Steam.
- Enter the project’s Steam App ID. App ID 480 is Valve’s shared development application and should not be used for a release.
- Return to Overview and click Set Up Steam.
- Review the short summary, confirm the operation, and let HOI restart Unreal.
- After restart, confirm that Steam reports Configured and that all required diagnostics are green.
HOI configures Unreal’s built-in Online Subsystem Steam, the approved network driver, provider routing, GameInstance selection, and development App ID support. Steam must be running and the user must be logged in during local testing.
Epic Online Services (EOS)
- Open HOI → EOS and use the direct Epic Product Settings link.
- Copy the five Epic-owned values: Product ID, Sandbox ID, Deployment ID, Client ID, and Client Secret.
- Use a normal game client with the required peer-to-peer permissions. A headless dedicated server uses its separate TrustedServer credentials.
- Click Set Up EOS & Restart. HOI writes the provider, networking, artifact, overlay, RTC, bucket, and routing configuration.
- For local development, install and launch Epic’s Dev Auth Tool from the EOS page and create credential names matching the configured aliases, such as Player1 and Player2.
Dev Auth Tool Installation
Click Install Dev Auth Tool on the EOS page. HOI first looks for an existing tool or local official SDK archive. If none is available, it downloads Epic’s current EOS SDK and extracts only the Windows Developer Authentication Tool into the project’s Saved folder. The page shows installation progress. Existing installations are preserved, and closing the setup hub cancels an active installation.
If installation fails and the direct Epic download button is available, open it, finish the download, then click Install Dev Auth Tool again. HOI can discover the official archive in your Downloads folder. Launch the installed tool and create the credential aliases used by your local clients.
Epic-issued product values cannot be invented by the plugin. HOI fills local choices and Unreal configuration automatically, but you must create the product, clients, permissions, and deployments in Epic Developer Portal.
EOS + Steam Crossplay
- Complete both the Steam and EOS product details.
- Configure Steam as an identity provider in Epic Developer Portal and map the correct Steam App ID.
- Enter the matching Steam Web API service identity where the HOI setup page requests it. Never place a Steam Web API key in project settings.
- Click Set Up EOS + Steam Crossplay & Restart.
- Test one Steam-identity client and one EOS client against the same EOS-backed listen or dedicated session.
For the normal Steam storefront flow, EOS Connect can use Steam identity without forcing an Epic account login. Enable Epic social accounts only when the game needs Epic friends, presence, or the EOS social overlay and accepts the related account-linking flow.
Blueprint Workflow
Gameplay Blueprints use the nodes under Hyper Online Integration. Do not call the Steam or EOS SDK directly for features covered by the shared API.
| Area | Typical operations |
|---|---|
| Core | Get Online Integration, initialize, shutdown, inspect health, results, provider, and shared account IDs. |
| Authentication and Users | Login, logout, check login state, and obtain the local online user. |
| Sessions | Create a listen-server session, register a dedicated session, find sessions, join and travel, update advertising, or destroy a session. |
| Lobbies | Create or join a persistent social group, update lobby data, inspect members, leave, and listen for lobby events. |
| Matchmaking | Quick-play discovery over the configured session provider. |
| Server Browser | Query the routed dedicated-server browser and connect with the returned handle. |
| Social | Friends, presence, invites, external UI, and provider-neutral user data. |
| Progression | Load and update stats, achievements, and leaderboards through one local-player component. |
| Voice | Push-to-talk or open-mic transmission, global/team/party/proximity scopes, participant management, and mute state. |
| Commerce | Load the provider catalog and ownership, open native checkout, restore purchases, and inspect receipts. |
| Cloud Saves | List, load, save, and delete named byte-array slots. |
Every asynchronous operation returns the same Hyper Online Result structure. A successful operation can return an empty array; for example, a successful session search with no available sessions is not an error.
Sessions, Lobbies, and Matchmaking
- A lobby is a persistent social group or party and may exist before or after a match.
- A listen-server session is a gameplay endpoint hosted by a player.
- A dedicated-server session is registered by a headless server process.
- Find Sessions searches the single provider routed for gameplay sessions.
- Find Servers searches the separately routed provider server browser where supported.
- Quick Match performs discovery, selection, retry, join, and optional host behavior. It is not a replacement for a provider-owned ranked queue backend.
If your game uses a waiting map followed by gameplay, that does not automatically require a separate platform lobby. A normal listen-server session can host the waiting map and then travel to the gameplay map. Add a platform lobby only when the social group needs its own lifecycle.
Session Advertising and Map Changes
Bind once to On Hosted Map Changed in the GameInstance after HOI is available. The event supplies the stable map package and internal map name. Use your playlist or game data to convert that internal identity into a friendly advertised name, then call Update Hosted Session Advertising.
Advertising updates are patches: empty top-level strings do not overwrite existing values, and only supplied session-setting keys are changed. Existing settings that are not included remain intact. Player counts are maintained by the provider/session implementation.
Player Progression
Add one HOI Player Progression component to the local PlayerController. The component loads the local user’s full numeric stat cache and achievement catalog automatically; an empty Stats To Load array means load all available stats.
- Use Add To Pending Online Stat for frequent counters such as kills, deaths, assists, score, and playtime.
- Pending changes are combined by Stat ID, journaled locally, and submitted automatically every 30 seconds or after 50 changes by default.
- Use Submit Pending Online Stats at match completion, checkpoints, logout, or return to menu.
- Use Add And Submit Online Stat for an exceptional value that should be attempted immediately.
- Configure achievements and their linked stats in Steamworks or Epic Developer Portal. HOI refreshes achievement progress after accepted stat writes.
- Configure each leaderboard ID in the component and use the async request and score-submission nodes.
Failed or interrupted pending-stat submissions are recovered against freshly loaded provider values before another submission. HOI records the original value and intended target, avoids replaying the same increment blindly, and preserves a changed remote value. Recovery is conservative: if another write changed that stat, an uncertain local increment may be retired rather than overwrite newer progression. Check the pending submission result and refreshed cache when showing saved progress.
The server should validate earned progression and notify the owning client. Do not trust arbitrary client-provided kill counts, completion times, currencies, or scores.
Voice Chat
Add one HOI Voice Chat component to the PlayerController class used by your players. Microphone and playback work runs on the locally controlled instance. Keep component replication enabled so server moderation reaches the owning clients.
Microphone Controls and Status
- Push To Talk is the default mode. Bind input Started/Pressed to Push To Talk Pressed and Completed/Released to Push To Talk Released. Also stop transmission when input is cancelled.
- Use Set Voice Chat Mode to change between Disabled, Push To Talk, and Open Mic at runtime. Open Mic starts automatically. Disabled stops microphone transmission; it does not mute incoming voices.
- HOI retries requested transmission while login or a voice room is becoming available. Releasing push-to-talk or calling Stop Voice Transmission clears that request.
- Use Get Local Voice Chat Status, On Voice Chat Status Changed, and On Voice Chat Error for availability, microphone, transmission, talking indicators, and runtime errors.
EOS requires a logged-in voice user and a joined RTC room. Login alone does not make voice available. HOI reports transmission only when a joined channel is selected and a usable, unmuted input device is present. Leave Local User Num Override at -1 for normal PlayerController ownership.
Participants and Voice Audience
HOI automatically registers remote players from the replicated GameState PlayerStates and their valid online Unique IDs. It follows their Pawns as they spawn or change and removes departed players. Normal player setups do not need manual registration. For a custom player architecture, use Register Voice Participant with the online account ID and spatial actor, update it when that actor changes, and call Unregister Voice Participant on departure.
Use Set Voice Audience to select which remote participants the local player hears. Audience is independent from microphone mode and does not create a private provider channel.
- Global: hear registered participants unless locally or server muted.
- Team: hear the complete roster supplied through Set Team Voice Members.
- Party: hear the complete roster supplied through Set Party Voice Members.
- Proximity: hear nearby participants with distance attenuation and spatial playback.
Your team or party manager must replace the corresponding roster whenever membership changes. Use online account IDs rather than display names. HOI normalizes EOS composite IDs to the voice participant identity for roster and mute matching. These audience filters control playback on participating clients; they are not a secure private-channel or access-control system.
Proximity Audio
The default full-volume distance is 1500 cm and the maximum distance is 3000 cm. Voices fade between those distances and are muted at or beyond the maximum. Adjust Proximity Full Volume Distance and Proximity Maximum Distance for your game.
For EOS, HOI routes each remote participant’s received audio through Unreal spatial playback attached to the speaker’s Pawn. Unreal applies distance and direction once. If the spatial actor or receive route is unavailable, that participant remains muted while HOI retries the route. Switching out of Proximity restores provider playback, and participant removal or component shutdown releases the spatial audio. Steam uses Unreal’s VOIPTalker path for spatial playback.
Local Muting and Server Moderation
Set Voice Player Muted controls the local listener’s mute preference. Removing that mute still respects the selected audience and server mute list.
For moderation, call Mute Voice Participant (Server) or Unmute Voice Participant (Server) only from authoritative server gameplay after your own admin permission check. HOI stores the list in the server GameInstance subsystem and distributes it through replicated voice components. Server mutes apply across all audiences on HOI clients. Use Get Server Muted Voice Participants, Is Voice Participant Server Muted, and On Server Voice Mute List Changed for moderation UI. This does not replace provider-side enforcement against modified clients.
Voice Verification and Troubleshooting
Test with two real provider accounts. Check push-to-talk release and cancellation, Open Mic after login or room readiness, audience changes, team/party roster changes, local and server muting, respawn, player departure, and map travel. For Proximity, move the speaker left/right and across both distance thresholds.
For EOS spatial playback, inspect LogHyperOnlineVoiceSpatial. Its periodic entries include playback and mute state, received/rendered audio frames, input format, speaker and audio positions, and spatialization state. A route-unavailable warning means HOI is keeping that participant silent until spatial routing recovers. Compare these entries with voice status and the current Pawn before changing distance settings.
Commerce
Add one HOI Commerce component to the local PlayerController. It loads the active storefront catalog and ownership receipts, then exposes provider-neutral products containing IDs, localized text, prices, currency, sale information, purchasable state, and ownership.
- Create products in Steamworks and/or Epic Developer Portal.
- Prefer matching product IDs across storefronts when practical.
- Build your shop UI from On Commerce Loaded or the component’s cached products.
- Call the async purchase node for the selected Product ID. The active platform presents its native checkout flow.
- Use durable receipts for permanent ownership checks.
- Consumable currency or items require trusted backend fulfillment using the returned receipt. Do not store paid currency as an online stat.
Steam checkout waits for authorization of the matching purchase order and verifies that the requested inventory quantity was added relative to the pre-purchase inventory. Opening or authorizing checkout alone is not a completed purchase. If ownership verification fails or an operation is interrupted, refresh ownership before deciding whether to retry. Stopping a local request does not reverse a platform transaction.
Local Testing
Open HOI → Local Testing. The available launch buttons adapt to the configured profile.
- Run Normal Client: opens an uncooked client at the project’s normal entry map.
- Run Client as Steam / EOS: launches the selected identity route for crossplay tests.
- Run Client and Join: opens a client with a configured local or remote connection target.
- Run Server: launches a local dedicated-server process with the chosen map, ports, session settings, and logging.
- Create BAT Files: generates reusable server and client launchers from the current preset.
Local Test Login can use Dev Auth Tool (Local Development) or Epic Login Window (No Tool). The latter opens Epic’s interactive login without requiring Dev Auth Tool. These per-user settings affect HOI local test launchers, not the Shipping login flow.
EOS local clients normally use Epic Dev Auth Tool. Each PC runs its own tool on localhost and may reuse aliases such as Player1 for a different local test account. Keep the tool open while the EOS development client runs. Steam clients require the Steam client to be running and logged in.
Dedicated Servers
- Select a server map in the Local Testing page.
- Set the advertised server name, capacity, join policy, game port, and provider-specific query settings.
- For EOS headless servers, enter the dedicated TrustedServer Client ID and Client Secret on the EOS page.
- Run the server and inspect the HOI status summary and log.
- Launch a normal client, search through the in-game HOI flow, and join using the returned session handle.
EOS dedicated-server credentials are shared project settings in Config/DefaultEditor.ini and are copied only to generated dedicated-server manifests. They are excluded from runtime client configuration and packaged clients. Treat the shared editor configuration and generated server manifests as credential-bearing files.
The editor server launcher is for rapid local testing. A production dedicated server should use a real server target and packaged server build. Router/firewall reachability, hosting infrastructure, operating-system services, and provider portal policies remain deployment responsibilities.
Packaging and Release
- Open HOI → Deploy and select an output directory.
- Package a Shipping client using the active profile.
- For Steam and Epic crossplay, use the same EOS product, deployment, and session bucket. The Steam storefront client uses the crossplay profile; the Epic client uses EOS.
- Package a dedicated server only when the project has a valid TargetType.Server target and a server-capable Unreal installation.
- Run Health and resolve the recommended next action.
- Test the exact packaged builds using real platform accounts before release.
A single editor test cannot certify overlay, authentication, invites, discovery, travel, commerce, voice, crossplay, or dedicated-server behavior. Validate every provider feature used by the game with the real product configuration and release package.
Important Boundaries
- HOI does not create Steamworks or Epic Developer Portal products, credentials, achievements, stats, leaderboards, offers, permissions, or deployment policies.
- HOI does not store provider secrets outside the project configuration chosen by the developer.
- Account-link contracts are reserved for a future real implementation. Login state is not presented as proof that two platform accounts were linked.
- HOI does not silently switch providers when a configured provider is unavailable.
- HOI does not provide a hosted backend, anti-cheat service, authoritative economy, payment fulfillment server, port forwarding, or game-specific UI.
- Advanced raw Steam functions are available but hidden from the normal Blueprint palette. Enable them only when the shared HOI API does not cover a required Steam-only feature.