Samedi 13 juin 2026

JSD fichiers : structure et ouverture

R
Par Romain
5 min de lecture
JSD fichiers : structure et ouverture

L'extension JSD recouvre en réalité trois univers techniques très différents, et la confusion est fréquente. Selon les statistiques internes relevées sur les usages, les fichiers JSD sont majoritairement ouverts par des utilisateurs sous Windows 10 avec Chrome. Avant de chercher à localiser ou exploiter ces fichiers, mieux vaut savoir exactement de quel type de ressource JSD on parle.

Structure des fichiers JSD pour Jagged Alliance 2

Jagged Alliance 2 utilise le format JSD (pour "Jagged Alliance 2 Structure Data") afin de stocker les propriétés physiques des objets du jeu. Chris Camfield, développeur original de l'outil, précise que le système repose sur un convertisseur de script texte basique, et que chaque structure occupe une ou plusieurs tuiles avec des données de ligne de vue (LOS) encodées dans un tableau 5x5.

L'organisation interne du fichier suit un schéma rigide. L'en-tête du fichier (STRUCTUREFILEHEADER) pèse 16 octets et commence systématiquement par l'identifiant "J2SD". L'octet 11 de cet en-tête contient un drapeau qui détermine le type de fichier :

  • Type 1 (00000001) : uniquement des données d'assistance
  • Type 2 (00000010) : uniquement des informations de structures
  • Type 3 (00000011) : les deux combinés

Chaque structure est décrite par un bloc DBSTRUCTURE de 16 octets. On y trouve l'armure (ubArmour, valeurs de 0 à 26), les points de vie, la densité (valeurs de 0 à 100), l'orientation du mur (ubWallOrientation, valeurs de 1 à 4) et les drapeaux de type sur 4 octets soit 32 bits distincts. Ces drapeaux couvrent des propriétés comme STRUCTUREWALL, STRUCTUREDOOR, STRUCTURETRANSPARENT ou encore STRUCTURE_EXPLOSIVE.

Chaque tuile de structure est ensuite détaillée dans une structure DBSTRUCTURETILE de 32 octets. La partie la plus volumineuse : 25 octets encodant la forme en grille 5x5, où chaque bit indique si l'objet occupe une sous-cellule donnée. Le tableau gubMaterialArmour[] indexe 27 valeurs de résistance des matériaux, allant de 0 à 127.

Champ Taille Plage / Notes
STRUCTUREFILEHEADER 16 octets Commence par "J2SD"
DB_STRUCTURE (par structure) 16 octets Armure : 0-26, densité : 0-100
DBSTRUCTURETILE (par tuile) 32 octets Shape : 25 octets (grille 5x5)
AuxObjectData 16 octets Animations, drapeaux, décalages

Les données d'assistance (AuxObjectData) tiennent sur 16 octets et incluent des drapeaux spécifiques comme AUXANIMATEDTILE, AUXINTERACTIVETILE ou AUXUSESLAND_Z. Franchement, si vous modifiez des fichiers JSD de ce jeu sans comprendre cette structure, vous risquez de casser le rendu LOS ou les collisions d'objets.

Bibliothèque JSD pour appareils EtherCAT : installation et ressources

La NASA-JPL a développé la bibliothèque JSD pour interfacer des appareils EtherCAT via le protocole SOEM (Simple Open EtherCAT Master). Cette bibliothèque cible exclusivement les environnements POSIX : elle a été validée sur Ubuntu 16.04, 18.04, 20.04, 22.04 et 24.04, ainsi que sur Raspberry Pi. L'utilisation de PThreads exclut les plateformes non-POSIX.

Pour compiler depuis les sources, il faut CMake version 3.11 ou ultérieure avec le support des threads POSIX. La dépendance optionnelle libreadline-dev est utile pour les programmes de test. La construction suit la séquence classique : git clone, mkdir build, cmake, make.

Les appareils supportés sont classés en trois niveaux. La version minimale 1.0.0 couvre les appareils de niveau 1 (EL2124, EL3208, EL3602), tandis que les Elmo Gold Drives et Platinum Drives nécessitent la version 2.2.0 au minimum. Le niveau 3 (EL2798, EL2828, EL5042) est disponible depuis la version 3.1.5.

Deux outils pratiques accompagnent la bibliothèque. jsdslaveinfo inspecte les esclaves EtherCAT et affiche les informations PDO avec l'option -map. jsdegdtlctty constitue un terminal simple pour les Elmo Gold Drives, à lancer avec le nom de l'interface et l'index de l'esclave. Pour les tests unitaires, cmake -DBUILDJSDTESTS=ON suivi de make memcheck (qui requiert valgrind) couvre la vérification mémoire.

Côté contribution, toute branche de développement doit être préfixée par "-*" depuis master. Toutes les énumérations, structures et fonctions portent le préfixe jsd_. Le versionnage sémantique (Semver) est appliqué strictement : version majeure pour les ruptures d'API, mineure pour les nouveaux pilotes, correctif pour les bugs. La documentation API se génère localement avec Doxygen, à partir du fichier .doxygen.in converti lors du build.

Valider des objets JavaScript avec un schéma JSD

Le troisième usage de l'extension JSD concerne la validation d'objets JavaScript. Mark Homans a publié JSDValidator (dépôt GitHub : markhomans/JSDValidator), distribué sous licence FreeBSD. Le principe : JSD fait pour JavaScript ce que XSD fait pour XML, en définissant un schéma structuré pour valider des objets.

L'intégration est directe. Il suffit d'inclure le script JSDValidator-1.4.js dans les pages concernées. Un schéma JSD se définit comme un objet avec un type principal (généralement "Object") et des attributs spécifiant nom, type (String, Number...) et valeurs autorisées. La méthode Validate() retourne un booléen, et la propriété Error expose le détail en cas d'échec.

Pour des projets nécessitant des données fiables côté client, je recommande cette approche avant toute soumission de formulaire. Si vous travaillez aussi sur l'isolation de vos projets physiques, pensez à consulter nos analyses techniques comme cet article sur le triple vitrage et son efficacité contre les déperditions thermiques pour une démarche rigoureuse similaire côté bâtiment.

L'auteur

R

Romain

Rédaction de Le JSD.

Partager cet article