Pourquoi ce projet ? #
Après avoir migré vers Nobara Linux, j’ai constaté que le gestionnaire de mods réalisé par Creative Assembly ne fonctionnait pas correctement sous Linux via Proton, contrairement à Windows.
C’est pourquoi j’ai décidé de développer un gestionnaire de mods natif, optimisé pour Linux mais également compatible avec Windows.
L’objectif était d’offrir une gestion fluide des fichiers et des profils, le tout dans une interface réactive développée avec Rust et Vue.js.
Je me suis inspiré du gestionnaire officiel de Creative Assembly pour concevoir une base solide, avant d’y ajouter des fonctionnalités absentes ou mal supportées sur Linux.
Interface du Mod Manager #
L’interface du mod manager est conçue pour être intuitive et facile à utiliser, tout en offrant des fonctionnalités avancées pour la gestion des mods.

Défis Techniques Relevés #
- Détection de Steam/Proton : Il a fallu implémenter une logique robuste pour localiser automatiquement le répertoire d’installation du jeu et le dossier des mods dans l’arborescence complexe de Steam Play.
- Analyse des fichiers .pack : Lecture et analyse des fichiers de mods pour détecter les changements effectués par Steam lors des mises à jour.
- Synchronisation avec le launcher officiel : Le launcher de Creative Assembly utilise un fichier de configuration spécifique pour l’ordre de chargement. J’ai dû implémenter une lecture/écriture bidirectionnelle pour assurer une compatibilité parfaite.
- Interface utilisateur : Concevoir une interface ergonomique permettant de gérer des centaines de mods sans perte de performance.
- Compatibilité multiplateforme : Gérer les différences de systèmes de fichiers (chemins Windows vs Linux/Proton) et d’environnements d’exécution.
- Intégration Steam Workshop : Récupération des métadonnées des mods via l’API Steamworks, complétée par du scraping pour les informations non exposées, le tout optimisé par une gestion de cache locale.
Fonctionnalités Clés #
Pour déterminer les fonctionnalités à implémenter :
- Je me suis mis dans la peau d’un joueur de Total War Warhammer III qui souhaite gérer ses mods de manière efficace et sans tracas.
- J’ai demandé à des amis sur Windows de me faire des retours sur les fonctionnalités qu’ils aimeraient voir dans un mod manager idéal.
- Je me suis inspiré de l’interface du mod manager officiel, mais j’ai également ajouté des fonctionnalités supplémentaires pour améliorer l’expérience utilisateur.
On a de base :
- Gestion de l’ordre de chargement : Indispensable pour assurer la compatibilité entre les centaines de mods disponibles sur le Workshop.
- Profils de mods : Possibilité de créer différentes configurations de mods et de basculer entre elles instantanément.
- Performance : Démarrage instantané et interface réactive en Tauri / Rust.
Les fonctionnalités de base sont présentes (ordre de chargement, activation), mais j’ai ajouté des outils indispensables :
- Raccourcis Workshop : Accès direct à la page Steam d’un mod ou du moddeur.
- Détails avancés : Affichage de la date de mise à jour, des dépendances et de l’auteur directement dans l’outil.
- Filtrage par catégorie : Tri intelligent (Graphismes, Gameplay, UI, etc.) pour s’y retrouver dans les grosses collections.
- Historique : Possibilité de retrouver et réinstaller rapidement des mods récemment supprimés.
- Import/Export de profils : Partage facile de configurations entre joueurs ou sauvegarde de setups spécifiques.
- Optimisation réseau : Mise en cache des informations récupérées sur le Workshop pour réduire les temps de chargement.
Un point d’attention concernant Steam, tout ce qui concerne le désabonnement et l’abonnement d’un mod est réalisé exclusivement via l’interface de Steam, le mod manager se contente de lire les informations sur les mods installés et de les activer ou désactiver dans le fichier de configuration utilisé par le launcher officiel.
Technologies Utilisées #
- Tauri : Framework pour créer des applications desktop avec Rust et HTML/CSS/JavaScript.
- Rust : Langage de programmation performant et sécuritaire utilisé pour la partie backend.
- Steamworks SDK : Bibliothèque pour intéragir avec l’API Steam.
- Vue.js : Framework JavaScript pour construire l’interface utilisateur.
- YAML : Format de données utilisé pour le fichier de configuration des mods.
- GitHub : Plateforme de développement collaboratif pour héberger le code source
- GitHub Actions : Outil d’intégration continue pour automatiser les tests et les builds de l’application afin de pouvoir le déployer sur Linux et Windows.
Retour d’expérience #
Le développement de ce projet a été extrêmement formateur. Il m’a permis de relever des défis techniques concrets tout en créant un outil utile pour la communauté Linux.
J’ai particulièrement apprécié la flexibilité de Tauri et Rust, qui permettent une gestion fine des spécificités de chaque OS.
- Vue.js a été choisi pour monter en compétences sur un framework moderne et réactif.
- Rust a été une révélation : bien que sa courbe d’apprentissage soit réelle, sa rigueur et ses performances sont idéales pour manipuler le système de fichiers et l’API Steam.
J’ai acquis une solide expérience sur l’intégration d’APIs tierces, le parsing de fichiers de configuration complexes (JSON/YAML) et l’optimisation des performances réseau via le caching et le scraping asynchrone.
L’un des principaux défis a été de gérer la maintenance sur le long terme. Étant allé à l’essentiel pour le MVP, l’absence initiale de tests unitaires a rendu certaines évolutions complexes. C’est un point que je corrige désormais en adoptant une approche plus rigoureuse sur la qualité du code et la documentation.
Conclusion #
Ce projet de mod manager pour Total War Warhammer III a été une aventure passionnante, me permettant de créer une application qui répond aux besoins spécifiques des joueurs Linux tout en étant accessible aux utilisateurs Windows.
Je suis content du résultat obtenu, je ne pensais pas pouvoir aller aussi loin dans le développement d’une application desktop en Rust et Vue.js, ça me donne déjà une idée à petite échelle de l’évolution d’un projet logiciel avec la partie Métier, la partie technique développement et la partie déploiement.
Le projet sera disponible prochainement en public sur GitHub, qui actuellement est en développement privé, et en déploiement canary pour les utilisateurs intéressés à tester les premières versions.