Espaces de noms

Variantes

Partager

Partager
Actions
Autres langues

Format de carte Alpha

De Minecraft Wiki
Aller à : Navigation, rechercher


Cette page concerne des éléments qui ont été supprimés du jeu.
Ces informations sont périmées et se rapportent à de vieilles versions de Minecraft.

La version Infdev de Minecraft présentait un nouveau défi en matière de stockage de données alors que le jeu n'était encore qu'en développement : les terrains générés en Infdev pouvaient potentiellement peser presque 235 pétaoctets, soit 240 640 téraoctets dans la mémoire, à cause de la taille des cartes (plusieurs fois la surface de la Terre). De ce fait, pour réduire la taille des fichiers et l'utilisation de la mémoire, Notch a décidé de séparer le terrain en tronçons de 16x16x128 blocs et de les stocker sur le disque quand le joueur en était éloigné. De plus, le terrain n'est généré que quand il est visible par le joueur, ce qui réduit de façon significative la taille des sauvegardes, puisque la plupart des joueurs ne peuvent parcourir qu'une petite fraction de la carte en un temps raisonnable.

Sommaire

[modifier] Structure du dossier des mondes

Un niveau en Infdev est en fait un seul dossier contenant au moins un fichier nommé level.dat. Le dossier peut aussi contenir un fichier de sauvegarde de level.dat nommé level.dat_old. Il y a aussi un fichier session.lock pour s'assurer que deux instances de Minecraft ne peuvent ouvrir le même monde en même temps.

Le dossier des mondes peut avoir jusqu'à 64 sous-dossiers, chacun contenant jusqu'à 64 sous-dossiers supplémentaires. Ces dossier contiennent les fichiers de tronçon qui correspondent aux informations sur le terrain et les entités que le tronçon contient. Chaque fichier de tronçon est identifié par la position de son tronçon en X (xPos) et Z (zPos). Les parties variables du nom du fichier de tronçon sont obtenues en prenant la représentation de xPos et zPos en base 36 (en). Les noms des dossiers où sont placés les fichiers de tronçon peuvent être découverts en calculant le modulo 64 des coordonnées xPos et zPos (ou en les convertissant en bits et en utilisant l'opérateur binaire ET 63), et en convertissant le résultat en base 36. Les coordonnées négatives doivent être interprétées bit par bit, selon la notation en complément à deux. Ainsi, -13 est considéré comme 243 (si sa taille est en octets).

Par exemple, pour trouver le tronçon à la position (-13, 44) :

  • Le premier nom de dossier est base36(-13 % 64). C'est à dire base36(243 % 64) = base36(51), soit "1F".
  • Le second nom de dossier est base36(44 % 64). C'est à dire base36(44), soit "18".
  • Le nom du fichier de tronçon est au format "c." + base36(-13) + "." + base36(44) + ".dat". Dans notre cas, cela donne "c.-d.18.dat".
  • Ainsi, le tronçon situé aux coordonnées (-13, 44) est stocké dans le fichier "1f/18/c.-d.18.dat".

Chaque tronçon connaît sa position indépendamment du nom du fichier ou de celui du dossier. Pour comprendre comment lire la position d'un tronçon depuis le fichier de données, référez-vous à la partie format de fichier de tronçon.

Depuis la version Bêta 1.3, cette structure a été remplacée par le groupement des tronçons dans des dossiers de région.

[modifier] Le Nether

Depuis la mise à jour d'Halloween, dès qu'un joueur entre dans le Nether, les tronçons appartenant à cette dimension sont stockés dans un sous-dossier additionnel nommé DIM-1. Ici, les tronçons du Nether sont sauvegardés selon la méthode décrite ci-dessus. Par exemple, on pourrait trouver un fichier de tronçon nommé "DIM-1/1f/1e/c.-d.-e.dat".

[modifier] Format session.lock

Le fichier session.lock contient la date et l'heure de la dernière modification du monde. Le fichier fait 8 octets et ne contient qu'un seul entier signé de 64 bits au format gros-boutiste. La valeur de cet entier est la date et l'heure, stockée sous la forme du nombre de millisecondes écoulées depuis 1970, UTC.

Contrairement à des fichiers lock typiques, session.lock s'assure que le dernier programme à avoir ouvert un monde est son propriétaire. Le processus suit globalement ces 4 étapes :

  1. Le programme ouvre le fichier session.lock
  2. Le programme écrit la date et l'heure dans le fichier session.lock
  3. Le programme surveille les changement du fichier session.lock
  4. Si le contenu du fichier session.lock change, le programme annule le processus et abandonne son verrouillage sur le monde

[modifier] Format level.dat

level.dat est un fichier NBT GZippé qui stocke les données de l'environnement (comme l'heure dans le jeu, par exemple), ainsi que la santé du joueur, son inventaire, sa vélocité et sa position sur la carte. Plus important, il stocke la graine aléatoire que le générateur de terrain utilise pour générer dynamiquement un terrain continu.

