Most Icarus dedicated-server problems become easier to solve when you separate simulation lag from a missing listing, a join timeout, an immediate disconnect, or a server that has shut itself down. Start by confirming that IcarusServer.exe is running, then verify the configured UDP game and query ports, the Windows firewall, and the in-game Dedicated Servers browser. RocketWerkz documents UDP 17777 for game traffic and UDP 27015 for server queries by default; both must reach the host unless you changed them with -PORT= or -QueryPort=. The guide below follows the connection path in order, so you can identify the failing stage instead of changing unrelated settings.
What kind of Icarus problem are you seeing?
Write down the exact symptom before changing anything. The fix for a slow simulation is different from the fix for a server that never appears in the browser, and a Server Lobby screen can be a successful connection rather than an error.
| Symptom | What it usually means in the connection path | First check |
|---|---|---|
| Players move slowly, rubber-band, or actions register late after joining | The process is reachable, but simulation, host networking, or the client connection is unstable. | Whether every player is affected; the server log; and a temporary wired-network test. |
| The server is absent from the list | The query service is not reachable, the server is not running, or the browser is on the wrong server category. | Dedicated Servers filter, IcarusServer.exe, and UDP 27015 (or your configured query port). |
| The server appears, but joining times out | The listing/query path works, but game traffic cannot complete the connection. | UDP 17777 (or your configured game port), router forwarding, and the host firewall. |
| You are disconnected immediately | The process, prospect, launch parameters, or a firewall rule may be terminating or rejecting the session. | Log output around the disconnect and the active prospect settings. |
| You reach the Server Lobby | The connection succeeded, but no prospect is currently active. | Select or start a prospect in the lobby. |
Also record whether the issue affects everyone or only one player. A problem affecting all players points toward the host, router, server process, or shared configuration; one-player failures require testing that player’s route and client separately.
How do I confirm that the dedicated server is installed and running?
Use RocketWerkz’s official setup instructions to install or validate the server through SteamCMD. The dedicated-server application uses Steam app ID 2089300 (RocketWerkz, 2023), and the installed executable is IcarusServer.exe. The setup documentation states that installing the dedicated server does not require an Icarus license.
- Open SteamCMD and point it at a dedicated installation directory.
- Install or update app ID
2089300, allowing SteamCMD to finish before launching the server. - Start
IcarusServer.exe. Use the documented-Logshortcut option when diagnosing a failure so a visible log window remains open. - Confirm that the process stays running while a player searches for it. If it exits, capture the final log lines rather than repeatedly restarting it.
Follow the complete installation and launch notes at RocketWerkz’s Server Setup wiki. A process that closes before a join attempt cannot answer either the query or game-port request, so port changes will not repair that failure.
Where is the Icarus server configuration, and which settings matter?
The active Windows dedicated-server configuration is stored at SavedConfigWindowsServerServerSettings.ini. Check this file and the prospect settings before editing launch arguments; a setting in the file can explain a lobby result or an intentional shutdown.
Launch parameters to audit
-PORT=changes the UDP game port. If it is present, forward and allow that value instead of 17777.-QueryPort=changes the UDP server-query port. If it is present, use that value instead of 27015 for listing traffic.-UserDir=changes where user data, saves, and related files are read or written. A changed directory can make the server appear to have lost a prospect or settings when it is actually using another location.-MULTIHOME=selects the local interface or address used by the server. Review it if the host has more than one network adapter or address.-Logkeeps a diagnostic log window visible during startup and reproduction.
RocketWerkz documents these parameters, prospect loading, logging, and shutdown behavior on its Server Config & Launch Parameters page. Keep a copy of the working file before making changes, and change one variable at a time so the next test remains interpretable.
Check the player limit before inviting a group
The official configuration page sets MaxPlayers from 1 through 8. The documented maximum is 8 simultaneous players (RocketWerkz, 2024). A ninth player cannot be admitted by increasing the value beyond the supported range.
Which ports does an Icarus dedicated server use?
By default, forward and allow two UDP ports from the router to the computer running the server. UDP 17777 carries game traffic; UDP 27015 carries server queries used for listing and discovery. These are separate paths, so a server can appear in the list while the actual join still times out if only the query port works.
| Function | Default protocol and port | When to use a different value |
|---|---|---|
| Game session traffic | UDP 17777 | Use the number assigned by -PORT=, if configured. |
| Server queries and browser listing | UDP 27015 | Use the number assigned by -QueryPort=, if configured. |
How do I forward the ports?
- Give the server computer a stable address on your home network, such as a reserved DHCP lease, so the router rule does not point to a different device later.
- Create a router port-forward rule for UDP 17777 to that host, unless
-PORT=specifies another game port. - Create a second rule for UDP 27015 to the same host, unless
-QueryPort=specifies another query port. - In the host operating system’s firewall, allow inbound UDP on the same two configured values for
IcarusServer.exeor its server rule. - Restart the server after changing launch parameters, then test listing and joining separately.
The official setup and configuration pages list the default ports and the options that replace them: Server Setup and Server Config & Launch Parameters. Do not assume that changing only the router rule is enough; the host firewall and the launch command must agree with it.
Why does my server show in the list but fail when I join?
This symptom usually means the query port is reachable but the game port is not. Verify that the game-port rule, firewall exception, and launch parameter all use the same UDP number.
- Read the command line used to start the process and look for
-PORT=. - Compare that value with the router’s destination port and the host firewall rule.
- If no override exists, use UDP 17777 for game traffic.
- Leave the query rule on UDP 27015 (or the value from
-QueryPort=) so the listing continues to work. - Retry while the log window is visible; note whether the server receives the join attempt before the timeout.
A visible listing is therefore not proof that the full connection is open. It confirms only that the query path answered sufficiently for the browser to display the server.
Why can my friends not find the server?
First make sure they are searching the correct browser. In Icarus, open the character or HAB menu, choose Join Session, and switch the browser to Dedicated Servers. The official connection instructions describe that exact path.
- Have the player open the character/HAB menu.
- Select Join Session.
- Change the server category to Dedicated Servers, not a different session list.
- Refresh or reopen the list after the dedicated process is running.
- Select the server and wait for the join result.
If the server is still absent, check that IcarusServer.exe is running and that the query UDP port is forwarded and allowed. The connection workflow is documented at RocketWerkz’s Connecting to Servers page.
What does it mean when I land in the Server Lobby?
Landing in the Server Lobby is an expected result when no prospect is active; it is not by itself evidence of a failed network connection. From the lobby, select an existing prospect or start one, according to the server’s prospect settings.
If a prospect should already be running but the lobby is empty, inspect the prospect configuration, the user-data directory, and any -UserDir= override. Those determine which saves and settings the process loads. Do not delete or relocate those files while troubleshooting, because doing so removes the evidence needed to compare attempts.
Why does the server seem to stop after a few minutes?
RocketWerkz documents two automatic shutdown timers: ShutdownIfNotJoinedFor and ShutdownIfEmptyFor. Both default to 300 seconds (RocketWerkz, 2024). A process that returns to the lobby or closes after five minutes may therefore be following its configured idle behavior rather than losing the network.
Distinguish an idle timer from a crash
- Start with
-Logand watch the final messages. - Note whether anyone joined before the five-minute interval elapsed.
- Check both timer values in the active configuration and confirm that you are editing the directory selected by
-UserDir=, if used. - Reproduce once with a player ready to join immediately. If the server remains active when a player connects, the timer explains the earlier stop.
Use the documented configuration page for the exact parameter names and behavior: Server Config & Launch Parameters.
How do I troubleshoot Icarus server lag after players connect?
Once players can join, determine whether the delay affects the simulation, the host’s route, or one player’s connection. There is no authoritative CPU, memory, bandwidth, tick-rate, or latency benchmark in the cited RocketWerkz pages, so avoid treating an invented hardware number as a guaranteed fix.
If every player sees the same delay
- Keep the
-Logwindow open and save messages covering the exact time of the slowdown. - Confirm that the server process remains responsive rather than repeatedly restarting.
- Check whether the host is using the intended network interface and whether
-MULTIHOME=points to an address that is still active. - Reduce unrelated network variables by testing the host on wired Ethernet.
If only one player lags
- Ask another player to perform the same action at the same time.
- Have the affected player reconnect and test whether the symptom follows that account or network.
- Do not change server ports solely for a one-player symptom when other players remain stable.
Use Ethernet as a controlled test
For a host on Wi-Fi, temporarily connect a Cat 6 Ethernet cable and repeat the same join and gameplay test. This removes wireless interference and signal variation as variables; it does not correct a wrong port, a stopped process, an incorrect interface selection, or an overloaded machine. Return to the original setup after the comparison if wiring is not a practical permanent option.
What should I check when players disconnect immediately?
Capture the event rather than changing several settings at once. Immediate disconnects can occur at process startup, during prospect loading, or after the game-port handshake, and the log timing helps identify which stage failed.
- Start the server with
-Log. - Record the UTC time of the attempted join and the player’s name or count.
- Check whether the server was visible in the dedicated browser before the attempt.
- Inspect the log lines immediately before and after the disconnect.
- Verify the active prospect and the
ServerSettings.inifile, including any-UserDir=path. - Confirm that the game and query ports in the launch command, router, and firewall still match.
If only one player disconnects while others remain connected, preserve the server configuration and compare another player’s result before making host-wide changes.
What is the fastest end-to-end test?
Use this sequence after every configuration change. It tests the process, listing path, game path, and lobby behavior in the order they depend on one another.
- Stop duplicate server instances and launch one
IcarusServer.exewith-Log. - Confirm the process remains running and note the launch parameters.
- Verify
SavedConfigWindowsServerServerSettings.ini, prospect settings, and the user directory. - Read the configured game and query ports. If no overrides exist, use UDP 17777 and UDP 27015.
- Check the router forwards both UDP values to the server host.
- Check the host firewall allows both values for the server process.
- From the game, open the character/HAB menu, choose Join Session, and select Dedicated Servers.
- Join the listed server. Treat the Server Lobby as a successful connection when no prospect is active.
- Start or select a prospect and observe whether the symptom is lag, timeout, disconnect, or an idle shutdown.
When should I move from self-hosting to managed hosting?
Self-hosting gives you control over the Windows process, router forwarding, launch parameters, and saved data, but you must maintain an always-available host and troubleshoot each network layer. Managed hosting can be reasonable when you cannot keep a host online or cannot configure forwarding, but the decision adds a recurring service cost and does not remove the need to understand the game’s player limit and prospect behavior.
| Situation | Prefer continuing to self-host when | Consider managed hosting when |
|---|---|---|
| Port management | You can reserve a host address and control router and firewall rules. | Your network blocks inbound forwarding or you cannot keep rules stable. |
| Availability | A home machine can remain online for the group’s play schedule. | You need an always-on instance without leaving a personal PC running. |
| Troubleshooting | You want direct access to logs, ServerSettings.ini, and prospect files. |
You prefer a provider to handle the operating system and network layer. |
| Capacity | Your group fits the documented 1–8 player range. | Not applicable for exceeding the game’s documented eight-player maximum. |
Whatever hosting model you choose, retain the same diagnostic record: configured ports, launch parameters, server build, operating system, player count, visibility in the browser, and relevant log lines.
What should I send when escalating a persistent problem?
A reproducible record is more useful than a statement that the server is simply laggy. Keep the files and paths unchanged while reproducing so each attempt can be compared.
- UTC date and time of each failure.
- Player count and whether all players or one player were affected.
- Game and server build information.
- Operating system and whether the host used Wi-Fi or Ethernet.
- Configured game and query ports, including any
-PORT=or-QueryPort=overrides. - Every launch parameter, including
-UserDir=and-MULTIHOME=. - Whether the server was visible in Dedicated Servers.
- The relevant
-Logoutput surrounding startup, joining, lag, disconnect, or shutdown. - Whether the result was gameplay lag, a missing listing, a timeout, an immediate disconnect, or the Server Lobby.
This information identifies the failing stage without guessing at unsupported performance thresholds. It also prevents a successful lobby connection from being misreported as a total connection failure.
Frequently Asked Questions
Can I run an Icarus dedicated server without owning Icarus?
Yes. RocketWerkz’s setup page states: “Installing Icarus Dedicated Server allows installing Icarus Dedicated Server without needing an Icarus license.” You still need SteamCMD and the dedicated-server application files.
Do I need to forward TCP ports for the dedicated server?
The documented defaults are UDP 17777 for game traffic and UDP 27015 for queries. RocketWerkz’s setup and configuration pages specify those UDP values; they do not identify a separate TCP forwarding requirement.
Will changing the query port reduce gameplay lag?
No. The query port controls browser discovery, while the game port carries the session traffic. Changing -QueryPort= can repair a missing listing, but it does not increase simulation performance or fix delay after joining.
Can I raise MaxPlayers above eight in ServerSettings.ini?
The official configuration documentation defines MaxPlayers as a range from 1 to 8. Values above that documented range are not a supported way to expand a dedicated server.
What is the safest way to test a port change?
Change one launch parameter, update the matching router and firewall rule, restart the server, and record whether it appears in Dedicated Servers before attempting a join. Keeping the previous value documented lets you restore the known configuration immediately if the test fails.