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

Ajouter un modèle Metin2 : fichiers Granny .gr2 et index

Le metin2 model ekleme — ajouter un modèle dans Metin2 — est une étape que rencontre tôt ou tard quiconque veut intégrer un nouveau monstre, PNJ ou monture dans le jeu. Au cœur du sujet se trouve un seul format de fichier : le .gr2, le fichier de modèle du moteur Granny3D de RAD Game Tools. Si tu ne prépares pas correctement le dossier du modèle et que tu ne le lies pas au bon index, même le plus beau mesh reste invisible en jeu ou fait planter le client instantanément. Ce guide détaille, étape par étape, la logique pour intégrer un nouveau modèle 3D de zéro et le lier à un vnum de mob_proto.

Qu'est-ce que le .gr2 et le lien entre Granny et Metin2

Le client Metin2 utilise le runtime Granny3D (granny2.dll) pour afficher les modèles de personnages et d'objets ; c'est pourquoi toutes les données de mesh, de squelette et d'animation sont stockées avec l'extension .gr2. Un fichier .gr2 peut contenir uniquement un mesh, ou aussi un squelette et des données de mouvement. L'approche courante dans Metin2 est la suivante : un fichier porte le mesh et le squelette, tandis que des fichiers séparés portent chaque animation (marche, attaque, mort). Pour que ton modèle se comporte correctement en jeu, ce trio — mesh, squelette, mouvement — doit être compatible.

Ce que contient un dossier de modèle

Dans le client, chaque monstre ou PNJ vit dans son propre dossier ; ces dossiers se trouvent généralement dans les archives pack sous monster2/ (monstres) ou npc/. Un dossier typique contient :

  • Mesh .gr2 — Le modèle lui-même, avec son squelette. La plupart des dossiers lui donnent un nom fixe (par exemple model.gr2).
  • Fichiers de mouvement .gr2 — Chacun contient une seule animation : attente, course, attaque, dégâts subis, mort.
  • Fichiers de texture — Généralement au format .dds (compressé DXT). Ils doivent correspondre au nom de matériau du mesh.
  • Fichier .msm — Le « Monster State Module » ; une machine d'état au format texte qui définit quel mouvement joue dans quel état.

Tu peux ouvrir et inspecter tout cela avec Granny Viewer, qui te permet de voir si le mesh, le squelette et les textures se chargent correctement sans même entrer dans le jeu.

Préparer le modèle : squelette, rig et export

