Backup du world et un mod

Oui, clairement, je suis en train de mettre à jour les couleurs, ça va s’arranger :slight_smile:

Petite nouveauté: les POI sur http://plop.me/fmt
Merci de me signaler les manques et les erreurs.

3 Likes

Très sympa :slight_smile: C’est un sacré boulot, par contre, de tout répertorier comme ça (et l’ajout de screen). Mais ça donne une bonne vue de ce qui est fait, et ça donne envie de voyager :slight_smile:

Coucou.
Alors :
Le spawn n’est pas de moi, la fabrique à objets non plus.
Par contre, le tetris géant, c’est de moi.le Yin Yang Rose et Bleu est de moi.

Le chantier d’un campus universitaire est de la Classe de Beurt.

1 Like

Hello,

À la base, le Spawn est une construction de Andrey01 (La fontaine en face aussi).
farfadet46 a ajouté les ailes.
La terrasse a été ajoutée ensuite (Beurt ? ).

@Peppy je n’ai pas fait de terrasse…

OK, Beurt, c’est quelqu’un d’autre alors …

En tout cas, elle est bien pratique :
J’y envoie les joueurs inactifs qui stagnent en bas du Spawn :smiley:

1 Like

Hello les gens,
Moi aussi très intéressé par une carte interactive, j’ai voulu tester. Ci-après le retour d’expérience.

Minetestmapper : @Framasky l’ayant compilé sur le serveur, j’ai pu tester avec le fichier colors.txt de VanessaE.
Trop gourmand, je me suis d’abord fait jeter parce que j’ai tenté de générer une carte complète (sans spécifier de geometry, dimensions retournées : 61872x61872).
Je me suis ensuite rabattu sur des cartes de 4000x4000, réassemblées à la mano. Résultat, c’est très chiant, ça reste incomplet sauf à scruter zone par zone et j’arrivais déjà à une image unique de grosso-modo 12000x10000 et 50Mo.
Du coup j’ai essayé d’agrandir à nouveau la géométrie (-10000:-10000+20000+20000) et minetestmapper, après plusieurs minutes, m’a renvoyé une carte que je suppose complète de 14000x16000 et 50Mo environ encore.
Pour le résultat, c’est là : https://framadrop.org/r/M76R98aBDl#Ej4yNcHsPbJdXdSxy5CKTN2WG85wgPzXQqHbsjQBZ8A=
Et la liste des noeuds inconnus : https://framabin.org/?eedb30c61fdd6fc1#+wZjqJUT3DGeghEb56f0mxAMWz5KurqsE+Ora6lwtM8=

Conclusion : c’est faisable mais pas vraiment pratique pour une utilisation web.

