Comment le développeur indépendant SlugGlove a créé 102 millions de combinaisons de sorts dans Unity pour Rhell : Mondes déformés et temps troublés

FERGUS BAIRD / UNITY TECHNOLOGIESSenior Content Marketing Manager
Apr 13, 2026|5:45 Min
Illustration principale pour Rhell : Warped Worlds & Troubled Times par SlugGlove, Yogscast Games | Made with Unity. À droite, un sorcier à la peau bleue, coiffé d'un chapeau marron, fait son entrée en volant, une baguette magique et un grimoire vert à la main. À droite, on voit des forêts, des collines et le titre du jeu.
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Comment un développeur indépendant parvient-il à créer un jeu vidéo proposant 102 millions de combinaisons de sorts possibles ? Rhell : Warped Worlds & Troubled Times est un jeu de rôle en monde semi-ouvert dans lequel les joueurs enchaînent des runes magiques pour lancer des sorts sur des objets et en modifier les propriétés afin de résoudre des énigmes.

La création de ce système complexe aurait représenté un défi de taille, même pour une grande équipe de développement ; SlugGlove, développeur indépendant, y a vu un nouveau casse-tête à résoudre. Nous avons rencontré SlugGlove pour discuter de leur parcours, de l'animation à la programmation, de leur approche de la conception et des tests dusystème magique de Rhell dans Unity, ainsi que de leurs meilleurs conseils pour gérer la portée d'un projet et éviter de se sentir dépassé.

De l'animation au codage en C#

SlugGlove n'avait pas pour ambition de devenir programmeur ; il a fait ses débuts dans l'animation 3D et la création de sprites. Alors qu'ils travaillaient sur leur projet d'animation de fin d'études, ils se sont rendu compte qu'ils ne voulaient pas réaliser un court métrage d'animation, mais plutôt donner vie à leur travail dans un jeu vidéo.

SlugGlove s'est mis à Unity et a commencé à faire des essais tout en apprenant le C#. Pour les artistes qui pourraient se sentir intimidés à l'idée de se lancer dans l'utilisation d'un moteur de jeu, ils mettent en avant la facilité d'utilisation de la suite d'animation intégrée à Unity.

« À l'époque, j'utilisais Blender, que je trouve personnellement très convivial », explique SlugGlove. « En passant de ce système à Unity, je me contentais essentiellement de créer des séquences et de les organiser à l'aide de l'Animator Controller. » C'était tellement plus simple que l'animation traditionnelle. « Si d'autres animateurs cherchent une solution pour tester leurs animations, Unity est très facile à prendre en main et à maîtriser. »

Ce qui a commencé comme un projet de portfolio a donné lieu à quelques jeux expérimentaux avant que le développement de Rhell ne commence : Des mondes déformés et une époque troublée.

Les animations de Rhell dans le contrôleur d'animation (en haut) et en jeu (en bas)

Mise en place d'un système de sorts basé sur des combinaisons

Le principal atout de Rhell réside dans son système de magie modulaire. Les joueurs peuvent combiner jusqu'à cinq runes à la fois dans le grimoire de Rhell, ce qui donne lieu à des millions de combinaisons possibles. Plutôt que de créer des ScriptableObjects ou des préfabriqués uniques pour chaque combinaison possible, SlugGlove a trouvé une solution élégante en utilisant des entiers et des variantes de préfabriqués.

L'approche par nombres entiers

Plutôt que de faire de chaque rune un élément complexe, le jeu traite simplement les runes comme des chiffres. « Les runes ne constituent pas en soi un élément distinct du projet », explique SlugGlove. « En fait, quand on appuie sur le bouton 1, ça s'enregistre sous forme de nombre entier. Il passe de zéro à 40. « Pour lancer un sort, il faut lire une liste pouvant comporter jusqu'à cinq nombres entiers. »

Plutôt que de coder des interactions spécifiques pour une combinaison telle que « Feu + Glace », le système lit les nombres entiers (par exemple, 11, 12), les supprime, puis modifie dynamiquement un objet de classe localisé afin de lui appliquer les propriétés de « l'Eau » (par exemple, le nombre entier 32). Le sort final additionne et modifie les valeurs en fonction de ces nombres entiers jusqu'à obtenir une classe de résultat final. Cette approche modulaire et de Mathematics permet de conserver une logique de jeu légère et évite à SlugGlove d'avoir à créer des milliers d'éléments graphiques individuels.

Rhell combine les runes de Feu et de Glace pour former la rune d'Eau

Le système d'objets universel

Pour garantir le bon fonctionnement des sorts, SlugGlove a utilisé des variantes de préfabriqués. « Chaque objet de Rhell est une variante d’un petit cube gris », expliquent-ils. « Je me suis dit que si un sort pouvait fonctionner sur ce cube-là, il pourrait fonctionner sur n'importe quel autre élément du jeu. » « En gros, j'ai fabriqué le cube le plus complexe possible. »

