ich777 / docker-steamcmd-server

Simple Dockerfile that installs steamcmd and a selected game server
119 stars 95 forks source link

Palworld - Prevented from transfering save to container due to steamclient.so: cannot open shared object file: No such file or directory #52

Closed Maltahl closed 7 months ago

Maltahl commented 7 months ago

Hi i recently went from a barebone non persistent data setup with SteamCMD to your container and wanted to try out your container setup as it seems more mature and easy to have in upkeep.

Anywho i stomped upon a problem with: steamclient.so: cannot open shared object file: No such file or directory this prevents Palworld from giving correct access to players when copying a save as mentioned by: https://tech.palworldgame.com/dedicated-server-guide#linux

i also found that the server keeps looking for srcds_run to run instead of PalServer.sh so i had cp PalServer.sh to srcds_run inside /mnt/user/appdata/palworld

but to fix steamclient.so problems I had to resort to this:

boot container as docker compose

version: "3.0"
services:
  palworld:
    image: ich777/steamcmd:latest
    restart: unless-stopped
    container_name: palworld
    environment:
      - GAME_ID=2394010
      - GAME_NAME=PalServer
      - GAME_PORT=8211
      - GAME_PARAMS=-players=32 -useperfthreads -NoAsyncLoadingThread -UseMul-ServerName=Servernamehere -AdminPassword=passwordofyourchoice
      - UID=99
      - GID=100
    volumes:
      - /mnt/user/appdata/steamcmd:/serverdata/steamcmd
      - /mnt/user/appdata/palworld:/serverdata/serverfiles

    network_mode: "bridge"

    ports:
      - "8211:8211/tcp"
      - "8211:8211/udp"

Then wait for container to boot, download and setup game.

Now enter the container, swap to steam as user run this to get ".steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory" away

mkdir -p ~/.steam/sdk64/
./steamcmd.sh +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/

exit container and stop it, not destroy.

Then remove the folder "Pal" inside /mnt/user/appdata/palworld

copy over backup from PalServer

Profit.

It might be an idea to add ./steamcmd.sh +login anonymous +app_update 1007 +quit

to the build to avoid issues with other game containers.

ich777 commented 7 months ago

Anywho i stomped upon a problem with: steamclient.so: cannot open shared object file: No such file or directory

Please give me your full log output, this is a common miss-conception because nobody reads on, if you would actually read on it loads fine from the directory that you've already mentioned.

grafik (/serverdata is the home directory in this case)

  • UID=99
  • GID=100

Are you sure that your values there are correct?

It might be an idea to add ./steamcmd.sh +login anonymous +app_update 1007 +quit

As said above that's not necessary because I copy the "correct" steamclient.so that ships with the game over to this directory: ~/.steam/sdk64/see this code snippet.

Maltahl commented 7 months ago

Yes the logs indicated that it was not an issue but when trying to connect to the server any progression on users were gone but the world remained intact hence after the "fix" and redid the copy work we were able to see progression from the old save.

I have no doubt it is normally not a problem (had same error message without issues on a pure steamcmd container and setting up palworld from start ) but exactly in this case it was.

Could it be an outdated version you are shipping due to compatibility issues ?

ich777 commented 7 months ago

Could it be an outdated version you are shipping due to compatibility issues ?

I don‘t think so because not I ship it instead this is the steamclient.so that ships with the game itself.

However I have reports on the Unraid forums that a transfer from a save file is indeed working.

ich777/steamcmd:latest

Oh sorry, now I see your issue. You are using the wrong tag. Please open up the different branches in my repository. The latest tag won‘t work with Palworld you habe to actually use the tag palworld.

I have also a run example here, of course if you are using the correct branch (from GitHub) and the correct tag (from DockerHub).

Please also note that I recommend editing the configuration file and not append too much to the variables to keep it clean.

The correct tag will work right OOB with the run example and do everything for you.

Another observation is that you‘ve also forwarded the TCP port, that is not necessary only UDP is needed for Palworld.

Maltahl commented 7 months ago

Ahh doh, thanks for pointing it out, tag of release, and TCP port ( old habit).

Thanks for the good job on the containers and being helpful all around.