Which way do you build?
One question decides it: did you build Unreal Engine yourself from source code?- Yes. Use Way 1.
- No, I installed it from the Epic Games Launcher. Use Way 2. The Launcher version can’t make a Linux server on its own, so you build it inside a container.
Set up your project
Do these two things first, whichever way you build. 1. Add a server target. In your project’sSource folder, copy <YourProject>.Target.cs and rename the copy <YourProject>Server.Target.cs. Inside the copy, change <YourProject>Target to <YourProject>ServerTarget in both places (the class name and the line below it), and set Type = TargetType.Server.
2. Choose the map your server opens. Add these lines to Config/DefaultEngine.ini, using the same map as your GameDefaultMap:
Way 1: You built the engine from source
- Package a Linux server with your engine. Use a Development server, so you can see logs:
- Zip the
LinuxServerfolder that it creates. - Upload the ZIP. See Upload a ZIP. Use the
simpl-server.shstarter script from the dashboard as your start file.
Way 2: You installed Unreal from the Launcher
You build the server inside a container, which is like a sealed box with Unreal inside. It runs on your own computer. Only your finished server leaves your computer, never the engine. Before you start- Link your GitHub account to your Epic Games account. Epic keeps its engine images on GitHub, so you need the link to download them.
- Install Docker Desktop or Podman. Both are free.
- Have a private place for the finished image, such as a private GitHub package.
- Save the file below as
Dockerfilein your project folder, next to your.uprojectfile. - Replace two things in it:
__PROJECT__with your project’s name.__DEV_SLIM_IMAGE__with Epic’s image for your Unreal version, for exampleghcr.io/epicgames/unreal-engine:dev-slim-4.27.2.
- Add a
.dockerignorefile next to it that listsBinaries/,Intermediate/,Saved/,DerivedDataCache/and.vs/, one per line. - Build it:
podman build -t <registry>/<name>:1 .(with Docker, usedocker build). - Push your finished image to your private registry. Only push this one. Never push Epic’s engine image.
- Register the image in Simpl. See Use a Docker image.
What your server needs to do
- Use port 7777 (UDP). That’s Unreal’s default. Simpl sends your players there.
- Write logs to the console. Use a Development server, not Shipping, so you can read the logs in the dashboard.
- Exit when the match is over. The server stops, and so does billing.
Plugin
You don’t need a plugin to run servers on Simpl. There is a Simpl plugin for Unreal (lobbies, matchmaking and match details). See Unreal SDK overview.If something goes wrong
- The server opens an empty world. Set
ServerDefaultMap, as shown in “Set up your project”. - You can’t see any logs. Build a Development server, not Shipping.
- “Exiting abnormally” appears when a server stops. That’s normal. It doesn’t mean a crash.
- Warnings about
xdg-user-dirorOnlineSession. You can ignore them. - Unreal 4.27 asks for Visual Studio 2017. Add
-VS2019to the RunUAT command. - The container build failed once, then worked. Just run it again.