Étant donné qu'un tonneau, un rocher et un océan de lave sont techniquement des variantes d'un même élément préfabriqué de base, SlugGlove n'a dû implémenter chaque interaction de sort qu'une seule fois. La modification du préfabriqué de base met à jour des centaines d'objets dans tout le jeu, ce qui permet de gagner un temps considérable en phase de développement.

Le personnage du joueur, Rhell, est la seule exception à cette règle. Comme elle nécessite des contrôleurs de mouvement personnalisés et des états d'animation spécifiques (comme le fait de rebondir tout en étant en feu), SlugGlove a dû transposer minutieusement le code objet universel dans le contrôleur du joueur.

Voici quelques-uns des différents états d'animation personnalisés du personnage du joueur dans Rhell : Mondes déformés et temps troublés

Gagner du temps grâce aux tests aléatoires

À première vue, le calcul des 102 millions de combinaisons de sorts semble être un véritable cauchemar. SlugGlove ne s'est pas laissé décourager et a une nouvelle fois trouvé une solution simple et créative : la randomisation par force brute.

Ils ont commencé par ajouter au jeu une rune « Aléatoire », qui choisit au hasard parmi les nombres entiers composant le système runique. Pour tester d'éventuelles interactions, SlugGlove se connectait à une salle et lançait sans relâche le sort « Random » sur des objets jusqu'à ce qu'un message d'erreur s'affiche.

« Je restais assis dans une pièce à lancer Random encore et encore, jusqu’à ce que j’aperçoive ce petit symbole rouge dans Unity que nous connaissons tous si bien », dit-il en riant. « Il y avait un cas où, si l'on faisait reculer un objet dans le temps, qu'on le dupliquait, qu'on lui appliquait l'effet « Sticky », puis qu'on essayait de supprimer cet effet, cela provoquait une erreur de référence nulle. » « Grâce à Random, j'ai compris que je devais régler ce problème. »

La rune « Aléatoire » en action

Le problème des portails

Dans le jeu, Rhell peut envoyer des objets d'un endroit à un autre grâce à une rune de portail. Cela a posé un nouveau défi particulier à relever. SlugGlove a remarqué que lorsqu'un objet soumis à l'effet de la rune « Grow » (qui agrandit les objets) était envoyé à travers un portail, il venait se superposer à la géométrie environnante, ce qui provoquait un problème de chevauchement.

Un personnage sous l'effet de la rune « Grow » provoque un problème de découpe lorsqu'il traverse un portail

Dans la première version de SlugGlove, la téléportation échouait si le Box Collider d'un objet agrandi détectait un chevauchement lors de sa sortie d'un portail. Cependant, cette solution n'était pas idéale, car elle allait à l'encontre de leur vision d'un système de sorts pour Rhell à la fois libre et modulaire.

« Du point de vue de la conception du jeu, c'était vraiment nul », explique SlugGlove. « Je voulais éviter de créer des situations qui limiteraient le joueur et ses possibilités. » « C'était vraiment frustrant de se contenter de dire "non" ».

Préférant privilégier le plaisir du joueur à une interaction physique légèrement plus réaliste, SlugGlove a écrit un script personnalisé de gestion des collisions. Si un objet tente de sortir d'un portail et détecte une collision, le script déplace le portail légèrement à l'écart du point de collision afin de permettre à l'objet d'apparaître sans encombre.

Un objet sous l'effet de la rune « Grow » émergeant d'un portail, post-fixe

Se concentrer sur le processus, et non sur le résultat

En plus d'avoir perfectionné leurs compétences en Unity lors du développement de Rhell : Dans « Warped Worlds & Troubled Times », SlugGlove s'est également formé à FL Studio pour composer la bande originale du jeu. Nous leur avons demandé comment ils parvenaient à éviter le surmenage tout en jonglant avec tant de tâches, alors qu’ils travaillent sur un projet d’une ampleur vertigineuse.

« Je le considère simplement comme un nouveau jouet », disent-ils. « Si tu te focalises sur des questions comme “Et si j’échouais ?” ou “Et si ce que je crée n’était pas à la hauteur ?”, tu ne feras que te stresser. » J'essaie de voir le bon côté des choses et d'y prendre plaisir. Au pire, si je n'arrivais pas à maîtriser ce logiciel de musique, je pourrais demander à un ami de s'en charger. « Il y a toujours un plan de secours. »

Cette attitude positive transparaît dans les mots d'encouragement de SlugGlove à l'intention des développeurs de jeux en herbe qui pourraient se sentir découragés par des défis tels que la dérive des objectifs ou la commercialisation avant même d'avoir lancé un moteur de jeu :

« À tout le moins, crée quelque chose dont tu es fier, pour toi-même. » Demandez-vous : « Est-ce que je prends du plaisir à faire ça ? » Car tant que tu t'amuses, c'est OK. Créer des jeux vidéo, c'est vraiment marrant et amusant. « Ça ne doit pas forcément être une source de stress. »

Rhell : Warped Worlds & Troubled Times est désormais disponible sur Steam. Découvrez d'autres jeux Made with Unity sur notre page Steam Curator, et consultez d'autres témoignages de développeurs Unity sur le blog Unity et le Centre de ressources.