Le moyen le plus sûr d'intégrer un nouveau modèle est de le rigger sur le squelette standard de Metin2. Si tu lies ton modèle à la hiérarchie de squelette d'un monstre existant (en gardant des noms d'os identiques), tu peux réutiliser toutes les animations toutes prêtes de ce monstre — sans dessiner un seul mouvement. Si tu utilises un squelette entièrement nouveau, tu devras aussi produire tes propres fichiers de mouvement pour chaque état (attente, attaque, mort).

L'outil d'export natif est le plugin Granny exporter installé sur les anciennes versions de 3ds Max. Le flux est généralement : aligner le modèle et le squelette, préparer les textures en .dds, puis exporter le mesh et chaque animation individuellement en .gr2. Surveille l'échelle pendant l'export : les personnages de Metin2 utilisent une échelle d'unité précise, et un modèle trop grand ou trop petit paraîtra absurde en jeu ou aura une mauvaise hitbox.

.msm — lier la machine d'état

Même avec le mesh et les animations prêts, le client lit la réponse à « quel fichier jouer pendant que ce monstre attend ? » dans le fichier .msm. Ce fichier texte associe les états du jeu aux fichiers de mouvement .gr2 correspondants. Sa structure ressemble grosso modo à ceci :

MotionMode  GENERAL
{
    Group  WAIT
    {
        MotionCount  1
        Motion0  "wait.gr2"  1.0
    }
    Group  ATTACK
    {
        MotionCount  1
        Motion0  "attack.gr2"  1.0
    }
}

La logique est claire : chaque groupe d'état pointe vers le fichier de mouvement à jouer et son poids. Un groupe manquant (par exemple ne pas définir DEAD) fait figer le monstre à la mort ou génère une erreur. Le point de départ le plus pratique est de prendre le .msm d'un monstre existant similaire comme modèle et d'échanger les noms de fichiers par tes propres mouvements.

Liaison d'index : npclist.txt et mob_proto

C'est ici que se fait la véritable « liaison ». Le client identifie un monstre par son vnum (numéro de proto), mais il apprend dans quel dossier se trouve le modèle grâce à npclist.txt. Ce fichier, à la racine du client, associe le vnum au chemin du dossier. Chaque ligne est séparée par des tabulations :

20101	monster2/nouveau_monstre	Nouveau Monstre

Les colonnes sont, dans l'ordre : le vnum, le chemin vers le dossier du modèle et le nom affiché. Le vnum ici doit être exactement le même que celui de l'enregistrement mob_proto côté serveur. Le serveur définit le monstre avec ses statistiques (PV, attaque, type, IA) dans mob_proto et ne se soucie pas du modèle. Le client, lui, cherche ce vnum dans npclist.txt, trouve le dossier et charge le modèle. Si les deux côtés utilisent des vnums différents, le monstre apparaît avec le mauvais modèle ou pas du tout. Comme les dialogues de PNJ et les quêtes référencent aussi ce vnum, choisis le numéro avec soin dès le départ.

Compatibilité des versions Granny et plantages courants

L'erreur la plus exaspérante lors de l'ajout d'un modèle Metin2 est qu'un fichier .gr2 trouvé ailleurs fasse planter le client au démarrage. La cause est généralement une incompatibilité de version Granny : différentes versions du client utilisent différents runtimes Granny (par exemple 2.4 contre 2.9), et un .gr2 écrit pour une version ne peut pas être lu par le granny2.dll d'une autre version. La solution est de convertir le modèle vers la version Granny de ton propre client, ou de le réexporter avec cette version. Autres causes fréquentes de plantage :

  • Texture manquante — Si le mesh cherche un .dds qui n'existe pas, tu verras un modèle blanc/transparent ou une erreur. Vérifie les noms de matériaux et les chemins de texture.
  • Mauvais chemin dans npclist.txt — Le nom du dossier doit correspondre lettre par lettre ; une casse erronée ou une confusion tabulation/espace rend le modèle « introuvable ».
  • Mauvais placement dans le pack — Tant que les fichiers ne sont pas au chemin conforme à la structure d'archive (pack) du client, le jeu ne peut pas les voir.

En cas de plantage, consulter les journaux d'erreurs côté client et les fichiers syserr accélère le diagnostic.

Questions fréquentes

Ajouter le modèle uniquement au client suffit-il ?

Ajouter le modèle et l'inscrire dans npclist.txt suffit pour que le visuel apparaisse, mais pour que le monstre existe réellement en jeu il faut aussi un enregistrement mob_proto avec le même vnum côté serveur. Sans les deux, tu obtiens soit un monstre invisible, soit un vnum sans modèle.

Dois-je dessiner de nouvelles animations ?

Non. Si tu rigges ton modèle sur un squelette standard de Metin2, tu peux réutiliser tous les mouvements prêts de ce squelette et simplement mapper les noms de fichiers dans le .msm. Une nouvelle animation n'est nécessaire que si tu veux des mouvements originaux.

Le client plante au démarrage — que vérifier en premier ?

Vérifie d'abord la compatibilité de version Granny : ton .gr2 est-il compatible avec la version du granny2.dll de ton client ? Vérifie ensuite les chemins de texture et le nom de dossier dans la ligne de npclist.txt. Ces trois points expliquent la grande majorité des plantages.

Tu veux intégrer ton nouveau modèle au jeu proprement ? De l'export Granny à la machine d'état .msm et à la liaison d'index npclist.txt, on peut mettre en place toute l'intégration ensemble. Contacte-moi et parlons de ton projet.

Bu kategorideki tüm yazılar →

Devamı için