À propos du projet

UnityDataTools est un outil en ligne de commande et une vitrine de la bibliothèque dynamique native UnityFileSystemApi, destiné à analyser le contenu des fichiers de données Unity tels que les AssetBundles et le contenu Player. Il fonctionne directement sur les fichiers de données Unity sans nécessiter l’Editor, couvre la plupart des fonctionnalités des outils WebExtract et binary2text d’Unity avec de meilleures performances, et ajoute des capacités telles que la génération d’une base de données SQLite pour une analyse détaillée du contenu de build. Il est conçu pour passer à l’échelle sur de grandes sorties de build et a été utilisé pour affiner de grands jeux basés sur Unity. L’outil analyse également les rapports de build Unity Addressables, en détectant et analysant automatiquement les sorties de build JSON Addressables pour extraire des informations sur les bundles, les assets, les dépendances, les tailles de fichiers et les métriques de performance de build. Installation : des builds pour Windows, macOS (Apple Silicon) et Linux sont joints à chaque release et sont autonomes, incluant l’exécutable, la bibliothèque native UnityFileSystemApi et la documentation hors ligne. Aucun runtime .NET n’est requis. Les Mac Intel n’ont pas de build publié et doivent être compilés depuis les sources. Le README fournit des commandes PowerShell et shell pour télécharger, dézipper et vérifier la version, et indique que checksums.txt contient les hachages SHA-256. La documentation couvre les formats de contenu Unity (SerializedFiles, Unity Archives, TypeTrees, format AssetBundle, format de build Player, format de répertoire de contenu, ContentLayout.json) et l’utilisation de l’outil (référence en ligne de commande, Analyzer, schéma de base de données, exemples de requêtes, workflow d’agent IA, comparaison de builds, rapports de build Addressables, rapports de build). Le dépôt est organisé en trois couches : les bibliothèques de base qui lisent les formats binaires Unity (UnityFileSystem, UnityBinaryFormat, UnityDataModels), les bibliothèques de fonctionnalités qui transforment les données brutes en sortie utile (Analyzer pour les bases SQLite, TextDumper pour les dumps lisibles par l’humain, ReferenceFinder pour les chaînes de références, inspecteurs Archive et SerializedFile), et l’exécutable en ligne de commande UnityDataTool qui les assemble et expose des commandes telles que analyze, dump, find-refs, archive et serialized-file. UnityFileSystemApi est compilé à partir du code source Unity et expose les fonctionnalités de base pour ouvrir et lire les formats Unity Archive et Serialized File, y compris la navigation dans les TypeTrees afin que les objets puissent être lus de manière générique sans connaissance codée en dur des types. Il est rétrocompatible mais pas compatible avec les versions futures, et est également distribué dans le dossier Data/Tools de l’Editor Unity depuis 2022.1.0a14. Le dépôt inclut des copies précompilées pour Windows, Mac et Linux. La compilation nécessite de cloner le dépôt, d’installer le SDK .NET 9.0, de remplacer éventuellement la bibliothèque UnityFileSystemApi fournie par une provenant d’une installation de l’Editor Unity, puis d’exécuter dotnet build -c Release. Des tests et des données de test partagées sont inclus, avec deux projets Unity (Baseline et LeadingEdge) utilisés pour régénérer les données de test. Le projet est l’évolution de l’AssetBundle Analyzer de Francis Pagé, qui a introduit pour la première fois l’analyse par base de données SQLite de la sortie de build Unity, mais était lent et fragile en raison de sa dépendance à WebExtract et binary2text. UnityDataTools et UnityFileSystemApi ont été créés pour fournir un accès rapide et fiable aux fichiers de données Unity. Le projet est fourni tel quel et n’est pas officiellement pris en charge par Unity ; il est décrit comme expérimental, les rapports de bugs et pull requests étant bienvenus mais le support n’étant pas garanti.