From 127bea6a4dd253f2238935d83ce52e4281b49adc Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Wed, 27 Oct 2021 16:11:17 -0700 Subject: [PATCH] Custom Ports Update + More Egg: - Changed the startup command to call the binary directly to avoid end-users changing the provided bash file to run whatever they'd like. - Changed the install script to check that the server successfully installed, and makes the server binary executable. Also added Software-Noob as a contributor. - Fixed the startup command to support custom ports. The SERVER_PORT variable is now tied to the Server Query Port (because that is what clients use to connect to the server). The GAME_PORT variable was added for the Game Port. Also changed the Game Port to use the correct flag. - Changed the Server Query Port variable to be the Game Port and provided a better description. - Updated the Beacon Port description to be more accurate. Also unlocked it's restriction to port 15000 because it can be changed now. README: - Updated any text mentioning restricted ports to text explaining their configuration. Also used clearer verbiage for the port table. - Added Software-Noob as a contributor. - Added info on "initializing"/"claiming" a server. - Added info on the command line. - Added "SDL" warning as a warning to safely ignore. --- .../steamcmd_servers/satisfactory/README.md | 39 +++++++++++++------ .../satisfactory/egg-satisfactory.json | 18 ++++----- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/satisfactory/README.md b/game_eggs/steamcmd_servers/satisfactory/README.md index b09070ef..31e0ae66 100644 --- a/game_eggs/steamcmd_servers/satisfactory/README.md +++ b/game_eggs/steamcmd_servers/satisfactory/README.md @@ -1,7 +1,5 @@ # Satisfactory ***Server version currently marked as experimental by the Satisfactory developers! Egg loads fine, but your mileage may vary in-game.*** - -**Note: At this time, you can only run *one* Satisfactory server on your Pterodactyl panel. See [Server Ports](#server-ports) for more info.** ___ ### Authors / Contributors @@ -32,6 +30,14 @@ ___ 💻 💡 + + +
Software-Noob +
+
+ 💻 + 💡 + @@ -43,7 +49,7 @@ From Coffee Stain's [Website](https://www.satisfactorygame.com/): > Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven! ___ ### Egg Capabilities -- Configuration of the Server Query port. +- Configuration of the Server Query, Beacon, and Game ports. - Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable. - Misc. settings listed below can be configured by an admin client via the game's UI, and are currently **not** set via the Egg: - Server Password @@ -53,17 +59,19 @@ ___ - ...and possibly more as the client's UI is developed further for more configuration options. ___ ### Server Ports -Default server ports are listed below, and **only** the Server Query port can currently be changed. The current experimental version limits the default Game and Beacon ports from being changed, unless two instances of the server are ran on the same system (which cannot be done with Pterodactyl, since every server is ran on it's own containerized system). This is expected to change as the dedicated server is further developed. Also, your internal ports **must match** your external ports on your network (ie. you can't have an external port of 7778 forwarded to your 7777 internal port; they must match). **All three ports are required to be open for normal server behavior!** +Default server ports are listed below, but all three ports can be changed freely. Note: The Primary/Default/"Game" Port for your server in Pterodactyl will be your Server Query port. It is recommended to distance ports of other running Satisfactory servers in Pterodactyl by increments of 100 (it is currently unknown what the minimum increment is, but an increment of +1 caused cross-server talk in testing). Also, your internal ports **must match** your external ports on your network (ie. you can't have an external port of 7778 forwarded to your 7777 internal port; they must match). **All three ports are required to be open for normal server behavior!** -| Description | REQUIRED UDP Port | +| Port | Default (UDP) | |---------|---------| -| **Game Port (Main Server Port in Pterodactyl)** | 7777 | -| Server Query Port | 15777 *(Configurable)* | -| Beacon Port | 15000 | +| **Server Query (Primary Port in Pterodactyl)** | 15777 | +| Beacon | 15000 | +| Game | 7777 | ___ -### Installation Requirements -No major requirements, other than RAM and Disk space noted below. You *do not* need to own the base game to host this server. +### Installation Requirements/Instructions +- No major requirements, other than RAM and Disk space noted below. +- You *do not* need to own the base game to host this server. +- However, to fully "initialize" your server, a client who owns the game must log into the server to "claim" it and create a new session. The generated session will not be written to disk until the first save occurs. ___ ### Minimum RAM Requirement This server requires a minimum of 4096 MiB of RAM to boot, but the developers recommend 6144 to 8192 MiB of RAM for 4 players. @@ -72,12 +80,15 @@ ___ This server requires just under 5 GB of disk space to safely run properly. However, save files could easily surpass this amount, so 7-10 GB is recommended. ___ ### Save File Location -[According to the developer](https://www.youtube.com/watch?v=Nn-1s87JJxc), save files will be able to be uploaded and downloaded by clients via their game client in the future. Until then, below is the save file location incase you would like to upload or download a save file manually (note that it is different from their wiki): +[According to the developer](https://www.youtube.com/watch?v=Nn-1s87JJxc), save files will be able to be uploaded and downloaded by clients via their game client in the future. Until then, below is the save file location in case you would like to upload or download a save file manually (note that it is different from their wiki): `/home/container/.config/Epic/FactoryGame/Saved/SaveGames/server` Single-player save files can be uploaded here and are playable if desired. ___ +### Console +Currently, it does not appear that commands sent through the console register with the server. The in-game client command line can be used instead (but valid commands are currently unknown at this time). +___ ### Errors/Warnings The following errors or warnings you see in the console can safely be ignored: @@ -88,6 +99,12 @@ LogSteamShared: Warning: Steam Dedicated Server API failed to initialize. ``` The local file of 'steamclient.so' was attempted to be loaded, but could not because it is not present, causing the warning message. However, the backup `/home/container/.steam/sdk64/steamclient.so` is loaded successfully (this is the correct behavior according to the [Wiki](https://satisfactory.fandom.com/wiki/Dedicated_servers#SteamAPI_library_error)). +```log +Warning: failed to init SDL thread priority manager: SDL not found +``` + +This is a common error with Steam related software on Linux, but can safely be ignored. + ```log ...Error: Couldn't find file for package... ``` diff --git a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json index 7440ddd7..4150fa86 100644 --- a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json +++ b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json @@ -12,7 +12,7 @@ "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], - "startup": ".\/FactoryServer.sh -GamePort={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}}", + "startup": ".\/Engine\/Binaries\/Linux\/UE4Server-Linux-Shipping FactoryGame -ServerQueryPort={{SERVER_PORT}} -Port={{GAME_PORT}} -BeaconPort={{BEACON_PORT}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}", @@ -21,29 +21,29 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n## Authors: ryan@kubiq.io (Kubi), matthew@pterodactyl.io (matthewp), & David Wolfe (Red-Thirten)\r\n## Date: 2021\/10\/26\r\n## License: MIT License\r\n\r\n# Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so", + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n## Authors: ryan@kubiq.io (Kubi), matthew@pterodactyl.io (matthewp), admin@softwarenoob.com (Software-Noob) & David Wolfe (Red-Thirten)\r\n## Date: 2021\/10\/27\r\n## License: MIT License\r\n\r\n# Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n# Satisfactory setup\r\ncd \/mnt\/server\/Engine\/Binaries\/Linux\r\nif [[ ! -f UE4Server-Linux-Shipping ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x UE4Server-Linux-Shipping\r\nfi\r\n\r\necho -e \"\\n\\nSatisfactory Dedicated Server successfully installed!\\n\"", "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, "variables": [ { - "name": "[REQUIRED] Server Query Port", - "description": "This is the port that you need to enter in the game when you first connect to a dedicated server.", - "env_variable": "QUERY_PORT", - "default_value": "15777", + "name": "[REQUIRED] Game Port", + "description": "This is the port that the game client uses to connect to the game world (not the lobby). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended). This is also true for the Primary (Query) Port!", + "env_variable": "GAME_PORT", + "default_value": "7777", "user_viewable": false, "user_editable": false, "rules": "required|integer|min:1024|max:65536" }, { "name": "[REQUIRED] Beacon Port", - "description": "This port's default value currently cannot be changed due to the server's experimental status. However, it is left here for posterity, as changing this value is expected to be possible after the developer further develops the dedicated server. This is also true for the main Game Port (must be 7777)!", + "description": "This port provides a lightweight way for clients to contact a server and interact with it without committing to a normal game connection (likely used for client administration). Ensure this port matches your externally forwarded port, and is distanced from other running Satisfactory servers in Pterodactyl (increments of 100 are recommended).", "env_variable": "BEACON_PORT", "default_value": "15000", "user_viewable": false, "user_editable": false, - "rules": "required|integer|min:15000|max:15000" + "rules": "required|integer|min:1024|max:65536" }, { "name": "Automatic Updates", @@ -73,4 +73,4 @@ "rules": "required|integer|min:1" } ] -} +} \ No newline at end of file