Le dossier des mondes peut aussi contenir un second fichier, nommé level.dat_old, qui est une sauvegarde du fichier level.dat.

[modifier] Structure NBT

La structure du fichier est ainsi :

  • TAG_Compound("Data") : données du monde.
    • TAG_Long("Time") : stocke « l'heure » actuelle sous forme de tic-tacs. Il y a 20 tic-tacs par seconde en vrai, et 24 000 tic-tacs par jour dans Minecraft, ce qui fait qu'une journée complète dure 20 minutes. Apparemment, 0 correspond au lever du jour, 12 000, au crépuscule et 24 000 au lever du jour également.
    • TAG_Long("LastPlayed") : stocke la date et l'heure UNIX (en millisecondes) au moment où le joueur sauvegarde sa partie.
    • TAG_Compound("Player") : les informations sur le joueur. Référez-vous au format des entités et au format des monstres pour plus de détails. Cet élément possède d'autre éléments additionnels :
      • TAG_List("Inventory") : chaque TAG_Compound de cette liste définit un objet que le joueur transporte, tient en main, ou porte comme armure.
        • TAG_Compound : donnée de l'objet de l'inventaire.
          • TAG_Short("id") : objet ou ID du bloc.
          • TAG_Short("Damage") : l'usure de chaque objet. 0 signifie que l'objet est neuf. Quand ces dégâts dépassent la durabilité de l'objet, il se casse et disparaît. Seuls les outils et les armures accumulent des dégâts, normalement.
          • TAG_Byte("Count") : nombre d'objets superposés dans cette case d'inventaire. Tout objet peut être superposé, même les outils, les armures et les véhicules. Cette valeur va de 1 à 255. Les valeurs au-dessus de 127 ne sont pas affichées dans le jeu.
          • TAG_Byte("Slot") : indique dans quelle case de l'inventaire cet objet se trouve.
      • TAG_Int("Score") : le score actuel, qui ne semble pas encore être implémenté. Il faut toujours 0.
      • TAG_Int("Dimension") : indique dans quelle dimension se trouve le joueur. 0 si c'est la « Terre », -1 si c'est le Nether.
    • TAG_Int("SpawnX") : coordonnée X du point d'apparition du joueur, qui vaut 0 par défaut.
    • TAG_Int("SpawnY") : coordonnée Y du point d'apparition du joueur, qui vaut 64 par défaut.
    • TAG_Int("SpawnZ") : coordonnée Z du point d'apparition du joueur, qui vaut 0 par défaut.
    • TAG_Long("SizeOnDisk") : taille estimée du monde en octets.
    • TAG_Long("RandomSeed") : nombre aléatoire fourni par la graine de génération de carte pour le terrain.
    • TAG_Int("version") : version actuelle du format NBT. Valait 19 132 quand il a été annoncé.
    • TAG_String("LevelName") : indique le nom du niveau.

[modifier] Format de fichier de tronçon

Voir Format de fichier de tronçon.

[modifier] Voir aussi