Open Source an Unreal Engine launcher Project:UE Launcher

开源一个虚幻引擎启动器UE Launcher

Usually, when developing projects using UE, there are multiple engine versions locally, and the Epic Game Launcher only supports launching installed engine versions and does not support source-compiled engines. When there are multiple engine versions locally, switching becomes inconvenient, and there is no streamlined tool to launch the engine, projects, and add launch parameters easily. When executing Commandlet, it requires creating many scripts, making management very cumbersome. Based on these pain points, I developed a UE launcher: UELauncher, to solve these issues, supporting both UE4 and UE5.

UE Launcher is a tool developed based on the UE Standalone Application mode, using UE as the base library, and the UI is written using Slate. Related implementation mechanisms can be found in my previous article: Create A Standalone Application in UE4.

UELauncher features:

  1. Can scan all installed engine versions on the system.
  2. Can select engine tools (such as UE4Editor/UnrealFrontEnd/IPhonePackager, etc.)
  3. Can select uproject projects.
  4. For source versions of the engine, can easily launch VS to open sln.
  5. Can add launch parameters.
  6. Saves configurations for engine, project, launch parameters, etc.
  7. Supports global configuration, can add a configuration list, saving commonly used configurations for easy launches.
  8. Supports command-line launching.
  9. Supports uproject file association.
  10. Simultaneously supports UE4 and UE5.

Main Interface

The specific functionalities are also quite intuitive, and I’ll introduce advanced usage later.

File Association

After launching the tool with “Administrator privileges,” it will automatically add uproject file associations to the system registry, similar to UE’s default file associations:

It will create a uejson file based on the engine version of the current project. Double-clicking it will use UELauncher to open and edit launch parameters:

After editing the configuration, you can save it. The uejson file also has a file association, which can be edited using UELauncher and can also start the configuration file directly without opening a window:

This allows UE Launcher to function as a scheduler, enabling silent startup based on configuration files, which is very convenient for implementing some commandlets.

Custom Adding Engine Tools

In version v0.20, I have integrated the following engine tools by default:

  1. Editor
  2. Editor-cmd
  3. UnrealFrontEnd
  4. IPhonePackager
  5. NetworkProfiler

However, if you want to add other tools like UnrealInsight, I provide a method using a configuration file. After the program starts, it will create a LaunchTools.json file in the exe directory that records the configurations of the engine tools:

You can use the following format to add engine tools:

1
2
3
4
5
{
"ToolName": "NetworkProfiler",
"PreArgs": "",
"BinPath": "Engine/Binaries/DotNET"
}

Note: ToolName must strictly match the name of the exe, and BinPath is the path relative to the root of the engine.

Global Configuration

When the tool starts, it will automatically load the Global configuration, which is a configuration file located by default in the exe directory and is named Global.json.

When additions or deletions occur, it will automatically update. You can also manually load another location’s Global.json by using Load Global.

Global.json is also a text JSON file:

Global.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
"613EF17D49C4B6CD93268D9EC7E2740F":
{
"Engine": "C:/build_agent/workspace/FGameEngine/Engine",
"Project": "D:/UnrealProjects/Client/FGame.uproject",
"Tool": "Editor",
"ToolPreArgs": "",
"Params": []
},
"9952A0F144015DC2301F94A82552E378":
{
"Engine": "C:/build_agent/workspace/FGameEngine/Engine",
"Project": "D:/UnrealProjects/Client/FGame.uproject",
"Tool": "IPhonePackager",
"ToolPreArgs": "",
"Params": []
},
"98286E134C9D7BE6A91823A2A6880EED":
{
"Engine": "D:/UGit/Engine_bin/FEngine",
"Project": "D:/UGit/Engine_bin/FClient/FGame.uproject",
"Tool": "Editor",
"ToolPreArgs": "",
"Params": []
},
"GUIDs": [
"613EF17D49C4B6CD93268D9EC7E2740F",
"9952A0F144015DC2301F94A82552E378",
"98286E134C9D7BE6A91823A2A6880EED"
]
}

Command Line Launch

I have supported command line launching for UE Launcher, allowing it to act as a scheduler to start via configuration files without manually specifying engine versions.

It has the following three parameters:

  • -e: Edit, create a window to edit configurations.
  • -c: Commandline, start the configuration from the command line.
  • -g: Generate Config, generate uejson from the provided uproject.
1
2
3
4
5
6
# Edit configuration
UE4Launcher-Win64-Shipping.exe -e LaunchConf_FGame.uejson
# Command line startup configuration
UE4Launcher-Win64-Shipping.exe -c LaunchConf_FGame.uejson
# Generate uejson
UE4Launcher-Win64-Shipping.exe -g D:\UnrealProjects\Client\Client.uproject

Based on the provided command line method, you can implement command line startup with preset commands based on configuration files.

Update & Download

v0.22

  • Supports invoking UnralBuildTool to generate sln (UE4/UE5).
  • SEditableBoxWraper supports file selection.
  • Supports opening the engine directory.

v0.21

  • Supports launching Rider to open sln.
  • Optimized layout.

Download link: UE4Launcher_v0.21

v0.20

Expanded UELauncher to support configuration lists, allowing very convenient switching between configurations and using the preset functionality.

  • Supports adding global configurations.
  • Supports automatically reading global configurations at startup.
  • Adaptive width.
  • Supports separately loading global configurations, refreshing, and deleting.
  • Redesigned layout.
  • By default, added IPhonePackager tool.

Download link: UE4Launcher_v0.20

v0.18

  • Supported launching UE5 engines and projects.

Download link: v0.18

v0.17

Download Link

  • Added configurability for startup tools.
  • Optimized the structure of the configuration JSON.

Now you can add other UE tools without modifying code. A LaunchTools.json file will be generated in the directory where UE4Launcher.exe is located during the first launch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"LaunchTools": [
{
"ToolName": "UE4Editor",
"PreArgs": "",
"BinPath": "Engine/Binaries/Win64"
},
{
"ToolName": "UE4Editor-cmd",
"PreArgs": "",
"BinPath": "Engine/Binaries/Win64"
},
{
"ToolName": "UnrealFrontend",
"PreArgs": "",
"BinPath": "Engine/Binaries/Win64"
},
{
"ToolName": "NetworkProfiler",
"PreArgs": "",
"BinPath": "Engine/Binaries/DotNET"
}
]
}

These are the four default tools, and you can add others in the same format here.

Parameter description:

  • ToolName: The name of the tool’s exe, without the suffix.
  • PreArgs: What parameters to pass by default when starting.
  • BinPath: The path relative to the engine.

v0.16

Download Link

  • Fix bugs.
  • Support launching project sln with Visual Studio.

v0.15

Download Link

  • Fix bugs.
  • Ignore project and launch params when just selecting the program.
  • Support launching UnrealFrontend, NetworkProfiler, and custom additional tools.

v0.14

Download Links

  • Fix bugs.
  • Add installer icon.
The article is finished. If you have any questions, please comment and communicate.

Scan the QR code on WeChat and follow me.

Title:Open Source an Unreal Engine launcher Project:UE Launcher
Author:LIPENGZHA
Publish Date:2021/11/10 14:17
Word Count:4.6k Words
Link:https://en.imzlp.com/posts/3635/
License: CC BY-NC-SA 4.0
Reprinting of the full article is prohibited.
Your donation will encourage me to keep creating!