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ètre | description | par défaut |
---|---|---|
STEAM | Indiquez le chemin absolu de là où est installé steamcmd | /home/steam/steamcmd |
INSTALL | Indiquez le répertoire d'installation de zomboid, par défaut celui-ci se trouve dans celui de steamcmd | /home/steam/steamcmd/zomboid |
DATA | Indiquez 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 |
IP | définissez l'IP sur laquelle le serveur écoutera | 0.0.0.0 |
ADMINPASSWORD | Le mot de passe admin qui vous permettra d'utiliser les accès admin depuis la console du jeu | myawesomepassword |
Commandes
nom | commande | description |
---|---|---|
start | ./zomboid.sh start | démarrage de votre serveur |
stop | ./zomboid.sh stop | arrêt de votre serveur |
restart | ./zomboid.sh restart | redémarrage de votre serveur |
save | ./zomboid.sh save | sauvegarder votre serveur |
status | ./zomboid.sh status | vérifier si votre serveur est en ligne ou non |
update | ./zomboid.sh update | mettre à jour votre serveur |
reset | ./zomboid.sh reset | wipe 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
- theindiestone.com - commentaire de EasyPickins (développeur PZ) à propos de la commande
softreset
- theindiestone.com - à propos du wipe/soft reset
- steamcommunity - Zomboid - détails à propos des fichiers à supprimer pour un wipe complet