-GBX & HEXADECIMAL-


Sommaire :

1. Présentation
2. Matériel
3. Premiers Pas
4. Théorie
5. Pour aller plus loin
6. Modifications spéciales
7. Conclusion
8. Liens

 

PRESENTATION :

                "Ce bloc écrase une jonction", cela ne vous rappelle rien ? Bien sûr que si, dans l'éditeur de circuit de trackmania, on a souvent ce genre d'erreur lorsque l'on veut placer un bloc près d'un autre bloc, ou même de les faire rentrer en collision !

                Et bien grâce à l'édition de la map via un ou plusieurs logiciels externes, nous aurons alors la possibilité de contourner cette fameuse erreur, certains parlerons de bugs, mais il vaut mieux parler d'édition car la modification d'un circuit est voulue contrairement à un bug...

 

LE MATERIEL :

                Il est conseillé, pour travailler dans de bonnes conditions, d'avoir le bon matériel, je vous recommande d'utiliser :

  1. Un éditeur hexadécimal, j'ai nommé Edit Hexa*

                                  *(à télécharger gratuitement ici http://www.logitheque.com/fiche.asp?I=9903&L=EditHexa).

 

  1. Un décompresseur, celui de skubidou se chargera de rendre le gbx plus lisible : Recompress*

                                 *(version tmu forever : http://skubidou.free.fr/TrackMania/Progs/Recompress-TMF.zip )

  Je tiens à signaler que l'utilisation de Recompress n'est pas obligatoire, si vous devez toucher à une ou deux choses dans le fichier il ne s'avère pas utile

 

Voici  la différence :

GBX Compressé :

Screenshot Tm-Hexa

 

GBX décompressé :

Screenshot Tm-Hexa

 

 Ce tutorial vous fera évoluer dans un code gbx décompressé.

 

Premiers pas :

          Lorsque l'on ouvre la map avec Edit hexa, on remarque trois colonnes :

  La colonne de gauche :

Appelée OFFSET, c'est la numérotation des lignes de 10 en 10. Elle est aussi associée à un repère en colonne qui est numéroté de 0 à F (en partant de la gauche bien sûr).

=>       On peut mieux repérer un caractère hexadécimal, chaque valeure pouvant être repérée.

La colonne de droite :

Ce sont les caractères qui constituent le fichier gbx où un caractère peut représenter : Une lettre (a, b, c ...) Un chiffre (1, 2, 3...) Un symbole Ü, Ô, º

=>       Le  but de l'éditeur héxadécimal est d'avoir une représentation de ces symboles, d'où l'utilité d'une 3e colonne...

La colonne centrale :

       Elle présente ces fameux caractères hexadécimaux. C'est la traduction des caractères de la colonne de droite, dans notre cas ils resterons compris entre 00 et FF.

 

        Mais au fait, l'héxadécimal c'est quoi ?

             L'héxadécimal est un système de numérotation, c'est une base dite "de seize" >16> hexa). On compte alors comme cela : 00, 01, ..., 09, 0A, ...,0F, 10, 11, ...

=>       Des nos jours, il existe plusieurs normes de codage de caractères en informatique. la plus connue de toutes est l'ASCII. C'est donc avec elle que nous pouvons traduire les caractères de la colonne de droite en héxadécimal (colonne central)

              Jetez donc un coup d'œil ici :  http://fr.wikipedia.org/wiki/ASCII ; Le chapitre 3 présente un tableau de conversion.

                   Le tout est de comprendre que les symboles de la colonne de droite sont convertis en hexadécimal dans la colonne centrale, jusque là ce n'est     pas très compliqué !

 

La théorie commence...

             Je crois que nous avons finis les connaissances, place aux travaux :P

Dans la colonne de droite, on peut distinguer quelques informations sur la map :

En noir, l'environnement.

En rouge, le login du mapper.

En orange, le titre de la map.

En jaune, le mood (day, sunrise, sunset, night). Screenshot Tm-Hexa

Vous remarquez que ces informations apparaissent deux fois : à la première page mais également à la fin du code, juste avant de traiter les blocs.

 

Se rajoute la partie repérée en vert, les caractéristiques détaillées de la map :

 -header (entête) :

Des informations générales sur le fichier, associées au jeu.

=>       type="challenge" le fichier gbx est un circuit, si sa aurait été "replay", le fichier aurait été un replay.

=>       exever="2.11.11" indique la version du jeu, ici c'est la toute première de trackmania united forever.

 

 ident :

Concerne l'identité de la map et de son propriétaire.

              uid="..." identifiant du joueur, chaque joueur possède son propre id.

              name="sans nom" le nom de la map, celui qui apparaît en haut à droite lorsque vous parcourez une map (ne pas confondre avec le nom du fichier).        

              author="alexxx" le login du mapper.

 

 desc :

Les caractéristiques de mon circuit.

               envir="island" mon circuit est réalisé sur l'environnement island.

               mood="day" mon circuit est réalisé avec le mood day (en journée). type="race" mon circuit est une course, il aurait pu être un circuit de stunt : type="stunt" nblaps="0" mon circuit se fera sur aucune boucle, je n'ai pas un bloc départ/arrivée mais deux blocs distincts.

                price="274" mon circuit vaut 274 coppers (attention ce n'est pas son prix de revente, certains seraient capables de faire payer leurs circuits au prix fort !)

 

 times :

Sont présentés les différents temps enregistrés sur la map.

            bronze/silver/gold/authortime="-1"

=> Le temps maximum à faire pour gagner la médail de bronze/d'argent/d'or/d'auteur. Ici le -1 indique qu'aucuns de ces temps ne sont définis, le circuit n'a donc pas été validé. Les temps sont néanmoins indiqués en centièmes de secondes : Par exemple si je vois apparaître silver="151213", je peux alors dire que le temps correspondant à la médaille d'argent est de 151213 centièmes de secondes (15 minutes 12 secondes et 13 centièmes).

 

       Tout en bas de cette colonne, on aperçoit les noms des blocs en anglais. (Bislope, StartLine, RoadCheckpoint...), on appellera ces noms 'string'.

Pour les reconnaître, on peut essayer de ne placer qu' un bloc et de regarder le nom qui apparaît dans le gbx. Pour vous faciliter la tâche, une liste de bloc a été réalisée ici même pour les blocs déserts de trackmania united (sans l'extension forever) :

http://val1612.free.fr/desert%20blocs.txt

Les autres blocs sont disponibles sur le forum Tm-Hexa.

Pour aller plus loin :

   Les Gbx utilisent des strings indexées. Cela veut dire que si une string est déjà apparue (AlpineRoadGTCurve2), la prochaine fois que l'on place à nouveau ce bloc, il ne remet pas la string, mais un index de celle-ci.

 Chaque bloc est composé de :

-1 Word (00 00 pour une nouvelle string, xx 00 index vers la précédente string)

-1 Word (00 40 ou 00 80): le type de string, nous trouvons généralement 00 40 ( . @ sur la colonne de droite)



 Si il y a une nouvelle string:, nous aurons :

-1 DWord qui définit la longueur de la string (le nombre de caractère) suivi de la string elle même.

-8 bytes (8 valeurs) pour les données du bloc (les 5 premières sont utilisées, nous verrons à quoi elles renvoies plus tard).

Voici un exemple de fichier après être passé dans le programme Recompress :

Screenshot Tm-Hexa

-         00 00 [en orange]=> Nouvelle string

-         00 40 [en jaune]=> le type de string

Nous avons une nouvelle string donc : 17 00 00 00 :

-         [en bleu clair]=> String de 23 caractères (17 en Hexa), son Dword correspond à : 00 00 00 17 (il faut permuter chaque caractère hexadécimal pour le retourver)

-         La string en bleu foncé (AlpineRoadWoodStartLine) comporte bien 23 caractères !

-         En rose, vous trouvez la première définition du bloc 'AlpineRoadGTCurve2' et en orange, (je sais que j'ai mis une seconde pièce du même type à savoir 'AlpineRoadGTCurve2', on peut alors voir qu'elle porte l'index 07 00.

 

Cas particulier : les panneaux

 

Screenshot Tm-Hexa

Les panneaux ayant été peints sont repérables avec deux parties :

-         -La string ‘Signs’, précédée du nom de l'environement, de la marque d'une nouvelle string à savoir 00 00 40, ainsi que de son Dword (ici 0B 00 00 00)

-         -La string concernant l'URL de la peinture, précédé aussi de son Dword.

 Vous l'aurez reconnu l'URL est celle de l'emplacement de l'une de vos peintures, évidemment celle-ci changera suivant le choix réalisé !

 

 

Tout va bien ? On peut continuer sur notre gbx ! Je vous avais parlé des 5 premières valeurs après la string, voici à quoi elles correspondent :

Screenshot Tm-Hexa

(En noir le type de string ; en rouge le Dword, la string s'étale sur 20 caractères ; en orange la string de 20 caractères)

 

       Nous étudions la partie en vert, les valeurs qui définissent la postition du bloc nommé 'AlpineRoadWoodFinish'.

 

 

La première valeur :

L'orientation des blocs, les valeurs héxadécimales vont de 00 à 03 ( On s'oriente avec les points cardinaux, nord, sud, est, ouest), en gros, c'est comme si on allait appuyer sur le clic droit de la souris dans l'éditeur de circuit dans le jeu !

 Lorsque que nous commençons un circuit, nous sommes en direction du Nord, la première valeur sera alors 00 Ensuite viens l'Est, 01 ; Le Sud, 02 ; Et l'Ouest, 03.

  ff

La seconde :

le positionnement du bloc suivant un premier axe horizontal par rapport au repère : le sol ! (celui qui va d'ouest en est ou bien d'est en ouest peut importe),

les valeurs héxadécimales vont de 00 à 2C dans l'éditeur de circuit, on peut atteindre la valeur FF quand on veut compliquer la tâche.

Comment se repérer sur ce bloc ? Et bien en partant vers l'ouest la valeur augmentera, en partant vers l'est elle diminuera.

 

La troisième :

le positionnement suivant l'altitude. Les valeurs hexadécimales vont de 00 (sous le sol) à 11 pour l'environnement desert, il pourrait néenmoins varier selon l'environnement.

Même remarque que pour les autres axes, la valeur maximale réelle est FF pour les cas particuliers. Si on augmente la valeur, le bloc montera d’un niveau.

 

 La quatrième :

le positionnement suivant le 2e axe horizontal, (celui qui va de bas en haut lorsqu'on arrive dans l'éditeur de circuit),

 les valeurs héxadécimales restent les mêmes, à savoir 00 en minimum et 2C en maximum. Quand on augmente la valeur le bloc se dirige vers le nord, quand on la diminue, le bloc part vers le sud.

 

 La cinquième :

la variation.

Cette technique est encore peu élaborée puisqu'elle ne s'utilise apparemment pas sur tous les blocs. On peut déjà affirmer que les bislopes sont variables de la valeur hexadécimales 00 à 03 (4 valeurs en tout).

 

Blocs et modification spéciales :

       Le blockmixing n'a pas que pour intérêt de superposer des blocs, il peut servir dans certaines conditions à faire sortir les blocs de la zone de mapping ou encore à surélever de la pelouse ou des blocs terre. Vous allez tout savoir concernant ces modifications un peu spéciales !

 Surélévation de pelouse ou autre sol

        Pour surélever ce type de bloc, il y a 2 méthodes :

 La première consiste à placer un bloc terre au sol, d’augmenter l'altitude  de celui-ci (3e valeur rappelez vous) qui va aussi surélever la portion de sol qui englobe ce bloc.

La 2eme méthode est plus complexe car elle consiste a surélever un sol lui-même (les 1ers blocs de l'arborescence de l'éditeur de circuit, 1.1 / 1.2 / 1.3 :  pelouse / terre / piscine). Pour cela il faut délimiter l'espace que vous avez l'intention de surélever et essayez de trouver toutes les parties concernées dans l'éditeur hexadécimal.

Mieux vaut ne pas tenter de placer de grandes surface comme celles-ci en l'air, plus la surface du terraforming est grande plus le travail sera long.

 

 

Screenshot Tm-Hexa


Dans ce cas; il faut modifier les valeurs du blocs "grass" (herbe) ainsi que les valeurs du bloc"beach"(plage)

 

Les particularités du bloc piscine :

      En effet le bloc piscine une fois surélevé permet de faire rebondir les voitures, or si vous laissez un espace vide au sol à l'endroit où était cette piscine vous pouvez rebondir sur ce vide (c’est l’espace blanc en plein milieu sur l’image !). De plus les blocs 'piscines' en l'air permettent à la voiture de rouler sur une sorte de route invisible qui est en réalité le fond de la piscine surélevé.

 

Cette astuce peut être utile pour épater les joueurs  même amateur de ces modifications…. Screenshot Tm-Hexa

 

 Blocs affectés ou non par le déplacement hors de la zone de mapping :

      A savoir avant toute chose c'est que le déplacement hors de la zone de mapping permet d’avoir des blocs atteignant des valeurs hexadécimales jusqu’à FF (255 en décimal !), toute coordonnées confondues, de haut en bas de gauche à droite !!

      Les blocs affectés par cette modification extrême sont tous ceux qui ne peuvent être placés en l'air, à vous de vous creuser la tête !

 

Quelques blocs affectés par cette modification : Sculptures, maisons, tout éléments du décors se posant uniquement sur la pelouse. Sur coast et rally les départs et arrivées sont déplaçables jusqu'à cette limite.

Screenshot Tm-Hexa

ATTENTION: Assurez vous d'avoir bien placé le bloc que vous vouliez car pour le supprimer après cette manoeuvre il faut le ramener dans la zone de mapping !

 

Conclusion :

=> Vous voilà initié à l'univers merveilleux des modifications hexadécimales sur Trackmania !

=> Toute l'équipe de Tm-Hexa vous souhaite bonne chance et bonne continuation sur TM !

=> Souvenez vous d'une chose : modifier une map nécessite une bonne réflexion le sens du repérage dans l'espace (et dans le code .gbx !).

 

Liens :

 => Pour avoir plus d'informations et pour surveiller l'actualitée concernant cet univers,

- vous pouvez toujours parcourir la section STRMM du forum officiel français : http://www.trackmania.com/fr/forum/viewtopic.php?t=25158,

- le forum hexadécimal créé par kid234 : http://tmhexa.forum-actif.net/

- la documentation sur l'hexadécimal, elle vous permettra de mieux comprendre leur fonctionnement! http://fr.wikipedia.org/wiki/Hexadécimal

- Un superbe tutorial (de Toman7) pour réaliser une map dirt hexa-modifiée et pour apprendre à utiliser Challenge Edit : http://adriweb.free.fr/trackmania/tutorial/Tutorial-dirt.pdf

 

 

-----------------------------------------------------------------------------------------------------------------

 Ce tutorial a été réalisé par kid234, skubidou, shadowninja, adriweb, et du02. Vous pouvez nous retrouver sur teamspeak (ts.sk8network.fr), sur  le forum officiel français et mais également sur  le forum ‘tmhexa’ (voir le lien plus haut).

 

 Toutes questions sont les bienvenues, nous tenterons de résoudre vos problèmes, en attendant BON MAPPING, innovez dans vos maps, le mix-mapping est là pour ça, mais pour vous améliorez il faudra forcément passer par des erreurs et pas mal de test ;)

Merci à AdRiWeB pour l'hébergement ^^

27/07/08

 

 

-----------------------------------------------------------------------------------------------------------------

Un peu de pub pour encourager l'équipe de Tm-Hexa (lol) ^^ :

 

-----------------------------------------------------------------------------------------------------------------