Skip to content
PEERLESSDocs

Unreal

Upload a compatible HTML5/WASM export, or link a Pixel Streaming player.

Two publishing paths

Native Unreal packages cannot run in the browser player. You can publish an Unreal game in one of two ways:

PathWhen to use it
HTML5/WASM exportYou use a community toolchain that exports browser JavaScript, WASM and data files.
Pixel StreamingYou host the game, GPU servers and streaming frontend yourself and link the player URL.

HTML5 export

Disable export compression (.gz and .br are not accepted), ZIP the exported files with index.html at the root and upload as Unreal HTML5. Test engine and toolchain compatibility with your own game.

For relay rooms, copy peerless-sdk.js and peerless-unreal.js from the Unreal integration beside index.html and load them before the game loader. Include PeerlessWeb.h in your Emscripten-targeted code:

Game.cpp
#include "PeerlessWeb.h"

void AMyGame::BeginPlay() {
    Super::BeginPlay();
    PeerlessWeb::Ready();
}

void AMyGame::Tick(float DeltaSeconds) {
    Super::Tick(DeltaSeconds);
    const std::string message = PeerlessWeb::PollJson(); // "null" when empty
    if (message != "null") HandlePeerlessMessage(message);
}

void AMyGame::SendMove(float X) {
    PeerlessWeb::SendJson("{\"name\":\"move\",\"data\":{\"x\":" + std::to_string(X) + "}}");
}

Poll every frame; the queue holds the latest 256 messages. Call PeerlessWeb::Leave() at teardown. The header belongs in your game project, not in the uploaded ZIP.

Pixel Streaming

Host the packaged game, signalling service and player frontend yourself, then set the player's public HTTPS address as the listing's play URL. PEERLESS does not run streaming servers, and the browser SDK is not a native Unreal networking SDK; use your streaming service's own session system.