RE:NODE

Guides11 min read

Unreal Engine dedicated server: ini and ports

How Unreal Engine dedicated servers work across Palworld, ARK, Satisfactory and others: the Saved/Config layout, Engine.ini, launch flags, ports, logs and crashes.

0 readers

Every Unreal Engine game server follows the same skeleton, whatever the game on top: a headless binary named <Project>Server, settings in .ini files under <Project>/Saved/Config/LinuxServer/ or WindowsServer/, game traffic on UDP 7777 unless told otherwise, a separate Steam query port, logs in Saved/Logs, saves in Saved/SaveGames or a game-specific folder beside it, and launch options written as a map URL with ?key=value pairs followed by -flags. Learn that layout once and Palworld, ARK, Satisfactory, Squad, Conan Exiles, Insurgency: Sandstorm, Abiotic Factor and The Isle stop being eight separate puzzles. The one rule that saves the most grief: stop the server before editing its ini files, because many Unreal servers write them back on shutdown.

Which games are Unreal, and why it matters#

Knowing the engine tells you where to look before you have read a single page of a game's documentation.

GameEngineProject folderServer config folder
PalworldUnreal 5PalPal/Saved/Config/LinuxServer/
ARK: Survival AscendedUnreal 5ShooterGameShooterGame/Saved/Config/WindowsServer/
SatisfactoryUnreal 5FactoryGameFactoryGame/Saved/Config/LinuxServer/
Abiotic FactorUnreal 5AbioticFactorAbioticFactor/Saved/Config/WindowsServer/
SquadUnrealSquadGameSquadGame/ServerConfig/ plus Saved/Config
Conan ExilesUnreal 4ConanSandboxConanSandbox/Saved/Config/WindowsServer/
Insurgency: SandstormUnreal 4InsurgencyInsurgency/Saved/Config/LinuxServer/
The Isle (Evrima)UnrealTheIsleTheIsle/Saved/Config/LinuxServer/

Not every survival game is Unreal. Valheim, Rust, 7 Days to Die, Unturned, Sons of the Forest and V Rising are Unity games, with different conventions; Enshrouded has its own engine. Killing Floor 2 is on the much older Unreal Engine 3, whose config layout differs. If the server has a Binaries folder and a Content/Paks folder full of .pak files, it is Unreal 4 or 5.

The folder layout#

A typical Unreal server install looks like this:

code
PalServer/  PalServer.sh                       launcher script  Pal/    Binaries/Linux/PalServer-Linux-Shipping    Content/Paks/Pal-LinuxServer.pak  the game's content    Saved/      Config/LinuxServer/            your settings        Engine.ini        Game.ini        GameUserSettings.ini        PalWorldSettings.ini      Logs/Pal.log                   current log      SaveGames/                     worlds      Crashes/                       crash reports

The top-level script or .exe is usually a thin launcher that starts the real binary in Binaries/<Platform>/ with the same arguments. The binary name ends in -Shipping for release builds. On Windows the equivalent is Binaries/Win64/<Project>Server-Win64-Shipping.exe, and the config folder is WindowsServer instead of LinuxServer.

That last detail catches people who copy a config from a Windows guide to a Linux server: the file goes into LinuxServer, not WindowsServer. A correct file in the wrong platform folder is simply never read.

How the ini files are layered#

