Naviguer dans Unity en tant que praticien ML: Un parcours personnel
Note: Cet article a été traduit avec Claude Code le 31 janvier 2026. La version originale est disponible ici.
L’article suivant se concentrera sur mes premières expériences en tant que praticien ML dans Unity, un moteur de jeu populaire. Tout d’abord, nous commencerons par présenter les moteurs de jeu et Unity et comment ils fonctionnent. Ensuite, nous passerons en revue mon processus d’apprentissage et les ressources que j’ai utilisées pour commencer mon voyage dans Unity (en tant que gars de machine learning). Dans la troisième section, nous examinerons de plus près mon premier “jeu” dans Unity, fournissant un exemple concret des défis et des triomphes que j’ai rencontrés en cours de route. Et enfin, dans la quatrième section, nous discuterons de mes plans pour un apprentissage et un développement supplémentaires.
Que vous soyez débutant ou développeur expérimenté, j’espère que cet article fournira des informations et de l’inspiration précieuses.
Comprendre les moteurs de jeu et Unity
Un moteur de jeu est un framework logiciel conçu pour développer des jeux vidéo. Il comprend généralement des bibliothèques pertinentes et des programmes de support et offre des outils et des fonctionnalités de développement de jeux.
L’objectif d’un moteur de jeu est de donner aux développeurs la capacité de coder leurs jeux, y compris le rendu des éléments du jeu, l’animation et la mise en œuvre de la logique pour des éléments comme l’IA dans le jeu, la création d’UI et de cinématiques, et la construction de jeux pour être exécutés sur des consoles ou des PC. Les moteurs de jeu sont également utilisés dans l’industrie du cinéma.
Si vous voulez en savoir plus sur le sujet, de nombreuses ressources utiles sont disponibles, comme cette vidéo de Linus sur le sujet.
Dans l’industrie, il existe différents moteurs de jeu ; il y en a certains que j’ai à l’esprit (mais c’est juste un sous-ensemble) :
- Unity De Unity technologies (bien sûr)
- Unreal Engine d’Epic
- Godot
- Amazon Lumberyard d’Amazon
- Snowdrop, Anvil chez Ubisoft
- …
Les moteurs de jeu peuvent être largement classés en deux catégories : les moteurs propriétaires, comme ceux utilisés par Ubisoft, et les moteurs ouverts, comme Unity. Les moteurs de jeu ouverts et propriétaires ont leurs avantages et inconvénients, qui peuvent influencer la décision d’un développeur sur le moteur à utiliser pour un projet particulier.
Voici quelques avantages et inconvénients à considérer :
- Utiliser un moteur ouvert (comme Unity et unreal), à un moment donné, vous devrez leur donner une partie de votre argent de vente si vous publiez votre jeu et commencez à gagner de l’argent. Par exemple, considérez les deux jeux populaires, PUBG (développé par PUBG Corp en utilisant le moteur Unreal) et Fortnite (développé par Epic en utilisant le moteur Unreal). Ces deux jeux sont des concurrents, mais chaque vente de PUBG a également généré des revenus pour Epic car PUBG a été construit en utilisant le moteur Unreal.
- Développer un moteur de jeu propriétaire peut être difficile, car cela nécessite une maintenance et une documentation continues. Cependant, cela peut également offrir des avantages tels qu’éviter le partage des revenus avec le fournisseur du moteur et une plus grande flexibilité pour personnaliser le moteur pour répondre aux besoins spécifiques du projet.
Pour conclure la première section sur les moteurs de jeu, parlons de Unity. Comme mentionné précédemment, Unity a été développé par Unity Technologies et a été publié pour la première fois en 2005. Il est maintenant largement utilisé dans diverses industries, y compris la robotique, l’IA et l’industrie cinématographique. Un exemple de son implication dans l’industrie cinématographique est l’investissement de Unity dans Weka, la société derrière de nombreux VFX dans des films comme les films Marvel et les films Le Seigneur des Anneaux.
Pour ceux qui s’intéressent davantage aux jeux vidéo, Unity est également utilisé dans des jeux acclamés comme Cuphead ou Ghost of a tale.
Du côté du développeur (et de ma perspective), Unity est centré autour de son éditeur où les scènes (qui peuvent être vues comme des niveaux) peuvent être construites et composées de différents objets avec un script en C# attaché pour intégrer la logique.
En tant que praticien ML, pourquoi ai-je choisi d’utiliser Unity ? Tout d’abord, j’ai toujours été intéressé par l’industrie du jeu vidéo, même avant de travailler chez Ubisoft, donc Unity était sur mon radar. De plus, j’avais déjà exploré Unity lors de sessions de partage ou de hackathons dans mon précédent emploi chez EDF (gros respect à Jean-François HULLO), mais je n’ai jamais vraiment pris le temps de plonger profondément dedans. Cependant, j’ai acheté des livres, des assets et du matériel de formation pendant les réductions sur des plateformes comme Humble Bundle et Udemy, “juste au cas où.”
Récemment, je voulais essayer quelque chose de nouveau pour mes projets secondaires et faire un prototype avec Unity comme projet secondaire. Cela peut également me donner des idées pour mon travail chez Ubisoft. Alors voyons mes processus/ressources d’apprentissage.
Apprendre Unity
Donc pour commencer à apprendre Unity, j’ai pris trois axes différents dans l’ordre suivant :
- Cours en ligne
- Vidéos Youtube
- ChatGPT
Le cours en ligne était The Ultimate Guide to Game Development with Unity (Official), créé par Jonathan Weinberger de GameDevHQ en collaboration avec Unity. Le cours a été publié en 2019 et est toujours d’actualité (juste l’UI qui peut être différente mais rien d’impossible).
Le cours est divisé en trois sections :
- Construire un space shooter
- Faire des cinématiques
- Construire un platformer 2D.
Pour ma formation, je me suis principalement concentré sur la première section avec le space shooter pour obtenir les bases de Unity (mais j’ai jeté un coup d’œil rapide aux autres sections, qui avaient l’air bien). L’objectif du space shooter était d’implémenter le contrôle, le spawn d’ennemis et les power-ups (coder les power-ups), et il y avait une division ; tout d’abord, construire un prototype avec des objets simples dans Unity, et après cela, ajouter de l’animation /sprites etc. (faire plus comme un jeu qu’un prototype).

