Dopo mesi di lockdown in cui si sono incontrati gli amici solo tramite videoconferenza (ovviamente sul proprio server jitsi), viene voglia di interagire di più, e cosa c'è di meglio che farlo in una comoda sala da té costruita su dei pioppi, o sul fondo di una miniera scavando ferro, oro, diamanti e MESE?

La sala da tè di sera

MESE? sì, sto parlando del minerale originale del mondo di Minetest, un gioco libero della stessa famiglia del proprietario Minecraft, in cui si interagisce in vari modi con un mondo composto da cubi di materiale vario.

Uno dei punti di forza di minetest è la varietà di mod disponibili (e la facilità con cui se ne possono scrivere di personalizzati, usando il linguaggio lua), per cui l'esperienza di gioco può essere resa molto diversa a seconda dei gusti dei partecipanti: un server può offrire uno spazio per costruire strutture, un'altro un mondo pieno di pericoli da esplorare ed un'altro ancora può dare spazio a giocatori che vogliono combattere tra di loro o contro mostri.

In questo articolo ci concentreremo soprattutto sulla prima opzione, ma dando indicazioni su cosa modificare se si preferiscono le altre due (o varie combinazioni).

Installazione

Partiamo come al solito da un'installazione di debian su una macchina che possa essere raggiunta da internet (la solita vps, o un SBC in casa con un router opportunamente configurato); ad aprile 2021 possiamo scegliere se usare buster (l'attuale stable) più buster-backports oppure bullseye, la prossima stable di imminente rilascio.

Installiamo quindi il server minetest ed altri strumenti utili:

# apt install -t buster-backports minetest-server minetestmapper

e poi la selezione di mod che vogliamo usare, ad esempio:

# apt install -t buster-backports \
      minetest-mod-basic-materials minetest-mod-craftguide \
      minetest-mod-homedecor minetest-mod-unifieddyes \
      minetest-mod-moreblocks minetest-mod-moreores

Quindi passiamo a configurare il nostro server modificando il file /etc/minetest/minetest.conf: di sicuro vogliamo modificare nome (server_name), descrizione (server_description) e volendo il messaggio mostrato al collegamento (motd), e possiamo scegliere se vogliamo annunciare il server sull'elenco comune dove chiunque possa giocarci (per iniziare, o comunque se si vuole giocare solo con i propri amici, conviene lasciare server_announce = false) e se impostare una password comune per poter entrare nel server (default_password).