Unreal reads settings in layers, and the last layer wins:

  1. Engine defaults compiled in or shipped in the engine's own Base*.ini files.
  2. Project defaults - DefaultEngine.ini, DefaultGame.ini and so on - which the developer ships, usually packed inside the .pak files where you cannot edit them.
  3. Saved config - Saved/Config/<Platform>Server/*.ini - which is yours.

You normally only touch the third layer. A setting you add there overrides the project default if you get the section name exactly right. Section names are script paths:

Engine.ini
[/Script/OnlineSubsystemUtils.IpNetDriver]NetServerMaxTickRate=30MaxClientRate=100000MaxInternetClientRate=100000

The file names you will meet:

FileTypical contents
Engine.iniNetworking, tick rate, rendering and engine subsystems
Game.iniGame-mode rules, often the advanced gameplay settings
GameUserSettings.iniServer name, passwords, common gameplay options
Game-specificPalWorldSettings.ini, ServerSettings.ini and similar

Many games ship a template for their own file. Palworld ships DefaultPalWorldSettings.ini in the install root, which you copy into Saved/Config/LinuxServer/PalWorldSettings.ini and edit there; the template itself is not read. The Palworld server settings guide and the ARK: Survival Ascended setup guide cover their games' keys.

Edits that disappear

Unreal games commonly save GameUserSettings.ini and sometimes other files on shutdown, writing out what the running server holds in memory. Edit while the server runs and your change is overwritten when it stops. The order is always:

  1. Stop the server and wait for it to exit.
  2. Edit the file.
  3. Start the server.

If an edit still vanishes, the server may have failed to parse it and written defaults, or a hosting panel may be forcing that key at every start. Game server config file formats has the INI syntax rules and the full list of reasons edits do not stick.

Launch options: the URL and the flags#

An Unreal server's command line has two parts. First, optionally, a map URL: the map name, then ? separated options. Then dash flags.

bash
$ ./ShooterGameServer TheIsland_WP?listen?SessionName="My Ark"?MaxPlayers=20 \    -port=7777 -QueryPort=27015 -log

ARK is the game that uses the URL most heavily, with many settings that can appear either in the URL or in GameUserSettings.ini. Palworld and Satisfactory use almost none of it and rely on flags and ini files.

Flags you will see across many Unreal games:

FlagWhat it does
-port=7777Game port (UDP)
-QueryPort=27015Steam query port for the server browser, where the game supports it
-MultiHome=<ip>Bind to a specific address on a machine with several
-logWrite the log to the console as well as the file
-unattendedNever wait for user input on dialogs or prompts
-ini:<File>:[<Section>]:<Key>=<Value>Override one ini value from the command line

The -ini: override is underused and handy on a panel, because it sets a value without touching the file the server rewrites. Satisfactory's documentation uses it for network settings, for example -ini:Engine:[/Script/Engine.Player]:ConfiguredInternetSpeed=104857600.

Games add their own flags on top. Palworld has had -publiclobby to list in the community browser, and its early guidance recommended -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS for multi-core servers; ARK: Survival Evolved used -USEALLAVAILABLECORES. Game-specific flags change between versions more than engine ones, so check the developer's current documentation rather than a launch line from a two-year-old guide. On a panel host, these appear as fields on the Startup tab, and game server startup parameters explained covers the general pattern.

Ports#

PortProtocolPurpose
7777UDPGame traffic, set with -port
27015 (common)UDPSteam query, set with -QueryPort where supported
game-specificUDP or TCPRCON, beacons, REST APIs

7777 UDP is the Unreal default for game traffic, and many games keep it. Some also use the next port up: ARK: Survival Evolved needed 7778 as well as 7777. Steam-integrated games add a query port so the server browser can ask for name and player count; query ports and A2S explains that conversation. RCON, where a game has it, is usually TCP on its own port - Palworld's is 25575 by default, and newer Palworld versions also offer a REST API on a separate port.

Players connect to the game port. A server that runs but cannot be found in the browser while direct connects work has a query-port problem; a server nobody can reach at all has a game-port problem. Game server ports explained goes through diagnosing which.

Tick rate and network settings#

The server's simulation rate for networking is NetServerMaxTickRate in Engine.ini, under the net driver's section. The Unreal default is 30. Games override it in their own defaults, and some cap or ignore what you set.

Raising it sends updates to players more often, which can make movement and hit registration feel tighter, at a direct CPU cost: a server ticking 60 times a second does roughly twice the per-tick work of one at 30. On a busy survival server already struggling to hold its tick rate, raising the target makes things worse, not better. What tick rate actually means explains why.

MaxClientRate and MaxInternetClientRate cap the bytes per second sent to each client. Raising them helps on games that send a lot of world state - large bases, many creatures - where players see objects popping in late. Some games use a different net driver class (for example a platform-specific one for crossplay), and then the settings belong under that driver's section name; check a known-good config for your game before assuming the generic section applies.

Logs and crashes#

The current log is Saved/Logs/<Project>.log. On start it is renamed to a backup with a timestamp, so Saved/Logs fills slowly with old logs; clear it now and then on a long-lived server. Lines are tagged by category, which makes searching easy:

CategoryWhat it tells you
LogNetConnections, disconnects, net driver errors, port binding
LogOnlineSteam or EOS sessions, server listing
LogInitStartup, command line, engine version
LogStreamingAsset loading, often slow first boot
LogLinux / LogWindowsPlatform errors, crash handling

A crash writes a folder to Saved/Crashes/ containing a context file and, often, a minidump. On Linux the log usually ends with Signal 11 caught and a call stack. The function names in the stack are what to search for or send to the developer; the signal number by itself only says the process crashed. Game server crash loops and reading the console cover the general approach.

One Linux error appears across almost every Steam-integrated Unreal server: a failure to load steamclient.so, leaving the server running but invisible to Steam. The fix is to make the Steam client library available where the server expects it, typically by copying steamclient.so from SteamCMD's linux64 folder to ~/.steam/sdk64/steamclient.so. Panel install scripts usually do this for you.

Admin access, RCON and updates#

Unreal itself has no standard admin system; each game builds its own on top, but the pattern is similar enough to describe once.

Admin passwords and in-game commands

Most Unreal servers have an admin password in their settings file and an in-game way to claim admin with it. ARK reads ServerAdminPassword from [ServerSettings] in GameUserSettings.ini; a player opens the console, types enablecheats <password>, and from then on admin commands are prefixed with cheat. Palworld reads AdminPassword from its OptionSettings line; an admin types /AdminPassword <password> in chat and then has commands such as /Save, /Broadcast, /KickPlayer, /BanPlayer and /Shutdown <seconds> <message>. The Palworld admin commands and RCON post lists the rest.

Two cautions apply to every game in this family. The admin password often travels in plain text through chat or the console, so treat it as a shared secret among staff, not as strong security, and change it when someone leaves. And when the server writes its settings file on shutdown, it writes the password back too - another reason to edit only while stopped.

RCON

Several Unreal games implement the Source RCON protocol over TCP, which means generic RCON clients work with them. ARK enables it with RCONEnabled=True and RCONPort under [ServerSettings]; Palworld uses RCONEnabled and RCONPort (default 25575) in its settings line, authenticated with the admin password. RCON gives you a remote console without joining the game - useful for scheduled broadcasts and saves before a restart. It is also a port that accepts a password and runs commands, so it deserves a strong password and no wider exposure than necessary; RCON safely covers how.

Updates and version matching

Unreal games check versions strictly. When the developer pushes a patch through Steam, clients update automatically, and from that moment nobody can join a server still on the previous build. The fix is an app_update of the server - on a panel, usually a restart with updates enabled or a reinstall - as soon as the server build is published, which is not always the same minute as the client build.

Updates are also when Unreal servers break most. Pak mods and script mods are built against specific game versions and often fail after a patch until their authors catch up; save formats occasionally change and upgrade the world in a way that cannot be undone. Take a backup before every update, read the patch notes for mentions of saves or server settings, and on a modded server wait for the mods before updating. SteamCMD app IDs and beta branches covers the update mechanics, including test branches some developers publish before a patch goes live.

Memory, CPU and startup time#

Unreal servers are heavier than most. A survival server with a large world commonly wants 8 GB or more, and memory grows with the number of structures and creatures players create. Simulation runs mainly on one game thread with helpers for physics, streaming and networking, so single-core speed matters more than core count; reading game server CPU usage covers why a server can lag at 30 per cent total CPU.

Startup takes a while: loading large .pak files, then the world, can take one to several minutes on first boot. Until the log shows the server is listening, players will get connection failures. That is not a fault, but a panel waiting for a "started" line may show the server as starting for that whole time.

Mods for Unreal games usually come as .pak files placed in a ~mods folder under Content/Paks, or through script loaders such as UE4SS, or - for ARK: Survival Ascended - through the game's own CurseForge integration. What works server-side, what players also need, and how that differs per game is covered in Palworld mods with UE4SS for the most common case.

On RE:NODE, Unreal games such as Palworld, Satisfactory, Abiotic Factor and Insurgency: Sandstorm install from the panel with their ports allocated, and the Startup tab exposes the launch values; the config files are in the file manager and over SFTP like any other server. Plans for these games start at the memory their engines need - Palworld from 8 GB, Satisfactory from 8 GB.

FAQ#

Why do my Unreal server settings reset after a restart?

The server writes its ini files on shutdown, and you edited while it was running. Stop the server, edit, start. If it still resets, check for syntax errors in long lines, and check whether the panel sets that value from a startup variable.

Which folder do I edit, WindowsServer or LinuxServer?

The one matching the operating system the server runs on. A Linux server reads only Saved/Config/LinuxServer/, and a file placed in WindowsServer is ignored, even if it is otherwise perfect.

What port does an Unreal Engine server use?

UDP 7777 by default for game traffic, changed with -port. Many games also use a Steam query port, commonly 27015, and some add RCON or other ports. Check each game's documentation for its full list.

Should I raise NetServerMaxTickRate?

Only if the server has CPU headroom and players notice imprecise movement or hits. Raising it increases CPU load roughly in proportion. On a busy survival server, a stable 30 is better than an unstable 60.

Where are the logs for an Unreal dedicated server?

In <Project>/Saved/Logs/. The current file is named after the project, such as Pal.log, and older ones are kept with timestamps. Crash reports go to Saved/Crashes/.


Comments

Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.

0/2000