MULTIPLAYERDEDICATED SERVER
Dedicated server
A dedicated server runs the game with no window and no player. It holds the damage state that every player sees, and it draws none of it. This page lists what the server computes, what it skips, and what to expect from the console and from a shipped build.
What the server computes
Section titled “What the server computes”- The true lattice. The server applies the hits it accepts and publishes the changed chunks to the clients. It runs Repair and Wash as the authority. See Replication and prediction.
- Hinged parts. For a vehicle that the server simulates, the server decides when a part comes loose and when it comes off by dents, and it publishes both. It does not swing the parts, and it never shakes a part off, because it runs no hinge physics.
- Body collision. The collision of a body follows its dents on the server too, so the server’s bodies meet the same dents as the clients’.
- Glass verdicts. The server judges whether each pane cracks or breaks. It writes no pane data, builds no shards, makes no shard system (the default one is never loaded there) and plays no sound.
- Breakable units and trees. The server decides the unit levels, and it decides when a tree yields and settles. It spawns no debris pieces, because it has no debris pool, and it skips the visual work of the trees.
- Damage events.
OnDamageChangedfires on every machine, the dedicated server included, from the damage the server has confirmed.
What it does not draw
Section titled “What it does not draw”- No atlas. The server has no render subsystem, so it draws no dent, no paint and no dirt.
- No dirt events. The server builds no dirt grid, so
OnDirtChanged,OnWashedandOnWheelSurfaceChangednever fire there.AddDirtandWashAtact on the machine that calls them only. - No wheels. Under the Server model, the vehicle adapter turns its tick off and shows no wheels. The tyres, the rolling sound and FX, and the engine sound are all idle on the server.
- No sound or effects. Impact feedback plays nothing on a dedicated server, and so does the Play Impact call.
Console and builds
Section titled “Console and builds”Crushform.Statson the server printsCrushform atlas: none in this process (a dedicated server draws nothing).in place of the atlas line. The lattice lines that follow sayserver lattice.Crushform.Stats,Crushform.Debug,Crushform.ShowZones,Crushform.ShowCollision,Crushform.RepairAllandCrushform.DebugImpactare compiled out of Shipping builds. The tyre variables, such asCrushform.Tire.Enable, stay.- The
CrushformDebugmodule is denied in Shipping builds, so the debug mode is not part of a Shipping build. A Development server with Shipping clients is not supported. Crushform.DebugMode.AllowClientsdecides whether remote clients may use the server’s debug tools. It defaults to 1. Set it to 0 to keep the tools to the host.- All 12 runtime modules list Win64, Linux and Mac, so a Linux server build is covered.
Check that it works
Section titled “Check that it works”Run a real dedicated server process from the engine’s Binaries\Win64 folder: UnrealEditor.exe "<path to your .uproject>" -server -game -log. Play In Editor is not a dedicated server: its server runs inside the editor, which has a render subsystem, so the none in this process line never appears there.
In the server’s log console (the window that -log opens), enter Crushform.Stats. The atlas line is the only one that says the server draws nothing:
Crushform atlas: none in this process (a dedicated server draws nothing).Each deform line says server lattice, with the fields listed in Replication and prediction. There is nothing to see on screen. Connect a client from a second instance, for example UnrealEditor.exe "<path to your .uproject>" <server address> -game -windowed, and drive a car into a wall. The server’s line shows its hits count rising, and its accepted count rises for each client report it takes.
Troubleshooting
Section titled “Troubleshooting”Console commands do nothing in a shipped build
Section titled “Console commands do nothing in a shipped build”Cause. Crushform.Stats, Crushform.Debug, Crushform.ShowZones, Crushform.ShowCollision, Crushform.RepairAll and Crushform.DebugImpact are compiled out of Shipping builds. The debug mode is in the CrushformDebug module, which is denied there. The tyre variables, such as Crushform.Tire.Enable, are not compiled out, but they are settings, not tools.
Fix. Ship the tools in a Development build. Keep Development servers and Development clients together, because a Development server with Shipping clients is not supported.
No part swings on the server
Section titled “No part swings on the server”Cause. The server runs no hinge physics. It decides when a part comes loose and when it comes off by dents, but the swing is shown only on machines that draw.
Fix. Look for the swing on a client. The server’s copy shows the result as the detached parts it publishes.