aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Ajouter une nouvelle carte sur Metin2 : du map index à l'atlas

Ajouter une nouvelle carte sur Metin2 est, au premier abord, bien plus un travail de « comptabilité » qu'on ne le croit : copier quelques fichiers ne suffit pas — le serveur (game core) et le client doivent s'accorder sur exactement le même numéro d'index et exactement les mêmes coordonnées. Si cet accord se décale d'un cran, le joueur est déconnecté dès qu'il s'y téléporte, ou le client plante carrément. Dans ce guide je détaille l'introduction d'une carte vierge de zéro, tout en gardant les deux côtés synchronisés.

Comprendre le concept : qu'est-ce qu'une carte au juste ?

Sur Metin2 une « carte » n'est pas un fichier unique mais un dossier. À l'intérieur se trouvent les données height et tile qui décrivent le terrain, les réglages d'eau et d'ambiance, les objets disséminés, et quelques fichiers texte qui régissent le comportement côté serveur. Le serveur identifie ce dossier par un numéro d'index ; le client place le même dossier à l'aide de coordonnées mondiales. Les deux côtés parlent donc de la même carte mais avec des « clés » différentes. C'est précisément là que vit la synchronisation : l'index et les coordonnées doivent correspondre au bit près des deux côtés.

Choisir un index libre

Première règle : ne pas créer de collision. Pour voir les index des cartes existantes, regardez le fichier map_index dans le répertoire de données du serveur. Le format est simple ; chaque ligne contient un index et un nom de dossier séparés par une tabulation :

1	metin2_map_a1
2	metin2_map_a3
3	metin2_map_b1
...
61	metin2_map_newmap

Choisir un numéro élevé et inutilisé (par exemple 61) est le plus sûr ; les petits numéros sont réservés aux cartes officielles, et des systèmes comme les quêtes, les objets ou les guerres de guilde peuvent en contenir des références figées. Gardez un nom de dossier clair et en minuscules : metin2_map_newmap.

Côté serveur : le dossier et ses fichiers texte

Copiez la carte choisie dans le répertoire de données des cartes du serveur. Pour qu'une carte s'ouvre correctement côté serveur, les fichiers texte critiques sont :

  • Setting.txt — Porte les paramètres essentiels comme MapSize, les réglages d'ambiance et les drapeaux PvP/zone sûre. La taille doit être cohérente avec la largeur/hauteur dans atlasinfo.
  • Town.txt — Définit les coordonnées des trois empires et du point de téléportation général (Goto). Une mauvaise coordonnée jette le joueur hors de la carte, dans le « vide », et le déconnecte.
  • regen / *.txt — Les fichiers regen qui gèrent l'apparition des mobs et des pierres metin. Sur une carte toute neuve, vous pouvez les laisser vides au début et les remplir ensuite.

Tous ces fichiers résident dans le dossier de la carte. Un Setting.txt manquant ou corrompu fait que le core ignore silencieusement cette carte au chargement.

Les registres centraux du serveur : map_index et atlasinfo

Une fois le dossier prêt, mettez à jour les deux registres centraux. Ajoutez d'abord votre nouvelle ligne au fichier map_index montré plus haut. Ajoutez ensuite à atlasinfo.txt une ligne décrivant l'emplacement de la carte dans le monde :

metin2_map_newmap	409600	896000	4	4	0

Les colonnes sont, dans l'ordre : nom du dossier, coordonnée X de base dans le monde, coordonnée Y de base, largeur et hauteur (en blocs sectree), et un champ réservé. La largeur et la hauteur ici doivent correspondre au MapSize de Setting.txt ; sinon une partie de la carte est considérée comme inexistante. Assurez-vous aussi que le bloc de coordonnées de la nouvelle carte ne chevauche pas les cartes existantes — atlasinfo dispose le monde entier sur une seule grille, et deux cartes ne peuvent pas partager la même cellule.

Présenter la carte au channel : CONFIG et map_allow

Le serveur est composé de plusieurs channels et cores. Le fichier CONFIG de chaque core contient une ligne map_allow (dans certains émulateurs une entrée %env/map_allow) qui indique de quelles cartes ce processus est responsable. Si vous n'ajoutez pas le nouvel index à la liste d'autorisation du channel concerné, la carte existe sur le serveur mais aucun processus ne la charge et le joueur ne peut pas entrer :

map_allow: 1 3 21 61

Redémarrez le channel concerné après la modification. Surveillez les logs : au démarrage, le core affiche les index de cartes qu'il charge, et vous devriez voir 61 dans cette liste.

Côté client : refléter la même information à l'identique

Le serveur seul ne suffit pas. Le client doit reconnaître la même carte, et les fichiers ici doivent être cohérents avec ceux du serveur :

  • Le dossier de la carte — Ajoutez-le, avec ses données de terrain, de textures et d'objets, dans l'archive pack du client (généralement sous le répertoire map).
  • atlasinfo.txt — Ce fichier dans la racine du client doit contenir des coordonnées strictement identiques à la ligne du serveur. C'est l'erreur la plus fréquente : le mettre à jour sur le serveur et l'oublier sur le client.
  • Carte du monde et minimap — Ajoutez les images icon/worldmap et les tuiles de minimap pour que le joueur ne voie pas un écran noir en appuyant sur M.

Rappelez-vous que les numéros d'index ne sont pas définis séparément côté client ; la correspondance se fait via le nom du dossier et les coordonnées. C'est pourquoi le nom du dossier doit être identique lettre pour lettre des deux côtés.

Tester : se téléporter et lire les logs

Si tout est en place, connectez-vous et téléportez-vous sur la carte avec des droits GM. Dans la plupart des émulateurs, une commande /goto ou un warp vous amène à la coordonnée Goto de Town.txt. Si vous atterrissez au bon endroit, pouvez vous déplacer et que la carte s'ouvre avec M, la synchro est bonne. Quand quelque chose casse, c'est presque toujours l'un de trois suspects : un chevauchement de coordonnées atlasinfo, une discordance de coordonnées serveur/client, ou un index absent de map_allow. Dans ce cas, consulter à la fois les logs syserr et le fichier d'erreur côté client accélère le diagnostic.

Questions fréquentes

La carte existe sur le serveur mais je suis déconnecté à l'entrée — pourquoi ?

La cause la plus fréquente est une discordance de coordonnées ou de taille entre les fichiers atlasinfo.txt du serveur et du client. Assurez-vous que la ligne est identique dans les deux et cohérente avec le MapSize de Setting.txt. La seconde cause est l'absence de l'index dans la liste map_allow du channel concerné.

Quel numéro d'index choisir ?

Choisissez un numéro élevé et inutilisé dans le fichier map_index existant. Les petits numéros sont réservés aux cartes officielles et aux références système qui y sont figées ; les utiliser provoque des collisions inattendues.

L'ajouter uniquement au client suffit-il ?

Non. La carte doit être définie des deux côtés. Si vous l'ajoutez seulement au client, le joueur peut afficher la carte, mais comme le serveur ne gère pas cette région, le personnage ne peut pas s'y connecter, ou est déconnecté instantanément.

Vous voulez mettre votre nouvelle carte en ligne sans tracas ? Nous pouvons mettre en place ensemble toute la synchronisation, du map index serveur à l'atlasinfo client, plus l'intégration regen et quêtes. Contactez-moi et parlons de votre projet.

Devamı için