Merge pull request #1950 from gOOvER/serewrite

Rewrite Egg Space Engineers Dedicated Server + added workshop support
This commit is contained in:
Quinten 2022-11-14 07:02:17 +01:00 committed by GitHub
commit fc90747646
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 98 additions and 53 deletions

View File

@ -1,14 +1,30 @@
# Space Engineers
Space Engineers is a voxel-based sandbox game set in space and on planets.
### Author & Contributers
| Name | Github Profile |
| ------------- |-------------|
| TuEye | https://github.com/TuEye |
| gOOvER | https://github.com/gOOvER |
Many parts of this egg are based on the work of [mmmaxwwwell](https://github.com/mmmaxwwwell/space-engineers-dedicated-docker-linux). A thank you therefore goes to him.
## Description
Space Engineers is a voxel-based sandbox game set in space and on planets.
**NOTE**
Because of the winetricks installation, the install process could take some time. Likewise, the first start of the server takes its time.
When installed, the Server loads a base World and config from this repo. New world must be generated with the Windows Dedicated Server and then uploaded to the /config/Saves folder.
Everything which is not defined in a variable could be edited directy in the config file /config/SpaceEngineers-Dedicated.cfg.
Everything which is not defined in a variable could be edited directy in the config file /config/SpaceEngineers-Dedicated.cfg and config/Saves/{{WORLD}}/Sandbox.sbc
## Server Ports
Default server ports are listed below, but the Main, STEAm and API port can be any port.
| Port | default |
|-------|---------|
| Game | 27016 |
| Steam | 8766 |
| API | 8081 |
## Minumum server settings
@ -22,10 +38,6 @@ Based on the information provided by the developer: [See here](https://www.space
This server uses about 7GB of diskspace.
## Server Ports
## Credits
| Port | default |
|-------|---------|
| Game | 27016 |
| Steam | 8766 |
| API | 8081 |
Many parts of this egg are based on the work of [mmmaxwwwell](https://github.com/mmmaxwwwell/space-engineers-dedicated-docker-linux). A thank you therefore goes to him.

View File

@ -10,6 +10,7 @@
<OnlineMode>PUBLIC</OnlineMode>
<MaxPlayers>4</MaxPlayers>
<MaxFloatingObjects>56</MaxFloatingObjects>
<TotalBotLimit>32</TotalBotLimit>
<MaxBackupSaves>5</MaxBackupSaves>
<MaxGridSize>0</MaxGridSize>
<MaxBlocksPerPlayer>0</MaxBlocksPerPlayer>
@ -122,8 +123,21 @@
<MaxPlanets>99</MaxPlanets>
<OffensiveWordsFiltering>false</OffensiveWordsFiltering>
<AdjustableMaxVehicleSpeed>true</AdjustableMaxVehicleSpeed>
<EnableMatchComponent>false</EnableMatchComponent>
<PreMatchDuration>0</PreMatchDuration>
<MatchDuration>0</MatchDuration>
<PostMatchDuration>0</PostMatchDuration>
<EnableFriendlyFire>true</EnableFriendlyFire>
<EnableTeamBalancing>false</EnableTeamBalancing>
<CharacterSpeedMultiplier>1</CharacterSpeedMultiplier>
<EnableRecoil>true</EnableRecoil>
<EnvironmentDamageMultiplier>1</EnvironmentDamageMultiplier>
<EnableGamepadAimAssist>false</EnableGamepadAimAssist>
<BackpackDespawnTimer>5</BackpackDespawnTimer>
<EnableFactionPlayerNames>false</EnableFactionPlayerNames>
<EnableTeamScoreCounters>true</EnableTeamScoreCounters>
</SessionSettings>
<LoadWorld>C:\Users\USERNAME\AppData\Roaming\SpaceEngineersDedicated\Saves\World</LoadWorld>
<LoadWorld>C:\Users\USERNAME\AppData\Roaming\SpaceEngineersDedicated\Saves\World\Sandbox.sbc</LoadWorld>
<IP>0.0.0.0</IP>
<SteamPort>8766</SteamPort>
<ServerPort>27016</ServerPort>
@ -131,7 +145,7 @@
<Administrators />
<Banned />
<GroupID>0</GroupID>
<ServerName />
<ServerName> />
<WorldName>World</WorldName>
<VerboseNetworkLogging>false</VerboseNetworkLogging>
<PauseGameWhenEmpty>false</PauseGameWhenEmpty>
@ -149,10 +163,10 @@
<PremadeCheckpointPath />
<ServerDescription />
<ServerPasswordHash />
<ServerPasswordSalt>O+61kcmfFdESpxZr3sQdYQ==</ServerPasswordSalt>
<ServerPasswordSalt>cIflzwuTl3iy1jYulTRNgw==</ServerPasswordSalt>
<Reserved />
<RemoteApiEnabled>false</RemoteApiEnabled>
<RemoteSecurityKey>fw8j74YGyC9HnbVWwuyRSA==</RemoteSecurityKey>
<RemoteSecurityKey>jrVRQIvlBI8OSsuzwZNzVw==</RemoteSecurityKey>
<RemoteApiPort>8080</RemoteApiPort>
<Plugins />
<WatcherInterval>30</WatcherInterval>
@ -164,4 +178,8 @@
<NetworkType>steam</NetworkType>
<ConsoleCompatibility>false</ConsoleCompatibility>
<NetworkParameters />
<ChatAntiSpamEnabled>true</ChatAntiSpamEnabled>
<SameMessageTimeout>30</SameMessageTimeout>
<SpamMessagesTime>0.5</SpamMessagesTime>
<SpamMessagesTimeout>60</SpamMessagesTimeout>
</MyConfigDedicated>

View File

@ -1,21 +1,21 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-09-15T18:24:11-04:00",
"exported_at": "2022-11-05T17:28:33+01:00",
"name": "Space Engineers",
"author": "tueye@tuworld.de",
"description": "Space Engineers is a voxel-based sandbox game set in space and on planets.",
"features": [
"steam_disk_space"
],
"images": [
"quay.io\/parkervcp\/pterodactyl-images:debian_wine-5"
],
"docker_images": {
"ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging"
},
"file_denylist": [],
"startup": "cd \/home\/container\/DedicatedServer64\/; wine \/home\/container\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession",
"startup": "winetricks sound=disabled; export WINEARCH=\"win64\"; export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine \/home\/container\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession",
"config": {
"files": "{\r\n \"config\/SpaceEngineers-Dedicated.cfg\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyConfigDedicated.SessionSettings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyConfigDedicated.SessionSettings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyConfigDedicated.SessionSettings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyConfigDedicated.LoadWorld\": \"Z:\\\\home\\\\container\\\\config\\\\Saves\\\\{{server.build.env.WORLD_NAME}}\\\\Sandbox.sbc\",\r\n \"MyConfigDedicated.ServerPort\": \"{{server.build.default.port}}\",\r\n \"MyConfigDedicated.SteamPort\": \"{{server.build.env.STEAM_PORT}}\",\r\n \"MyConfigDedicated.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"MyConfigDedicated.WorldName\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"MyConfigDedicated.ServerDescription\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"MyConfigDedicated.RemoteApiEnabled\": \"{{server.build.env.REMOTEAPI_ENABLE}}\",\r\n \"MyConfigDedicated.RemoteApiPort\": \"{{server.build.env.REMOTEAPI_PORT}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Game ready...\"\r\n}",
@ -24,8 +24,8 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n## Define variables\r\ndlurl=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/space_engineers\"\r\nexport HOME=\/mnt\/server\r\n\r\n## Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl unzip libstdc++6 lib32gcc1 ca-certificates libsdl2-2.0-0:i386 cabextract\r\napt install -y --install-recommends wine wine64 xvfb\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\n\r\n## Install game using steamcmd\r\n.\/steamcmd.sh +login anonymous +@sSteamCmdForcePlatformType windows +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Create world and config\r\nmkdir -p $HOME\/config\/Saves\r\nif [ ! -d $HOME\/config\/Saves\/World ]\r\nthen\r\n curl $dlurl\/World.zip -o \/tmp\/World.zip\r\n unzip \/tmp\/World.zip -d $HOME\/config\/Saves\/\r\nfi\r\nif [ ! -f $HOME\/config\/SpaceEngineers-Dedicated.cfg ]; then curl $dlurl\/SpaceEngineers-Dedicated.cfg -o $HOME\/config\/SpaceEngineers-Dedicated.cfg; fi\r\n\r\n## Install WineTricks\r\nexport DISPLAY=:0.0\r\nexport WINEPREFIX=$HOME\/.wine\r\nrm -r $HOME\/.wine\r\nrm -r $HOME\/.cache\r\nmkdir -p $HOME\/.wine\r\nmkdir \/tmp\/winetricks\r\ncurl https:\/\/raw.githubusercontent.com\/Winetricks\/winetricks\/master\/src\/winetricks -o \/tmp\/winetricks\/winetricks\r\nchmod +x \/tmp\/winetricks\/winetricks\r\nXvfb :0 -screen 0 1024x768x16 &\r\nenv WINEDLLOVERRIDES=\"mscoree=d;mshtml=d\" wineboot --init --force \/nogui\r\nenv \/tmp\/winetricks\/winetricks -q vcrun2017 \r\nenv \/tmp\/winetricks\/winetricks -q vcrun2013 \r\nenv \/tmp\/winetricks\/winetricks -q sound=disabled \r\nenv \/tmp\/winetricks\/winetricks -q corefonts\r\nenv \/tmp\/winetricks\/winetricks -q --force dotnet48",
"container": "debian:buster-slim",
"script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n## Define variables\r\ndlurl=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/space_engineers\"\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\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 using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Create world and config\r\nmkdir -p $HOME\/config\/Saves\r\nif [ ! -d $HOME\/config\/Saves\/World ]\r\nthen\r\n curl $dlurl\/World.zip -o World.zip\r\n unzip World.zip -d $HOME\/config\/Saves\/\r\nfi\r\nif [ ! -f $HOME\/config\/SpaceEngineers-Dedicated.cfg ]; then curl $dlurl\/SpaceEngineers-Dedicated.cfg -o $HOME\/config\/SpaceEngineers-Dedicated.cfg; fi\r\n\r\nrm -fR $HOME\/World.zip\r\n\r\n# copy libs for mod support\r\ncp -v $HOME\/steamclient.dll ..\/DedicatedServer64\/\r\ncp -v $HOME\/steamclient64.dll ..\/DedicatedServer64\/\r\ncp -v $HOME\/tier0_s.dll ..\/DedicatedServer64\/\r\ncp -v $HOME\/tier0_s64.dll ..\/DedicatedServer64\/\r\ncp -v $HOME\/vstdlib_s.dll ..\/DedicatedServer64\/\r\ncp -v $HOME\/vstdlib_s64.dll ..\/DedicatedServer64\/\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/parkervcp\/installers:debian",
"entrypoint": "bash"
}
},
@ -37,7 +37,8 @@
"default_value": "298740",
"user_viewable": false,
"user_editable": false,
"rules": "required|numeric|digits_between:1,6"
"rules": "required|numeric|digits_between:1,6",
"field_type": "text"
},
{
"name": "Server Name",
@ -46,7 +47,8 @@
"default_value": "Pterodactyl Space Engineer Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64"
"rules": "required|string|max:64",
"field_type": "text"
},
{
"name": "World Name",
@ -55,7 +57,8 @@
"default_value": "World",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Server Description",
@ -64,7 +67,8 @@
"default_value": "Pterodactyl Space Engineer Server",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:200"
"rules": "required|string|max:200",
"field_type": "text"
},
{
"name": "Game Mode",
@ -73,7 +77,8 @@
"default_value": "Survival",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:Survival,Creative"
"rules": "required|string|in:Survival,Creative",
"field_type": "text"
},
{
"name": "Maximum Players",
@ -82,7 +87,8 @@
"default_value": "4",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|digits_between:1,3"
"rules": "required|numeric|digits_between:1,16",
"field_type": "text"
},
{
"name": "Enable Saving",
@ -91,7 +97,8 @@
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Auto Save Interval",
@ -100,7 +107,8 @@
"default_value": "5",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|digits_between:1,3"
"rules": "required|numeric|digits_between:1,3",
"field_type": "text"
},
{
"name": "Steam Port",
@ -109,7 +117,8 @@
"default_value": "8766",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|max:65535"
"rules": "required|numeric|max:65535",
"field_type": "text"
},
{
"name": "Enable Remote Api",
@ -118,7 +127,8 @@
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false"
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Remote Api Port",
@ -127,25 +137,8 @@
"default_value": "8081",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric|max:65535"
},
{
"name": "WINEARCH",
"description": "WINEARCH. win32 or win64",
"env_variable": "WINEARCH",
"default_value": "win64",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|in:win32,win64"
},
{
"name": "WINEPREFIX",
"description": "WINEPREFIX",
"env_variable": "WINEPREFIX",
"default_value": "\/home\/container\/.wine",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|max:64"
"rules": "required|numeric|max:65535",
"field_type": "text"
},
{
"name": "WINEDEBUG",
@ -154,7 +147,8 @@
"default_value": "-all",
"user_viewable": false,
"user_editable": false,
"rules": "nullable|string|max:20"
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Windows Install",
@ -163,7 +157,28 @@
"default_value": "1",
"user_viewable": false,
"user_editable": false,
"rules": "required|string|in:1"
"rules": "required|string|in:1",
"field_type": "text"
},
{
"name": "WINETRICKS_RUN",
"description": "",
"env_variable": "WINETRICKS_RUN",
"default_value": "vcrun2013 vcrun2017 corefonts dotnet48",
"user_viewable": false,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Auto Update",
"description": "",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
}
]
}
}