J’ai apprécié cette division, et la partie prototype est suffisante pour mon expérience avec Unity (je ne vise pas à devenir développeur de jeux). Pourtant, il y a une bonne explication des concepts Unity (j’irai plus loin dans la section suivante). Il m’a fallu environ 10-15 heures pour expérimenter avec ce cours, et je le recommande fortement à un débutant (car il y a des exercices à compléter sur chaque vidéo du cours).
J’ai encore d’autres cours à creuser dans le futur qui ont l’air bien aussi (1,2,3), mais j’ai décidé de prendre la voie youtube pour me soutenir dans ma première expérience.
Sur Youtube, il y a d’excellentes chaînes, mais pour moi, la meilleure était Brackeys (la chaîne est fermée maintenant), où l’équipe a expliqué différents concepts Unity appliqués au développement d’un type spécifique de jeu. Un excellent exemple pour illustrer cela est celui autour du codage du mouvement du joueur dans un jeu FPS.
La chaîne a fermé il y a longtemps mais les concepts présentés sont toujours alignés avec la réalité de Unity. Elle utilise des fonctions Unity essentielles, tandis que certaines bonnes chaînes, comme Code Monkey, s’appuient sur des packages personnalisés avec des fonctions d’aide. Youtube est une bonne source d’information, mais je suggère de suivre des cours en ligne qui sont plus structurés.
Et enfin ChatGPT, c’était la chose chaude ces dernières semaines, et cela semble être une révolution, donc je voulais mettre la main dessus pour voir s’il peut être utile dans mon apprentissage (je pense que je ferai un article plus général sur les LLM, mais j’ai besoin de monter en niveau sur ce sujet).
Il y a quelques bons articles dans le Verge sur le sujet pour montrer quelques applications de celui-ci :
- ChatGPT proves AI is finally mainstream — and things are only going to get weirder
- OpenAI’s new chatbot can explain code and write sitcom scripts but is still easily tricked
Généralement, c’est large ; vous pouvez faire beaucoup de choses, du codage à l’obtention de recettes ou de programmes d’entraînement (seulement le ciel est la limite, ou l’imagination humaine et les ensembles d’entraînement). Si nous revenons à mon apprentissage de Unity, voici quelques-uns de mes points à retenir sur ChatGPT :
- Il peut générer du code en C# après avoir fourni un prompt ; mon expérience était que la structure était bonne, mais lorsqu’elle était exécutée dans Unity, la logique ne fonctionnait pas.
- Le modèle peut fournir des suggestions pour améliorer le code que vous fournissez, et c’est assez bon à cela
- L’application peut également vous donner des conseils pour configurer les paramètres de votre projet et plus de détails sur les fonctions de Unity (comme une recherche plus intelligente dans la documentation)
- La chose cool est le fait que vous pouvez commencer différents chats, et un modèle comme celui-là gardera le contexte de celui-ci (donc vous pouvez revenir plus tard et continuer votre discussion), vraiment bien quand vous travaillez sur différents sujets
- Il y a la capacité d’évaluer également la qualité de la réponse avec un simple pouce en l’air, pouce en bas
Dans l’ensemble, c’est assez impressionnant, mais c’est loin d’être l’IA parfaite qui remplacera tous les développeurs du monde. Cependant, en tant que développeur et écrivain, un modèle comme ChatGPT peut être un bon assistant au quotidien (je l’utilise en ce moment pour réviser cet article et obtenir une boucle de rétroaction entre Grammarly et chatGPT).
Avec toutes ces ressources, il est temps de se salir les mains et de travailler sur un jeu.
Créer un jeu dans Unity: Défis et leçons apprises
Donc pour mon premier jeu, je voulais avoir quelque chose de simple qui me rappelait mes premiers moments de jeu vidéo, et j’avais ces deux jeux à l’esprit : Doom, le premier FPS auquel j’ai joué et Pac-Man, un excellent vieux jeu d’arcade avec une logique simple. Je voulais également inclure un élément de collecte de ressources similaire à des jeux comme Minecraft ou Valheim.
Avec cela à l’esprit, je suis venu avec la conception suivante pour le jeu :

