Outils pour utilisateurs

Outils du site


admin:services:minetest:mineclone2

Ceci est une ancienne révision du document !


Mineclone2

Mineclone2 est clone de Minecraft.

C'est un jeu sous licence GPLv3, développé à partir du le moteur de jeu Minetest, sous licence LGPL 2.1.

Mise à jour

Il peut arriver qu'une version plus récente de Mineclone2 exige également une mise à jour de Minetest. Dans notre cas, ce n'est pas toujours une chose possible, donc il faut prévoir la possibilité de revenir en arrière si besoin. Pour permettre cela, nous utilisons la branche git locale nommée chapril-ludo et on créé localement un tag sur la révision git actuelle avant chaque tentative de mise à jour.
cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2/
git tag chapril-ok-$(date +%F) # pour un éventuel retour en arrière
git fetch --all
git pull origin master
systemctl restart minetest-server@30009-mineclone2.service

Il faut maintenant tester un minimum. Si jamais un bug bloquant survient, on peut revenir à la version précédente grâce au tag qu'on avait créé.

La procédure décrite çi-après est “sale”, mais elle fonctionne. Si quelqu'un connait une façon plus propre de procéder, ça m'intéresse :)
cd /srv/minetest.chapril.org/home/.minetest/games/mineclone2/ # si jamais vous étiez parti ailleurs :)
git tag | grep chapril # pour retrouver votre tag, par exemple "chapril-ok-2023-01-15" ici
git checkout chapril-ok-2023-01-15 # on se retrouve alors dans un état temporaire "HEAD detached at chapril-ok-2023-01-15"
git branch -m chapril-ludo chapril-ludo-broken # on met de côté l'ancienne branche
git switch -c chapril-ludo # on recréé la branche
git branch -D chapril-ludo-broken # on jette l'ancienne
systemctl restart minetest-server@30009-mineclone2.service

Installation sous Debian Bullseye

Mineclone2 étant basé sur minetest, on commence par installer ce dernier :

apt install minetest-server

Par défaut, un service minetest est alors lancé sur le port TCP/30000. Son fichier de configuration est /etc/minetest/minetest.conf. Mais nous ne touchons pas à ce service. Au lieu de ça, nous allons profiter du mécanisme de templates systemd (plus d'infos dans le fichier /usr/share/doc/minetest-server/README.Debian) pour créer service à part, qui écoutera sur le port TCP/30009. Pour cela, nous créons le fichier /etc/minetest/30009-mineclone2.conf contenant ceci :

port = 30009
server_name = Chapril - Mineclone 2 [FR]
server_description = Un univers inspiré de Minecraft
server_address = minetest.chapril.org
motd = Bienvenue sur MC2, un clone de Minecraft basé sur le moteur Minetest. Pour les inconditionnels de Minecraft.
 
map-dir = /srv/minetest.chapril.org/instances/30009-mineclone2
 
# À activer lorsque le service sera prêt à être ouvert au public
#server_announce = true

Notre service pourra alors être lancé/stoppé/redémarré/surveillé comme ceci :

systemctl start minetest-server@30009-mineclone2.service
systemctl stop minetest-server@30009-mineclone2.service
systemctl restart minetest-server@30009-mineclone2.service
systemctl status minetest-server@30009-mineclone2.service

Mais pas tout de suite, car pour le moment il n'est pas fonctionnel du tout.

Il faut préparer le dossier /srv/minetest.chapril.org/instances/30009-mineclone2/ qui est mentionné dans la configuration mais qui n'existe pas encore.

mkdir /srv/minetest.chapril.org/instances/30009-mineclone2/
chown Debian-minetest:/srv/minetest.chapril.org/instances/30009-mineclone2/

Dans ce dossier, il faut au minimum un fichier world.mt, qui définit notamment le type de jeu (ici Mineclone2) et les types de bases de données à utiliser (database backends). Chez chapril, on a choisi d'utiliser des bases de données postgresql pour les 3 bases : map, players et authentication.

gameid = mineclone2

backend = postgresql
pgsql_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-world-mineclone2

auth_backend = postgresql
pgsql_auth_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-auth

player_backend = postgresql
pgsql_player_connection = host=127.0.0.1 port=5432 user=minetest password=common-outrank-cruelly dbname=minetest-users-mineclone2

creative_mode = false
enable_damage = true
TODO à documenter :
  • créer les bases de données pgsql
  • récupérer le code du jeu mineclone2 dans /srv/minetest.chapril.org/home/.minetest/games/mineclone2/
    • avec une branche chapril-ludo

Création des bases de données sous postgres :

su - postgres
psql
CREATE DATABASE "minetest-auth" WITH OWNER minetest;
CREATE DATABASE "minetest-users-ctf" WITH OWNER minetest;
CREATE DATABASE "minetest-users-mineclone2" WITH OWNER minetest;
CREATE DATABASE "minetest-users-test" WITH OWNER minetest;
CREATE DATABASE "minetest-world-ctf" WITH OWNER minetest;
CREATE DATABASE "minetest-world-mineclone2" WITH OWNER minetest;
CREATE DATABASE "minetest-world-test" WITH OWNER minetest;
admin/services/minetest/mineclone2.1688295047.txt.gz · Dernière modification : 2023/07/02 10:50 de obitanz