22 Apr 2026

Gonto, le nouveau gestionnaire de dépendance de WanadevStudio

Retour

Chez WanadevStudio, nous développons des jeux vidéos basés sur le moteur Unreal Engine. Nous devons quotidiennement jongler avec de nombreuses versions du moteur, en fonction des jeux mais aussi des plateformes visées (PC, casques VR, PlayStation, Android, iOS, etc.). À force de passer beaucoup trop de temps à gérer les versions d'Unreal installées à la fois sur le PC des développeurs et sur nos serveurs de build, nous avons fini par développer un outil, afin de nous simplifier la vie.

Aujourd'hui nous allons donc vous présenter Gonto, l'outil que nous avons créé et que nous venons de libérer pour qu'il bénéficie à tous !

gonto-banner.png

L'enfer de la gestion manuelle des versions d'Unreal Engine

Avant de vous parler de Gonto, il faut qu'on vous donne un peu de contexte et qu'on vous explique comment on gérait nos versions d'Unreal jusqu'à présent.

Les équipes du Studio travaillent sur de nombreux jeux en parallèle. Il y a bien sûr ceux en cours de développement, mais aussi tous les anciens jeux que l'on continue à maintenir en parallèle. Chaque jeu, ou presque, utilise sa propre version d'Unreal Engine. Parfois il s'agit de versions « standards » du moteur, mais bien souvent il s'agit de versions custom, nécessaires pour le support des différentes plateformes.

Ces versions du moteur pèsent généralement plus de 100 Gio, et on est même plus proche des 150 Gio pour un certain nombre d'entre elles. Jusqu'à présent, nous avions nos différents moteurs rangés dans des archives Zip sur un partage réseau, ce qui nous causait un certain nombre de problèmes.

Si un développeur ou un graphiste avait besoin de travailler sur un projet, il devait :

  • Déterminer quelle version du moteur est nécessaire.

  • Télécharger le Zip contenant cette version.

  • Décompresser cette archive, ce qui prenait à la fois beaucoup de place (il faut au moins assez d'espace disque pour contenir le Zip et les fichiers extraits le temps de la décompression), et du temps (plusieurs heures dans certaines configurations !).

  • Ajouter quelques clefs dans le registre de Windows pour finaliser le setup.

  • Et suivant ce qu'il souhaitait faire, retrouver quel script il faut utiliser et comment.

De la même manière, l'équipe Infra devait déployer manuellement chaque version d'Unreal utilisée par les projets actifs sur l'ensemble des machines de builds (machines qui compilent les nightly builds et les versions finales que l'on distribue aux joueurs).

Toute cette logistique demande du temps aux équipes et peut être assez frustrante : « Ah zut, la version du moteur dont j'ai besoin n'est pas sur les serveurs ! 😑️ », « Argh ! J'ai plus de place sur mon disque ! 😅️ »,...

Gonto à la rescousse !

Ces problèmes ne sont pas une fatalité, et c'est pourquoi les équipes du Studio et de l'Infra de Wanadev ont décidé de travailler conjointement à une solution. C'est ainsi que trois valeureux développeurs, Benoît, Jérémy et Fabien se sont lancés dans l'aventure, affrontant les plus sombres (et non documentées) APIs de Windows pour donner naissance à Gonto !

Des images disques à la place des Zip : la clef de l'efficacité !

Le premier problème auquel ils ont dû faire face : les Zip. Serait-il possible de distribuer les versions du moteur sous une autre forme plus pratique ?

Après quelques recherches, il s'est avéré que oui. Windows est capable depuis quelques années d'utiliser nativement des images disques. Les images disques sont comme des disques durs que l'on peut brancher et débrancher à volonté sur le PC, sauf qu'au lieu d'être physique, il s'agit simplement de (gros) fichiers.

Il est donc possible de distribuer Unreal Engine (entre autres) sous la forme d'images directement exploitables : plus besoin de les extraire, il suffit de récupérer un fichier et de le monter comme un disque dur, sur une lettre de lecteur (par exemple U:\).

Et voilà ! Plus besoin d'avoir 2 fois l'espace disque de disponible, seule l'image disque occupe de la place. Et plus besoin d'attendre des heures pour extraire les fichiers, ils sont directement accessibles.

Gestion des dépendances automatisée pour plus de simplicité

Le second problème sur lequel l'équipe s'est penchée : la récupération automatique de la bonne version d'Unreal (et des autres outils nécessaires).

Lorsqu'un projet utilise Gonto, il doit déclarer explicitement tout ce dont il a besoin dans un fichier de configuration dédié. Par exemple :

  • Unreal 5.4.4 version custom pour Meta,
  • et puis le SDK Android version 36 (accompagné de la version de Java kivabien™).

Gonto se débrouillera pour télécharger automatiquement les images disque correspondantes et pour faire tout le setup nécessaire (montage des images, définition des variables d'environement et des clefs de registre, etc.) pour que la machine soit prête à travailler sur un projet.

L'un des avantages de cette approche est qu'elle permet également d'éviter d'avoir plusieurs versions des dépendances installées en parallèle, ce qui était souvent source de conflit par le passé !

screenshot.alpha.png

Standardisation des scripts pour mieux s'y retrouver

Et puis le bosse finale : la standardisation des projets.

Au lieu d'avoir chaque projet avec ses propres scripts et sa propre manière de faire, Gonto peut jouer les chefs d'orchestre. Il fournit des targets qui permettent de préparer une machine ou de compiler un projet de A à Z, en une seule commande, toujours la même quel que soit le projet.

Par exemple, si on veut construire une version de Ragnarock pour Android, on peut utiliser la commande :

gonto.exe run build-android

Gonto va alors :

  • Lire le fichier de configuration du projet et trouver la target "build-android"

  • Télécharger les dépendances (Unreal et le SDK Android), s'il ne les a pas déjà en cache sur la machine.

  • Monter les images disques et préparer la machine (définir les bonnes variables d'environnement et les clefs de registres).

  • Exécuter les scripts permettant de construire le jeu.

  • Démonter les images disques pour que la machine retourne à son état d'origine.

Si au lieu de compiler le jeu on veut seulement préparer la machine d'un développeur pour qu'il puisse travailler sur le projet, il faut alors utiliser une commande un peu différente :

gonto.exe mount build-android

Et Gonto déroulera sensiblement les mêmes étapes que celles que l'on a vues précédemment, mais il montera les images disque de manière permanente sur la machine et il n'exécutera pas le script de compilation.

Gonto libéré : l'aventure continue !

Gonto est déjà déployé sur la quasi-totalité des projets du Studio, et il est en passe d'être adopté par d'autres équipes comme YouRescue, qui font elles aussi face au même problème de gestion des versions d'Unreal sous Windows.

Comme nous l'avons dit en introduction, nous avons décidé par partager Gonto avec le monde car nous pensons qu'il peut être utile à d'autres studios. Vous pourrez donc le retrouver sur GitHub à l'adresse suivante :

N'hésitez pas à y jeter un œil si vous pensez qu'il peut vous être utile. N'hésitez pas à ouvrir une issue ou à venir nous faire un petit coucou sur Discord si vous avez des questions ou des idées de fonctionnalité ! 😄️


Écrit par Fabien

Découvrir plus d'actualités