Decidiamo poi, nello stesso file, che tipo di esperienza di gioco vogliamo avere, impostando creative_mode (true per far sì che i giocatori abbiano a disposizione tutti i materiali senza doverli andare a cercare, false per la modalità classica in cui li si deve trovare e scavare), enable_damage (utile se si vuole rendere pericolosa l'esplorazione o si vuole fare combattimento) ed enable_pvp (per il combattimento tra giocatori).

Inoltre in default_privs impostiamo che privilegi devono avere di default i giocatori: il minimo consueto è interact, shout, ma in un mondo incentrato sulla costruzione più che sull'esplorazione può essere utile aggiungere anche fly, fast, home. La wiki di minetest documenta i privilegi a disposizione.

Infine, impostiamo il nome di un giocatore che avrà i privilegi di admin, nella variabile name.

A questo punto passiamo nella directory del mondo, /var/games/minetest-server/.minetest/worlds/world/ e configuriamo quali mod vogliamo abilitare in world.mt; può essere necessario fare un po' di prove, dato che le dipendenze non vengono abilitate automaticamente, ma ad esempio questa è una combinazione funzionante con i mod installati prima:

load_mod_unifieddyes = true
load_mod_moreores = true
load_mod_moreblocks = true
load_mod_plasmascreen = false
load_mod_lavalamp = false
load_mod_building_blocks = false
load_mod_homedecor_3d_extras = false
load_mod_lrfurn = false
load_mod_homedecor = true
load_mod_inbox = false
load_mod_basic_materials = true
load_mod_itemframes = false
load_mod_computer = false
load_mod_craftguide = true
load_mod_currency = true
load_mod_fake_fire = false
load_mod_homedecor_i18n = true

Infine, riavviare minetest-server per applicare le modifiche:

# service minetest-server restart

Primi passi nel mondo

A questo punto, sul proprio pc, installare il gioco minetest (in debian il pacchetto minetest e collegarsi al server usando il nome utente che si è selezionato come admin, ricordandosi di cambiare la password (con il comando /setpassword) appena entrati.

Dopo aver esplorato un po' si può scegliere un posto da cui partire con la costruzione: lo si può impostare come propria “casa” usando il comando /sethome, ma può anche valere la pena di impostarlo come punto di partenza per tutti i giocatori: premere F5 per abilitare la modalità di debug e scoprire le coordinate in cui ci si trova, quindi tornare sul server, modificare static_spawnpoint in /etc/minetest/minetest.conf e riavviare nuovamente il server.

Ulteriori comandi utili sono documentati sulla wiki di minetest.

Ulteriori migliorie

Mappa del mondo

Il comando /usr/games/minetestmapper può essere usato per generare una mappa generale di tutto quanto è mai stato esplorato; può essere una buona idea aggiungere a crontab una riga come:

05 8,16,0 * * * /usr/games/minetestmapper -i /var/games/minetest-server/.minetest/worlds/world/ -o /var/www/minetest/world_map.png --drawscale

per rigenerare la mappa ogni 8 ore, lasciandola in una directory dove può essere servita da un eventuale server web presente sulla macchina.

“backup”

Per avere una forma minimale di backup, possiamo sfruttare git: creiamo un repository nella directory del mondo:

# cd /var/games/minetest-server/.minetest/worlds/world/
# git init

e poi impostiamo a crontab un commit automatico quotidiano:

14 4 * * * cd /var/games/minetest-server/.minetest/worlds/world/ ; git add . ; git commit -m 'daily commit'

Da un altro computer facciamo poi un clone di questo repository, e mantenendo aggiornato quel clone potremo recuperare il mondo in caso di catastrofi.

Come proseguire

A questo punto si è pronti per passare la password del server ai propri amici ed iniziare a giocare, il che probabilmente vuol dire che non si avrà più tempo per ulteriori configurazioni :)

Se invece si riesce a mantenere l'autocontrollo, queste sono alcune idee di migliorie su cui si può lavorare.

Ulteriori mod

I mod disponibili per minetest-sono estremamente numerosi e vari: la maggior parte viene pubblicata sul forum di minetest, ma una buona selezione di mod scelti per la loro qualità e affidabili può essere ottenuta cercando i mod che sono stati pacchettizzati per debian con il comando:

$ apt search minetest-mod

l'elenco è troppo lungo per parlarne in questo articolo, ma una buona idea può essere quella di installarli localmente sul proprio pc, provarli su un mondo single player e installare sul server ciò che si è trovato particolarmente interessante.

In alternativa, se tra i propri amici ci sono dei giocatori di minetest, di sicuro avranno un elenco di mod che trovano interessanti da suggerire.

Più mondi sullo stesso server

Il pacchetto debian di minetest-server è predisposto per poter gestire più mondi: per farlo basta creare una nuova configurazione in /etc/minetest/<nome>.conf e far partire il server con systemctl start minetest-server@pvp.service; sarà necessario usare una porta diversa, e ulteriori dettagli si possono trovare nel file /usr/share/doc/minetest-server/README.Debian installato dal pacchetto del server.

Backend più adatti a server affollati

Il backend di default di minetest è sqlite3, che non è in grado di scalare e supportare server con molti utenti: se si pensa di averne bisogno sono disponibili ulteriori backend come redis o postgresql, la cui configurazione è spiegata sempre sulla wiki di minetest.

Ovviamente, in questo caso non sarà più possibile usare git per effettuare un backup del mondo, ma sarà necessario avere una strategia di backup più tradizionale.

Conclusione

Qui avrebbe dovuto esserci una conclusione, ma chi doveva scriverla era impegnato a giocare…

Il tunnel sotto la montagna