Zomboid

J'ai réalisé un script bash permettant de maintenir facilement un serveur Project Zomboid.
Rien de sorcier mais quand bien même ce script vous aidera à démarrer, stopper, sauvegarder, mettre à jour et reset votre serveur avec quelques commandes.

Par commodité et pour permettre à d'autres de le fork à leur guise, je l'ai posté sur Github, non pas sur le Gitlab de Nefald. Le script est sous licence GNU GPLv3

Github : https://github.com/Hiobi/Zomboid-script

Installation

Téléchargez zomboid.sh et placez a priori n'importe où, du moment ou lors de la configuration vous indiquiez les chemins absolus. La bienséance voudrez que vous le placiez à la racine du home de votre utilisateur, faisant tourner steam (par exemple /home/steam/).

Par convention, j'ai indiqué dans les lignes de configuration que votre utilisateur s'appelait steam et que vous aviez laissé installé tel quel Project zomboid par Steamcmd sans changer le répertoire par défait. Modifiez à votre convenance.

Configuration

Pour utiliser le script vous devrez configurer un temps soit peu celui-ci, entre autres les lignes ci-dessous:

# Set variables
## Steamcmd path; /home/steam/steamcmd
STEAM="/home/steam/steamcmd"

## Zomboid install path (in steamcmd?); /home/steam/steamcmd/zomboid
INSTALL="/home/steam/steamcmd/zomboid"

## Zomboid data path (settings and saves); /home/steam/Zomboid
DATA="/home/steam/Zomboid"

## Which IP listening?
IP="0.0.0.0"

## Set secretly your adminpassword
ADMINPASS="myawesomepassword"
paramètredescriptionpar défaut
STEAMIndiquez le chemin absolu de là où est installé steamcmd/home/steam/steamcmd
INSTALLIndiquez le répertoire d'installation de zomboid, par défaut celui-ci se trouve dans celui de steamcmd/home/steam/steamcmd/zomboid
DATAIndiquez le chemin absolu du répertoire (Zomboid) contenant les sauvegardes des joueurs, de la map, la base de données et la configuration. /home/steam/Zomboid
IPdéfinissez l'IP sur laquelle le serveur écoutera0.0.0.0
ADMINPASSWORDLe mot de passe admin qui vous permettra d'utiliser les accès admin depuis la console du jeumyawesomepassword

Commandes

nomcommandedescription
start./zomboid.sh startdémarrage de votre serveur
stop./zomboid.sh stoparrêt de votre serveur
restart./zomboid.sh restartredémarrage de votre serveur
save./zomboid.sh savesauvegarder votre serveur
status./zomboid.sh statusvérifier si votre serveur est en ligne ou non
update./zomboid.sh updatemettre à jour votre serveur
reset./zomboid.sh resetwipe votre serveur; les données de la carte et des joueurs sont reset

A propos du wipe/reset

Les serveurs Zomboid ne sont pas des bestioles comme les autres, sur Rust par exemple il est aisé de wipe un serveur en supprimant la carte et les progressions de chacun des joueurs. Sur zomboid, ça semble différent. Les données sont conservées à la fois par le serveur et les clients.

Dans le fichier de configuration Zomboid/Server/servertest.ini il existe une ligne nommée ResetID=******** qui attribue à la partie en cours une identité propre, si vous supprimez celle-ci, les joueurs lors de leur prochaine connexion seront forcés de supprimer les données de la carte et de les re-télécharger depuis le serveur.

Dans mon script je prends soin d'éditer la ligne ResetID en veillant à attribuer à chaque exécution de la commande ./zomboid.sh reset une ID aléatoire à 8 chiffres.

sed -i "/ResetID/c\ResetID=$(shuf -i 100000000-999999999 -n 1)" $DATA/Server/servertest.ini

Les données de joueurs sont conservées dans le fichier map_p.bin, elles sont supprimées côté serveur avec la commande ./zomboid.sh reset; côté client ces fichiers ne sont pas supprimés lors d'un reset et il n'est pas possible pour le serveur de faire en sorte que les clients les supprime lors de leur connexion.
Les joueurs conserveront donc tout de même leur personnage, sa progression et son stuff ainsi que les traces d'activités des joueurs sur la carte.

Pour faire un wipe en bonne et dû forme, vos joueurs devront supprimer leur données locales, notamment donc le fichier map_p.bin, sans cela ils conserveront les caractéristiques du personnage développé sur votre serveur (stuff, expérience, etc).

Par exemple sur GNU/Linux ils devront supprimer le répertoire local /home/USER/Zomboid/Saves/Multiplayer/SERVER_PORT_USER.

Le script supprime tout bonnement le répertoire /Zomboid/Saves/Multiplayer/servertest contenant toutes les données de la map et des personnages. Il s'agit d'un hardreset mais les joueurs devront de leur côté supprimer aussi leur répertoire.

Détails

  • Supprimer tous les fichiers zombie_X_Y.bin fera en sorte de reset leur nombre et leur position initiale.
  • Supprimer map_t.bin va reset l'heure du serveur.
  • Supprimer map_meta.bin va reset les alarmes. Cela supprime également toutes les zones douanières qui empêchent trop de pêche / butinage.
  • Supprimer reanimated.bin supprimera les zombies de vos joueurs.

Amusez-vous bien !
Et merci à Pym pour le coup de patte sur le regex. <3

Liens