MTSatellite : rhaaa, ça a l’air sympa.
J’ai installé vite fait un serveur chez moi en reprenant les caractéristiques du monde Framinetest et puis je me suis penché sur mtsatellite.
Compilation : l’auteur prévient, c’est pas très propre et c’est vrai, notamment l’ajustement du PATH.
Utilisation : après mettre encore battu avec le PATH, j’ai réussi à lancer tout le bouzin
mtdbconverter => ma base est toute petite mais ça a l’air d’être rapide
mtredisalize => lancement ok
mtseeder (prégénération des couches) => là c’est pas très rapide mais ça balaie toute la carte apparemment
mtwebmapper => après récupération des [fichiers statiques] (https://bitbucket.org/s_l_teichmann/mtsatellite/src/default/cmd/mtwebmapper/web/) et quelques déboires sur l’emplacement des couches, ça marche et c’est joli. Autrement dit, j’arrive au résultat inital de @talou.
Allez hop, on configure et on relance le serveur minetest !
Et là c’est le drame : il ne redémarre pas.
La raison en est simple : les paquets minetest de Fedora sont compilés sans le support Redis.
Et après vérification, ceux des backports de Jessie (installés sur le serveur Framinetest) non plus.

Conclusion : carte en temps réel pas faisable en l’état. Il faudrait recompiler le serveur minetest avec le support Redis pour pouvoir se connecter au pseudo-serveur mtredisalize (avec toutes les incertitudes qu’il peut y avoir dessus).
Il est par contre possible de se rabattre sur une génération quotidienne par exemple. Mais ça implique de couper le serveur minetest, de relancer mtdbconverter puis mtredisalize puis mtseeder puis de relancer le serveur minetest. Un poil lourd.

À titre d’info, le fichier map.sqlite fait actuellement 1.8 Go (là je parle bien de taille et pas de langage :stuck_out_tongue_winking_eye: ) et le rollback.sqlite fait le double. J’ai peur que le traitement complet du fichier ne prenne un peu de temps même si le serveur est costaud.

Quelqu’un sait si on peut faire un snapshot d’une base SQLite ? Ça pourrait servir à la fois pour le backup et pour la mise à jour de mtsatellite (en travaillant sur une copie de la base et donc en laissant le serveur tourner).

PS pour info : la team MinetestForFun (dont fait partie un certain farfadet46) a mis en place des serveurs avec carte en temps réel => https://xorhub.com/fr/

2 Likes

Retours d’expériences : Jour 2

Pour une raison inconnue, je me suis réveillé ce matin toujours avec cette idée de carte dans la tête. Et accessoirement de backup.
Ça me travaillait depuis hier mais connaissant @Framasky je me doutais qu’il avait pris une machine un peu velue.
J’avais donc vérifié les specs du serveur hier et bing : 4 coeurs, 8 threads, 64 Go RAM mais surtout des SSD !!!
Je l’avoue, j’avais une sale idée en tête et mes calculs débridés m’avaient fait passer une mauvaise nuit :smiling_imp:

Donc, direct, je me connecte sur framinetest en espérant qu’il n’y ait personne pour mettre mon plan en action.
Pas de bol, y’avait quelqu’un ! Encore un coup de Murphy !
Mais une fois que j’ai chopé un os à ronger, je ne le lâche plus. Je suis donc retourné régulièrement dans la matinée sur le serveur jusqu’à trouver un moment où il n’y avait personne de connecté.
Et bing ! Vers 10h30, le moment tant attendu arrive.
Je me jette sur mon clavier : SSH > arrêt du service framinetest > copie du fichier map.slite > moment de solitude > relance du service. Et hop, ni vu ni connu.

Durée de l’opération (qui explique mon moment de solitude tellement j’ai été bluffé) : euh, environ 10 secondes. Vraiment ni vu ni connu.
En pratique la copie du fichier de 1.9Go a du durer 2 secondes, 3 max. Le SSD c’est bon, mangez-en (même si les miens vont moins vite quand même).

Première conclusion : à cette vitesse, même s’il faut locker la base pendant un backup quotidien, ça sera à peine perceptible pour les utilisateurs. Et ça c’est la première bonne nouvelle de la journée. Un cron entre 4 et 5h du mat devrait nous permettre de faire un backup quotidien de la base pour une éventuelle mise à dispo. J’ai la commande kivabien sous la main. Elle nécessite l’installation du paquet sqlite3 sur le serveur et c’est tout. Testé chez moi ça prend 21s, qui est le temps auquel je m’attendais.


À ce stade, j’étais tout émoustillé.

Bon, il m’a fallu une bonne heure pour le récupérer chez moi. Même après bzippage, le fichier faisait encore environ 950Mo et j’ai pas une grosse connexion.
Comme j’avais déjà compilé MTsatellite, j’ai converti la map avec mtdbconverter (3’30" environ), “mis en place” avec mtredisalize et lancé la génération avec mtseeder (10’ pour toute la map).
Et j’ai découvert pour la première fois la totalité de la map, même si j’ai eu pas mal de blocs non reconnus.

Ça vous met l’eau à la bouche ?
Bin moi aussi donc j’ai été manger :imp:
À moins que ça ne soit “je suis allé manger” ?

Sascha L. Teichmann, l’auteur de mtsatellite propose aussi mtautocolors pour générer le fichier colors.txt correspondant au serveur.
Et hop, je compile, je mets tout bien en place sur mon serveur local (même la map, ce qui est inutile mais je ne l’ai vu qu’après ; par contre faut pas louper le mod supplémentaire à installer) et je lance la génération. Oups, trop vite j’ai oublié un truc.
Je corrige la commande et je relance.
Quelques secondes plus tard, j’ai mon fichiers colors.txt qui est sensé correspondre exactement à mes besoins.
Il y a quand même quelques avertissements lors de la génération du fichier pour le mod pipeworks et pour des doublons.

“Remise en place” de mtredisalize et relance de mtseed avec le nouveau fichier. Il faut toujours 10 minutes :upside_down:

Pas d’avertissements donc ça a du bien se passer. Vérification : ah ouais, ça prend quand même pas loin de 120Mo.
Vérification dans un navigateur web : tiens, y’a toujours des trucs étranges sur les bords des zones explorées.
Comme la carte faisait vide sans les marqueurs mis par @talou (au passage, chapeau pour le boulot), j’ai honteusement repris ce qu’il avait fait. Paf, 20 Mo d’images en plus.

Je vous déjà dit que j’avais une petite connexion ? Du coup, ça m’a pris des plombes pour uploader tout ça.
Premier essai :
Je ne veux pas pourrir un serveur Frama donc j’envoie par FTP sur une de mes pages persos Free. 140 Mo mais surtout presque 80000 fichiers !
2 heures plus tard, ça n’en est qu’à 15% et le client FTP m’annonce encore plus de 10h. J’ai craqué !!!
Passons au deuxième essai :
Compression du tout > plus “que” 90 mo > envoi de l’archive sur un serveur Frama que je connais bien.
Y’a déjà un bordel innommable dessus alors un peu plus, un peu moins :see_no_evil:
SSH > dé-tarbzippage de l’archive > vérifications > ouais, ça marche.

Mais ? Que vois-je ? J’écris, j’écris et il est l’heure d’aller manger.

À tout à l’heure pour la suite des aventures.

Et bon appétit !

1 Like

Ah, une fois repu, la vie parait plus plaisante.
Bon, le résultat de tout le post précédent est visible .
Pour ceux qui le voudrait en local, l’archive est .

Quelques idées d’amélioration au niveau de l’interface (je ne parle pas de la génération des tuiles)
Y’a du ménage à faire dans la gestion des marqueurs, notamment au niveau des images (doublons, chemins pas forcément corrects).
Avoir des couleurs différents pour les marqueurs selon le niveau.
Les sortir du fichier index.html pour faciliter les mises à jour.
Trouver un moyen de pouvoir continuer de manière participative l’énorme boulot commencé par @talou avec les marqueurs.

Bon, je vais déjà jeter un oeil à leafletjs.

@+ pour de nouvelles aventures

2 Likes

Eh ben ça se lit comme un roman!
Pas le temps d’expérimenter plus ces jours ci, étant à l’étranger, sans véritable connexion. Tu es un veinard d’avoir pu utiliser la vraie base, je suis vert.
Je n’ai pas eu d’aventure aussi palpitante de mon côté, à part d’avoir zappé la Doc de mtsatellite… Pour le web, j’ai juste utilisé les fichiers Map sur un apache. Ça permet de gérer les points d’intérêt dynamiquement en PHP. Il y a une différence importante: on renonce à un zoom sympa au dessus de 8, car mtsatellite reconstitué une image non floue. Mais ça vaut le coup d’utiliser PHP.
Quelques éléments de réflexion :

  • la copie du Map.sqlite nécessite t elle vraiment de couper le service ? Il s’agit d’une copie. Au pire il y aura quelques blocs en cours d’écriture.
  • pour réduire la taille des infos à traiter, il faut trouver un moyen de n’avoir que les blocs présents dans la partie visible du dessus. Le sous-sol ne sert à rien. Je n’ai pas vérifié si c’est ce que fait mtdbconverter.
  • pour une vraie Map en temps réel, il y a beaucoup d’intermédiaires. Au mieux on peut mettre en place un script qui met à jour le tout toutes les 12h.
  • minetestmapper est trop long pour générer les tiles, j’ai essayé, il n’est pas capable non plus de générer une Map de la dimension totale potentielle. Il faudrait générer des parties puis assembler et diviser à coup de image magick, j’ai aussi testé, c’est horriblement long. Mtsatellite fait vraiment bien le job. Mais tout n’est pas perdu pour minetestmapper dont le projet semble bouger souvent. À noter qu’il existe en python, mais beaucoup plus long encore.
  • la sauvegarde de la Map est utile si on peut non pas revenir arrière mais pouvoir lancer une version antérieure à un dommage pour générer un .we avec woldedit t le remettre en place sur le serveur principal. On l’a déjà fait avec mes petites sauvegardes incomplètes.
    Curieux de connaître la suite.

Retours d’expériences : Jour 3

Pas grand chose de nouveau si ce n’est que j’ai repris la structure de la partie web, mis à jour toutes les lib js et compagnie, fait le ménage des images en doublon, etc.
J’ai mis le lien précédent à jour et la structure est dispo là : https://framagit.org/fat115/framinetest/tree/carte_fmt/carte
Les captures vont dans un dossier captures et la map dans un dossier … map.
Je ne les ai pas uploadé sur framagit pour pas bouffer de la place pour rien.

Niveau technique :

  • Remplacement des LayerGroup par des GeoJSON (2h de perdues à cause d’un souci de casse entre leaflet 0.7 et leaflet 1.0 : GeoJson vs GeoJSON, argh)
  • Sortie de la définition des markers du fichier index.html (cf geojson.***.js)
  • Mise en place des couleurs de marqueurs différentes selon la couche (awesome-marker)
  • Remplacement des marqueurs basiques par des awesome-marker
  • Ajout de la possibilité de personnaliser les marqueurs dans le fichier GeoJSON
  • Et j’ai failli faire une énorme bourde de sécurité avec du javascript, pfiou

Principalement du cosmétique quoi, rien de bien trépidant.

Tu peux être plus précis, je suis pas sûr d’avoir tout compris. tu as généré les POI avec PHP ?

Copier des fichiers de base de données potentiellement en cours d’utilisation, c’est prendre le risque d’avoir une copie corrompue justement à cause de ces ‘quelques blocs’. La bonne façon de faire implique de s’assurer qu’il n’y a pas d’écritures au moment de la copie : soit en arrêtant le service dans notre cas, où en coupant le moteur de base de données pour faire ça avec une copie de fichiers,où - le mieux - en verrouillant les tables au moment du backup/dump.
Moi j’ai été bourrin mais la solution la plus propre c’est d’utiliser les fonctionnalités de sqlite3 pour faire un backup : il se chargera du verrouillage proprement au fur et à mesure de ses besoins.

À priori, mtdbconverter ne fait que convertir d’une base sqlite/lelveldb à une base utilisable par mtredisalize. C’est mtseeder qui traite ensuite les infos. Je ne sais pas comment il fait mais le résultat me parait bien et relativement rapide pour la totalité de la map (10 min sur mon PC de 8 ans d’age)

je plussoie, genre midi/minuit ?

C’est pas ce qu’est sensé permettre le rollback ça ?
Quoi qu’il en soit, si on veut mettre à jour la map interactive, il faudra de toute façon passer par une sauvegarde.

Bien sûr ! J’ai un petit CSV des POI qui est lu par un script php pour l’intégrer dans la page.
http://plop.me/fmt/poi.csv
Mais c’est pas mal le GEOJson, il y a moyen de reproduire les fichiers GEOJson à partir du tableau.

Je n’ai pas chronométré, mais il me semble que sur ma machine plus récente, cela dure sensiblement plus. J’ai laissé tomber l’idée de faire ça sur mon serveur web qui n’est pas fait pour ça. Mon script fait toutes les tâches nécessaires, envoie le bzip2 et le décompresse à distance pour une mise à jour les yeux fermés.
A voir si on peut encore optimiser la détection de surface.

C’est moi le bourrin, j’aurais pas tenu compte de ça, ce qui est copié, est copié… Hum

Ah mais oui, si c’est possible, c’est bien, mais il faut prévenir les joueurs, ce qui complique un peu les choses.

Le rollback nécessite de maîtriser bien les commandes, de ne pas faire d’erreurs, et ne prend pas en compte les dommages de lave d’après ce que j’ai compris. Je me trompe peut-être.

Oui et non, la sauvegarde est volumineuse. Je dirais qu’une sauvegarde quotidienne suffirait. Voir aussi pour la durée de conservation…

Retours d’expériences : Jour 4

C’est en place : https://framinetest.org/carte/
La carte date d’il y a une 1h environ.
J’ai corrigé un bug d’affichage de la coordonnée du pointeur en Y à la mano.
Pour le reste (hors images), c’est intégré au git framinetest

La carte a été générée directement sur le serveur :

  • backup de la base en-ligne (faut quand même que je comprenne pourquoi je me suis retrouvé avec une base locked 2 fois de suite)
  • plus de conversion, utilisation en direct avec mtredisalize (soi-disant moins performant, je n’ai que vu la création d’un index au lancement mais c’est juste qq secondes)
  • création des tiles avec mtseeder, le fichier colors.txt qui va bien et gestion de la transparence

Temps de traitement avec mtseeder : 2 minutes !
Contre 11 minutes sur mon PC.

Y’a plus qu’à scripter ça dans un cron et trouver un moyen d’avoir une édition collaborative des POI.

Note @Framasky : non, je n’ai pas pourri le serveur en y installant golang & co, j’ai fait ça bien proprement sur une VM toute propre et fraichement installée chez moi.

2 Likes

Super boulot @fat115 , et “roman” très intéressant à lire ! :sunglasses:

Peut-être qu’il nous faudrait mettre un lien depuis la page d’accueil Framinetest ?

@bientôt
Sangokuss

Le rollback nécessite de maîtriser bien les commandes, de ne pas faire d’erreurs, et ne prend pas en compte les dommages de lave d’après ce que j’ai compris. Je me trompe peut-être.

Si si ! Le rollback prend bien en compte les dommages de lave ! Mais il faut effectivement le manipuler avec précaution.

Merci à @fat115 pour ses explications et son travail qui complète les avancées considérables de @talou.

OK, donc c’est possible, bien !
Mais les morceaux de sauvegardes avec worldedit c’est vraiment facile à faire.

Pour info, on réfléchit à une solution pour contribuer aux POI :

  • Un formulaire pour ajouter un point, avec éventuellement une photo, modération a priori pour que tout le monde puisse contribuer.
  • Un affichage des AREAS (avec possibilité de cacher certains AREAS), grâce au JSON qui se trouve à la base du serveur.
  • Un mod qui permette de définir les POI directement dans le jeu.

@talou et @fat115,

Je pense que ce serait vraiment top si vous pouviez rédiger un post explicatif dans “Technique” (la rubrique dans laquelle nous essayons de centraliser les explications techniques). Qu’en pensez-vous ?

Sangokuss

2 Likes

Tu veux parler de la démarche pour installer MTSat ?


PS: Il est vraiment bien fichu ce logiciel de forum !

1 Like

Oui @talou , et l’utilisation de leaflet : bref, tout ce qui permet d’obtenir la superbe carte de @fat115 de A -> Z car je pense que cela intéressera beaucoup de personnes (dont les élèves, car ils représentent l’essentiel des demandes de mise en place).

EDIT : j’ai déjà plusieurs demandes via les réseaux sociaux de tuto de collègues intéressés !

Bref, une sorte de “tuto pas à pas”, un peu comme ceux que @Powi, @fat115 ou moi avons déjà rédigé :wink:
Pas d’urgence bien entendu, mais je pense vraiment que cela peut intéresser les débutants “admin Minetest”.

@bientôt
Sangokuss