Les concepts fondamentaux de cette expérience sont
- Le joueur peut se déplacer le long de l’axe x et z comme dans doom, et il peut tirer une balle d’énergie.
- Les balles d’énergie peuvent également être tirées par un ennemi ; si une balle ennemie touche le joueur, il perd de l’énergie mais si une balle du joueur touche un ennemi, il disparaît.
- Chaque mouvement ou tir de balle d’énergie coûte de l’énergie (mais ne pas bouger coûte aussi de l’énergie), mais il peut collecter des pods d’énergie (en vert sur le schéma) pour augmenter son niveau d’énergie (ces pods d’énergie apparaissent aléatoirement)
- Il y a des ennemis qui apparaissent sur le niveau ; si le joueur est dans leur zone de détection, ils se précipitent dessus et tirent dessus (donc cela génère une diminution du niveau d’énergie pour le joueur)
- Si le joueur tue un ennemi avec une balle, il peut collecter un pod d’énergie. Pourtant, si le joueur entre en contact avec l’ennemi (ou vice versa), l’ennemi disparaît et le joueur perd de l’énergie.
- Si le joueur atteint un niveau d’énergie de 200, il entre en “mode overdrive”, qui permet au joueur de se déplacer plus rapidement et d’entrer en contact avec des ennemis sans perdre d’énergie. Mais si le niveau d’énergie dépasse 300, le mode overdrive est terminé, et le niveau d’énergie du joueur revient à 100 comme pénalité.
- Plus le joueur survit longtemps, meilleur sera le score qu’il obtiendra.
Avec ce concept, j’ai commencé à construire un prototype ; je ne vais pas entrer dans trop de détails du jeu (je peux partager le code si vous voulez), mais il y a encore quelques découvertes (en tant que data scientist commençant à coder avec Unity) que je veux partager avec vous :
- Il y a un concept en C# de variables publiques et privées qui offrent la possibilité de rendre une variable disponible d’une entité disponible à une autre. Très utile pour les compteurs, par exemple.
- Mon projet a été structuré avec l’arborescence suivante entre le script en entités.
Je ne sais pas si c’est le plus efficace, mais j’aime l’idée de décomposer la logique du niveau d’énergie dans PlayerCore, du mouvement etc.
- Je garde la logique d’un gestionnaire de spawn pour gérer les pods d’énergie et les ennemis avec le concept de Coroutine avec IEnumerator.
Une coroutine est une fonction dans Unity qui peut faire une pause et reprendre plus tard. C’est utile pour faire des choses qui prennent longtemps ou se produisent sur plusieurs frames, comme attendre que quelque chose se produise ou répéter une action. C’est un concept très particulier avec lequel j’ai eu quelques problèmes au début, mais c’est assez simple.
- Les emoji ne peuvent pas être gérés dans le composant Text 😭
- Le comportement du jeu dans l’éditeur Unity n’est pas la réalité.
Pendant mon développement, je testais le jeu dans l’éditeur, et il fonctionnait très bien, mais lorsque je construisais le jeu, l’exécution localement était super laggy pendant le mouvement. J’ai une configuration décente à la maison, donc cela venait du jeu. En ligne ou sur chatGPT, le premier conseil était de modifier les paramètres du joueur ou l’attribut de temps, ce qui pourrait être mieux. J’ai creusé un peu sur le sujet, et deux optimisations sont sorties, comme limiter le jeu à 60 FPS (fait sur le gestionnaire de spawn, cf capture d’écran) et construire une fonction de lissage dans le script PlayerMovement (merci chatGPT sur celui-ci).
Avec tout cela, c’est pour montrer il y a un enregistrement d’une session de la version PC du jeu.
Si vous êtes excité de jouer avec, il y a la possibilité de construire une version WebGL du jeu et de le déployer dans Unity connect (vous devez installer le package correct). Le lien pour le jeu est ICI, Profitez :)
Plans futurs
Cela fait un moment que je n’ai pas suivi un cours en ligne, et le matériel pour ce cours Unity était excellent. Construire mon premier jeu était difficile, mais j’ai appris davantage sur les pratiques de développement de jeux (mais c’était juste un orteil dans l’eau du développement de jeux) et le codage en général.
Avec tout cela, quelles sont les prochaines étapes pour moi dans ce sujet :
- Apporter de l’IA dans Unity avec le package ml-agents pour construire des agents avec l’apprentissage par renforcement au-dessus de Unity.
- Explorer les applications ML autour de la génération de niveaux, de l’ajustement du jeu, etc.
- Explorer de nouvelles mécaniques pour cette expérience (ajouter un cycle jour-nuit, mode coopération avec une IA, etc.)
- Étudier plus le côté données d’un jeu, comme implémenter le suivi pour construire un service ML au-dessus
- Explorer d’autres expériences de jeu ; j’ai récemment été accroché par Marvel Snap ou Vampire survivors, alors pourquoi ne pas construire des clones pour faire du ML dedans ?
J’espère que vous avez apprécié la lecture.