space-engineers-dedicated-docker-linux
space-engineers-dedicated-docker-linux copied to clipboard
Mods fail to download
Pretty simple, every mod I try to add to the world fails the download with "k_EResultFail".
The server then fails to start with "Exception while loading world: Value cannot be null."
I've also tried manually moving the mods to "/appdata/space-engineers/bins/SpaceEngineersDedicated/Mods", but that doesn't seem to help.
The container can reach the steam servers just fine, as it can download updates for Space Engineers itself (pinging server from inside the container also works just fine).
The logs look like this (mod IDs vary of course):
2022-06-27 18:02:21.682 - Thread: 12 -> Mod query successful
2022-06-27 18:02:21.710 - Thread: 7 -> Downloading: Id = 2483168442, title = 'Ganymede Tech - Production Mod Pack'
2022-06-27 18:02:23.192 - Thread: 6 -> MyDefinitionManager.GetSessionPreloadDefinitions() - END
2022-06-27 18:02:23.192 - Thread: 6 -> MySandboxGame.PerformPreload() - END VANILLA SOUNDS AND VOXELS
2022-06-27 18:02:23.193 - Thread: 6 -> MySandboxGame.PerformPreload() - END
2022-06-27 18:02:23.875 - Thread: 12 -> Workshop item with id 2483168442 download finished. Result: k_EResultFail
2022-06-27 18:02:23.876 - Thread: 12 -> Workshop item with id 2483168442 download finished. Result: k_EResultFail
2022-06-27 18:02:23.876 - Thread: 12 -> Error during downloading: Fail
2022-06-27 18:02:23.883 - Thread: 7 -> Up to date mod: Id = 2483168442, title = 'Ganymede Tech - Production Mod Pack'
2022-06-27 18:02:23.883 - Thread: 7 -> Mod download time: 2.18 seconds
2022-06-27 18:02:23.885 - Thread: 7 -> Downloading world mods - END
2022-06-27 18:02:23.894 - Thread: 1 -> Loading session: Z:\appdata\space-engineers\World
2022-06-27 18:02:23.942 - Thread: 1 -> GC Memory: 64,541,600 B
2022-06-27 18:02:23.944 - Thread: 1 -> Process Memory: B
2022-06-27 18:02:23.944 - Thread: 1 -> Experimental mode: Yes
2022-06-27 18:02:23.944 - Thread: 1 -> Experimental mode reason: ExperimentalMode, Mods
2022-06-27 18:02:23.944 - Thread: 1 -> Console compatibility: No
2022-06-27 18:02:24.757 - Thread: 1 -> MyScriptManager.LoadData() - START
2022-06-27 18:02:24.821 - Thread: 1 -> Error: Error during loading session:System.ArgumentNullException: Value cannot be null.
Parameter name: path1
at System.IO.Path.Combine(String path1, String path2)
at VRage.Game.MyModContext.Init(ModItem modItem)
at VRage.Game.MyObjectBuilder_Checkpoint.ModItem.GetModContext()
at Sandbox.Game.World.MyScriptManager.LoadData()
at Sandbox.Game.World.MySession.PrepareBaseSession(MyObjectBuilder_Checkpoint checkpoint, MyObjectBuilder_Sector sector)
at Sandbox.Game.World.MySession.Load(String sessionPath, MyObjectBuilder_Checkpoint checkpoint, UInt64 checkpointSizeInBytes, Boolean saveLastStates, Boolean allowXml)
2022-06-27 18:02:24.822 - Thread: 1 -> Exception while loading world: Value cannot be null.
Parameter name: path1
2022-06-27 18:02:24.822 - Thread: 1 -> at System.IO.Path.Combine(String path1, String path2)
at VRage.Game.MyModContext.Init(ModItem modItem)
at VRage.Game.MyObjectBuilder_Checkpoint.ModItem.GetModContext()
at Sandbox.Game.World.MyScriptManager.LoadData()
at Sandbox.Game.World.MySession.PrepareBaseSession(MyObjectBuilder_Checkpoint checkpoint, MyObjectBuilder_Sector sector)
at Sandbox.Game.World.MySession.Load(String sessionPath, MyObjectBuilder_Checkpoint checkpoint, UInt64 checkpointSizeInBytes, Boolean saveLastStates, Boolean allowXml)
at Sandbox.Game.World.MySessionLoader.LoadDedicatedSession(String sessionPath, CancelToken cancelToken, Action afterLoad)
at Sandbox.MySandboxGame.InitQuickLaunch()
2022-06-27 18:02:24.822 - Thread: 1 -> MySandboxGame.Initialize() - END
2022-06-27 18:02:24.823 - Thread: 1 -> Timer Frequency: 10000000
2022-06-27 18:02:24.823 - Thread: 1 -> Ticks per frame: 166667
2022-06-27 18:02:24.823 - Thread: 1 -> Exiting..
Full log: SELog.log
Have you found a fix?
Sadly not, but I haven't really tried since then. It might be worth a try to update the wine-version of the container, but I haven't found the time for that yet.
Hmm, maybe. I tried updating the dll files and while it fixes the server running on my windows machine, the one running through this docker container now gives me a new error about there being no connection to steam possible, so I'm still stuck downloading mods. What have you done instead of running the server on debian, have you instead just bought a server online?
Oh, I got it to work. The other error about downloading mods was caused by a mistake in my config. Updating the dll's as mentioned here worked!
Nice, thanks a lot! This also fixed my problems.
I think I stumbled upon this solution in my initial debugging, but dismissed it as being windows specific.
Hey man what was the mistake? Getting a similar issue
Reading that aforementioned thread
Dalten • 2 months ago solution found. keen you will need to hotfix 6 steam dll's in the DedicatedServer64 folder. In an updated copy of SteamCMD "C:\steamcmd\steamapps" in my case, the 6 dll's below need to be copied into the DedicatedServer64 directory, overwriting the older files.
steamclient.dll
steamclient64.dll
tier0_s.dll
tier0_s64.dll
vstdlib_s.dll
vstdlib_s64.dll
Thanks Nevcairiel for the workaround
Nah I mean with SteamCMD claiming no connection. I've done the DLL change & while I can get it to work on windows without an issue my linux server does not agree
What about this?
https://developer.valvesoftware.com/wiki/SteamCMD#Login_Failure:_No_Connection
What about this?
https://developer.valvesoftware.com/wiki/SteamCMD#Login_Failure:_No_Connection
Haven't tried that but I also have very little idea of how to actually do it with pterodactyl. All I know is prior to updating the DLLs I was able to connect (and fail to download) and now I can't
What about this? https://developer.valvesoftware.com/wiki/SteamCMD#Login_Failure:_No_Connection
Haven't tried that but I also have very little idea of how to actually do it with pterodactyl. All I know is prior to updating the DLLs I was able to connect (and fail to download) and now I can't
The workaround for me was to just let the server keep running. Eventually, it figures itself out and downloads the mods. It doesn't take long, but it does take a few retries before it finally settles in.
Is there a way to change the image or change the docker scripts (I'm a complete newb) so that the DLL fix is in the code? I have a local repository clone and whenever I edit the entrypoint.bash
I can't seem to get the image to contain my edits. Are the entry point files baked into the image when I use docker compose
?
The entry points are put in the container when the container is built. You can add a build section to your docker-compose.yml like here https://docs.docker.com/compose/compose-file/build/, and then run docker-compose build, then ./start. That should get you running with all your local changes. You will be replacing the image definition with the build definition in the docker-compose.yml.
Another option is to use volume mounts to replace the entry point scripts. This way may be a little faster to iterate if your testing something.
0@snake space-engineers-dedicated-docker-linux$ docker-compose build
se-server uses an image, skipping
I got "uses an image" errors when trying to build using master @174d1a8
--- a/entrypoint-space_engineers.bash
+++ b/entrypoint-space_engineers.bash
@@ -1,5 +1,13 @@
#!/bin/bash
source ~/.profile
source ~/.bash_profile
+
+# temporary hack
+# fix dlls in the dedicated folder using the ones that come from the desktop SE client
+# because of a downloading issue (that should in an ideal world be resolved some day)
+cp /appdata/space-engineers/SpaceEngineersDedicated/steamclient64.dll /appdata/space-engineers/SpaceEngineersDedicated/DedicatedServer64/steamclient64.dll
+cp /appdata/space-engineers/SpaceEngineersDedicated/vstdlib_s64.dll /appdata/space-engineers/SpaceEngineersDedicated/DedicatedServer64/vstdlib_s64.dll
+cp /appdata/space-engineers/SpaceEngineersDedicated/tier0_s64.dll /appdata/space-engineers/SpaceEngineersDedicated/DedicatedServer64/tier0_s64.dll
+
cd /appdata/space-engineers/SpaceEngineersDedicated/DedicatedServer64/
env WINEARCH=win64 WINEDEBUG=-all WINEPREFIX=/wineprefix wine /appdata/space-engineers/SpaceEngineersDedicated/DedicatedServer64/SpaceEngineersDedicated.exe -noconsole -path Z:\\appdata\\space-engineers\\SpaceEngineersDedicated -ignorelastsession
Ah, you'll have to destroy the existing container with docker compose down first iirc
Thanks for your help! pleasure working with you as always
The fix to get the patch inside the image was to stop and rm the container by running docker-compose down
Then change the docker-compose.yml
file to include the line:
services:
se-server:
+ build: .
image: mmmaxwwwell/space-engineers-dedicated-docker-linux:latest
container_name: space-engineers-dedicated-docker-linux
restart: unless-stopped
Finally, run the docker-compose build
and it creates a new image
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mmmaxwwwell/space-engineers-dedicated-docker-linux latest d8162ae64176 10 minutes ago 4.02GB
mmmaxwwwell/space-engineers-dedicated-docker-linux <none> f4ba500786aa 11 months ago 4.02GB
Now, addressing the issue as it was written, and the original author's message about "Logging off Steam...", just let the server settle and it will eventually connect. I usually run the ./start
script in this repository, and walk away. I think there's a restarting algorithm in the background that keeps trying if it's not up yet. I walked away and got some coffee and my SE server was up.
It looks like the issue you were encountering has been resolved, and a new one for downloading the mods has replaced it. I have pushed a fix to the v2 branch, please test and re-open or open a new issue if you are still having problems.