Easy HTML Launcher Docs
[p]EASY HTML LAUNCHER COMPLETE DOCUMENTATION
WHAT THIS PLUGIN DOES
Easy HTML Launcher is a runtime plugin for Unreal Engine that can:
• Open HTML content in the user's default web browser
• Save HTML files using a native Windows folder picker dialog
• Receive commands FROM the opened browser page back INTO Unreal Engine through a localhost HTTP bridge
In simple words:
• Unreal Browser: show an HTML page
• Browser Unreal: click a button in HTML and trigger Blueprint logic
WHO THIS GUIDE IS FOR
This guide is written for:
• Blueprint users
• non coders
• users who ask AI to generate HTML/CSS/JS for them
• users who want a step by step setup that actually works
If you only read one section, read:
QUICK START BROWSER BUTTON BLUEPRINT EVENT
IMPORTANT CONCEPTS
THERE ARE 2 MAIN WAYS TO USE THE PLUGIN
MODE A SIMPLE ONE WAY HTML
Use this when you only want Unreal to open a web page or save an HTML file.
Examples:
• open a help page
• open patch notes
• export a report
• save an invoice or receipt
Nodes used:
• Launch HTML In Browser
• Save HTML To File
• Open Folder Picker Dialog
MODE B TWO WAY HTML BRIDGE
Use this when you want a button inside the browser page to send a command back to Unreal Engine.
Examples:
• Start Game button in HTML loads a level in Unreal
• Load Level button sends a map name to Blueprint
• Ping button checks if Unreal is listening
• optional console command execution
Nodes used:
• Get Easy HTML Launcher Command Server
• Start Command Server
• On Browser Command Received
• Get Browser Command Bridge Script
• Launch HTML In Browser
THE MOST IMPORTANT RULE
If you want the HTML page to send commands back to Unreal:
START THE COMMAND SERVER FIRST THEN OPEN THE HTML PAGE
Correct order:
• Bind the event
• Start the command server
• Insert the bridge script into your HTML
• Launch the HTML in the browser
Wrong order:
• Open the page first
• Start the server later
The page may still open, but button clicks can fail if Unreal is not listening.
BLUEPRINT NODES
CORE NODES
LAUNCH HTML IN BROWSER
Category: Easy HTML Launcher
Purpose:
Opens the provided HTML content in the user's default browser.
Input:
• HTML Content (String)
Output:
• Return Value (Boolean)
How it works:
Creates a temporary HTML file in:
[Project]/Saved/EasyHTMLLauncher/
Then opens that file in the default browser.
SAVE HTML TO FILE
Category: Easy HTML Launcher
Purpose:
Lets the user choose a folder and saves the HTML file there.
Inputs:
• HTML Content (String)
• Default File Name (String)
• Auto Open After Save (Boolean)
Outputs:
• Out Saved File Path (String)
• Return Value (Boolean)
OPEN FOLDER PICKER DIALOG
Category: Easy HTML Launcher
Purpose:
Opens a native Windows folder picker dialog.
Inputs:
• Dialog Title (String)
Outputs:
• Out Selected Path (String)
• Return Value (Boolean)
BRIDGE NODES
GET EASY HTML LAUNCHER COMMAND SERVER
Category: Easy HTML Launcher|Bridge
Purpose:
Returns the command bridge subsystem used to receive commands from HTML.
Use this first before calling the bridge functions.
START COMMAND SERVER
Category: Easy HTML Launcher|Bridge
Purpose:
Starts a localhost HTTP server that listens for browser commands.
Input:
• Port (Integer, default 30010)
Output:
• Return Value (Boolean)
STOP COMMAND SERVER
Category: Easy HTML Launcher|Bridge
Purpose:
Stops the localhost command server.
IS COMMAND SERVER RUNNING
Category: Easy HTML Launcher|Bridge
Purpose:
Returns true if the command server is active.
GET LISTENING PORT
Category: Easy HTML Launcher|Bridge
Purpose:
Returns the currently active port.
GET COMMAND SERVER BASE URL
Category: Easy HTML Launcher|Bridge
Example result:
http://127.0.0.1:30010
GET COMMAND ENDPOINT URL
Category: Easy HTML Launcher|Bridge
Example result:
http://127.0.0.1:30010/easyhtmllauncher/command
GET BROWSER COMMAND ENDPOINT URL
Category: Easy HTML Launcher|Bridge
Purpose:
Returns the endpoint as a string without requiring the subsystem reference.
GET BROWSER COMMAND BRIDGE SCRIPT
Category: Easy HTML Launcher|Bridge
Purpose:
Returns a ready to use JavaScript snippet that you insert into your HTML.
This script creates a helper object inside the page so the browser can send commands back to Unreal.
SET ALLOW CONSOLE COMMANDS
Category: Easy HTML Launcher|Bridge
Purpose:
Enables or disables direct execution of incoming console commands.
Default recommendation:
Leave this OFF unless you specifically need it.
GET ALLOW CONSOLE COMMANDS
Category: Easy HTML Launcher|Bridge
Purpose:
Returns whether direct console execution is enabled.
EXECUTE CONSOLE COMMAND STRING
Category: Easy HTML Launcher|Bridge
Purpose:
Runs a console command from Blueprint or C++.
ON BROWSER COMMAND RECEIVED
Category: Easy HTML Launcher|Bridge
Purpose:
Event fired whenever the HTML page sends a command to Unreal.
Parameters:
• Command (String)
• Payload (String)
• RequestType (String)
• HttpMethod (String)
This is the main event most users will work with.
QUICK START BROWSER BUTTON BLUEPRINT EVENT
THIS IS THE MOST IMPORTANT TUTORIAL IN THIS DOCUMENT.
Goal:
Press a button in the browser page and make Unreal receive it in Blueprint.
STEP 1 DECIDE WHERE TO START THE SERVER
Best option:
GameInstance
Why?
Because it stays alive longer and is a good place for systems like this.
Good alternatives:
• Level Blueprint
• Player Controller
• a manager Actor placed in the level
STEP 2 SET UP THE SERVER ON BEGIN PLAY
On Event BeginPlay do this:
Event BeginPlay Get Easy HTML Launcher Command Server Bind Event to On Browser Command Received Start Command Server (Port = 30010)
Optional:
Set Allow Console Commands (False)
Recommended for beginners:
keep Set Allow Console Commands OFF
STEP 3 HANDLE THE EVENT
Create logic on the event you bound to On Browser Command Received.
Example logic:
If Command == "StartGame" Print String "StartGame received"
If Command == "LoadLevel" Open Level using Payload as level name
If Command == "Ping" Print String "Ping from browser"
STEP 4 LAUNCH THE PAGE LATER
Do NOT launch the page before the server setup.
Recommended flow:
On BeginPlay: bind event + start server
On another input like E key: launch the browser page
Example:
Input Key E Build HTML string Get Browser Command Bridge Script (30010) insert that script into the HTML Launch HTML In Browser
STEP 5 TEST WITH A SIMPLE BUTTON
Minimal HTML button example:
<button onclick="easyHTMLLauncher.sendCommand('StartGame', '', 'event')" Start Game </button
When clicked, Unreal receives:
Command = StartGame Payload = RequestType = event
EXACT BEGINNER WORKFLOW NO CODING EXPERIENCE NEEDED
If you are not a coder, follow these exact steps.
PART A BLUEPRINT SIDE
• Open your Blueprint (GameInstance is recommended)
• Add Event BeginPlay
• Add this chain:
Event BeginPlay Get Easy HTML Launcher Command Server Save it to a variable if you want (optional) Bind Event to On Browser Command Received Start Command Server
• Set Start Command Server port to:
30010
• On the bound event:
• if Command = StartGame do your game start logic
• if Command = LoadLevel use Payload as map name
PART B OPEN THE HTML PAGE
Create an input action or key, for example E:
E Key Pressed Get Browser Command Bridge Script (30010) Combine that script with your HTML Launch HTML In Browser
PART C TEST THE CONNECTION
• Play the game
• Press E
• Browser opens
• Click a button in the HTML page
• Unreal receives the event
COPY PASTE TEST HTML
If you want a very small test first, use this HTML:
<!DOCTYPE html <html <head <meta charset="UTF 8" <title Bridge Test</title </head <body style="font family:Arial;padding:24px;" <h1 Bridge Test</h1 <button onclick="easyHTMLLauncher.sendCommand('StartGame', '', 'event')" Start Game </button <button onclick="easyHTMLLauncher.sendCommand('LoadLevel', 'ThirdPersonMap', 'event')" Load Level </button </body </html
IMPORTANT:
You still need to insert the output from:
Get Browser Command Bridge Script
into the HTML before launching it.
WHERE TO PLACE THE BRIDGE SCRIPT
Best place:
right before </body
So your final HTML should look like:
[your normal html] [bridge script string returned by the plugin] </body </html
READY TO USE COMMAND EXAMPLES
START GAME BUTTON
HTML:
easyHTMLLauncher.sendCommand('StartGame', '', 'event')
Blueprint:
If Command == "StartGame" Start game
LOAD LEVEL BUTTON
HTML:
easyHTMLLauncher.sendCommand('LoadLevel', 'ThirdPersonMap', 'event')
Blueprint:
If Command == "LoadLevel" Open Level using Payload
PING BUTTON
HTML:
easyHTMLLauncher.sendCommand('Ping', '', 'event')
Blueprint:
If Command == "Ping" Print String "Ping received"
CONSOLE COMMAND BUTTON
HTML:
easyHTMLLauncher.runConsoleCommand('open ThirdPersonMap')
Blueprint / Setup:
You must enable Set Allow Console Commands(True)
Important:
Only use console command mode if you know what you are doing.
For most users, event based Blueprint handling is better and safer.
WHAT THE HTML PAGE SENDS TO UNREAL EXACTLY
The bridge sends an HTTP request to:
http://127.0.0.1:30010/easyhtmllauncher/command
Typical JSON body:
{ "command": "StartGame", "payload": "", "type": "event" }
Load level example:
{ "command": "LoadLevel", "payload": "ThirdPersonMap", "type": "event" }
Console example:
{ "command": "open ThirdPersonMap", "payload": "", "type": "console" }
HOW TO USE AI TO GENERATE HTML FOR THIS PLUGIN CORRECTLY
Many users will ask AI to generate HTML. That is perfectly fine.
The important thing is to ask for the correct kind of page.
GOOD AI PROMPT FOR THIS PLUGIN
Copy this prompt into your AI tool if you want a page generated for Easy HTML Launcher:
Create a single file HTML page for Unreal Engine Easy HTML Launcher. Requirements: one self contained HTML file with CSS and JavaScript included modern game launcher style buttons for Start Game, Load Level, and Ping Unreal do not require any backend framework use fetch to send POST requests to: http://127.0.0.1:30010/easyhtmllauncher/command Start Game button should send: {"command":"StartGame","payload":"","type":"event"} Load Level button should send: {"command":"LoadLevel","payload":"ThirdPersonMap","type":"event"} Ping button should call: http://127.0.0.1:30010/easyhtmllauncher/health keep it in a single HTML file no external dependencies
BETTER AI PROMPT IF YOU WANT TO USE THE PLUGIN BRIDGE SCRIPT
Use this if you want the AI page to work with the helper object created by the plugin bridge script:
Create a single file HTML page for Unreal Engine Easy HTML Launcher. The page will receive a bridge script from Unreal that creates: window.easyHTMLLauncher with these functions: easyHTMLLauncher.sendCommand(command, payload, type) easyHTMLLauncher.runConsoleCommand(consoleCommand) Build a polished UI with buttons that call those functions directly. Include Start Game, Load Level, Ping, and an activity log.
VERY IMPORTANT FOR AI GENERATED HTML
Tell the AI to avoid these things unless you specifically want them:
• React
• Vue
• Angular
• external CDN dependencies
• separate CSS or JS files
• server side code
Best result for this plugin:
one single self contained HTML file
COMMON USE CASES
1. SIMPLE HELP PAGE
BeginPlay or button press:
Launch HTML In Browser HTML Content = your help page html
No bridge needed.
2. EXPORT REPORT OR RECEIPT
Use:
Save HTML To File
Good for:
• reports
• receipts
• stats
• summary pages
3. EXTERNAL GAME MENU
Use the bridge mode.
Typical flow:
BeginPlay: Start command server
On E key: Launch HTML menu in browser
On browser button click: Unreal receives event
4. HTML BUTTON LOADS A LEVEL
HTML:
easyHTMLLauncher.sendCommand('LoadLevel', 'ThirdPersonMap', 'event')
Blueprint:
If Command == LoadLevel Open Level (by name = Payload)
BEST PRACTICES
RECOMMENDED SETUP ORDER
Do this:
• Bind event
• Start command server
• Open HTML page
USE A PERSISTENT BLUEPRINT IF POSSIBLE
Best place:
GameInstance
START SIMPLE
First test with:
Command = StartGame
and only print a string.
Then add level loading later.
FOR MOST USERS, USE EVENT MODE NOT CONSOLE MODE
Event mode is cleaner and safer.
Recommended:
sendCommand('StartGame', '', 'event')
Use console mode only if you intentionally want browser pages to run Unreal console commands.
EXPECT A NEW TAB OR WINDOW EACH TIME
Every time you call Launch HTML In Browser, the system browser opens again.
That means if the player presses the key many times, many browser pages can open.
TROUBLESHOOTING
THE BROWSER OPENS BUT BUTTONS DO NOTHING
Checklist:
• Did you call Start Command Server before opening the page?
• Did you bind On Browser Command Received?
• Did you insert Get Browser Command Bridge Script into the HTML?
• Are you using the same port everywhere?
• Did you actually click Play in Unreal and keep it running while testing?
PING / HEALTH CHECK SHOWS OFFLINE
Possible causes:
• Start Command Server was never called
• wrong port
• Unreal session ended
• page is pointing to a different localhost URL
START GAME BUTTON DOES NOT LOAD THE LEVEL
Possible causes:
• Command string does not match your Blueprint condition exactly
• level name is wrong
• you forgot to use Payload when opening the level
CONSOLE COMMAND BUTTON DOES NOTHING
Possible causes:
• Set Allow Console Commands is still false
• command string is invalid
• no valid world/player controller at the moment the command runs
LAYOUT LOOKS BROKEN WHEN ONLINE
Usually caused by long unwrapped response text or a narrow browser window.
Fixes:
• allow text wrapping in the log area
• use responsive CSS
• avoid huge unbroken URLs in headings or stat fields
FOLDER PICKER DOESN'T APPEAR
• Windows only
• may be hidden behind fullscreen or another window
FILE NOT SAVING
• check write permissions
• check file name characters
TECHNICAL NOTES
• Platform: Windows only (Win64)
• Module Type: Runtime
• Temporary launched HTML files are stored in:
[Project]/Saved/EasyHTMLLauncher/
• File encoding: UTF 8 without BOM
• Browser launch method: Windows ShellExecute API
• Bridge protocol: localhost HTTP
• Default bridge port: 30010
• Default command path:
/easyhtmllauncher/command
• Health check path:
/easyhtmllauncher/health
RECOMMENDED FIRST TEST
If you want the easiest possible test, do this exact setup:
• In BeginPlay:
• Get Easy HTML Launcher Command Server
• Bind On Browser Command Received
• Start Command Server (30010)
• In the event:
If Command == "StartGame" Print String "StartGame received"
• On E key:
• build a simple html string with one Start Game button
• append Get Browser Command Bridge Script
• Launch HTML In Browser
• Click the browser button
• If you see "StartGame received" in Unreal, the bridge is working.
SUPPORT
For questions, bug reports, or feature requests:
Discord: https://discord.gg/Zm3mWGvk3X
FAB: https://www.fab.com/listings/90818b08 13fc 41b1 8d55 c61ba6363409[/p]