Les moteurs de jeux vidéo – Partie 1

Les moteurs de jeux vidéo – Partie 1
Partage !

Introduction

Beaucoup d’articles de comparaison de moteurs de jeux sont déjà disponibles sur différents sites et forums mais très peu montre de réels tests concernant ceux-ci ! C’est pourquoi, durant mon stage, j’ai testé différents moteurs de jeux allant des grands classiques, tel que Unity, aux moins rependus comme Gdevelop.

Je ne suis évidemment pas expert dans le domaine puisque je débute tout juste dans l’informatique et je me suis rendu compte que peu de présentations d’outils de développement avaient été réalisées par des débutants, forçant généralement ceux-ci à se pencher vers des forums aux articles pouvant être parfois complexes !

Je vous propose donc aujourd’hui le premier article d’une série vous présentant ces différents moteurs et leurs fonctionnalités, du point de vue d’un débutant. Dans ces deux premiers articles, vous retrouverez une brève présentation des différents moteurs que j’ai eu l’occasion de tester (à l’exception de quelques-uns, notamment les moteurs destinés à la VR) ainsi que le premier jet d’un fichier de comparaison, dont je reparlerai en fin de deuxième article.

 

 

Gdevelop

GDevlop est un moteur de jeux open-source multi-plateforme facile d’accès pour les nouveaux développeurs. Il vous permet la création de tous types de jeux que ce soit des petits projets ou des plus conséquents comme ELLO HEARTH (Lil BUB), Hyperspace Dogfight et bien d’autre encore !

Bien qu’il soit prévu pour tous types de jeux, ce moteur s’oriente plutôt vers la création de jeux 2D comme des platformers, des puzzle games, shoot’em up, jeux 8-bit, etc… Cependant, un des gros avantages de celui-ci, est qu’il vous vous permettra d’exporter vos projets vers de nombreuses plateformes (IOS, Android, Facebook Instant Games, etc..) de manière rapide et efficace.

De plus, Gdevelop est un moteur relativement simple d’utilisation notamment grâce à son système de gestion d’évènements très intuitif. En effet, ce moteur s’oriente vers une conception visuelle plutôt que sur du développement pur. Ainsi, cela permet à tous de créer et gérer facilement les comportements des différents composants de votre jeu.

 

Pour plus d’informations sur Gdevelop, rdv sur leur site internet : https://gdevelop-app.com/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

MelonJS

MelonJS est un moteur de jeux open-source en HTML5 léger mais puissant. Il est axé sur la création de jeux Web 2D (multiplateforme : IOS, Android, Navigateur Web classiques, tvOS).

Ce moteur a été conçu pour permettre aux développeurs de se concentrer plutôt sur le contenu du jeu, intégrant le format assez populaire des Tiled map. Ceci permet la création facile des différents niveaux de votre jeux mais également l’implémentation rapide des différents composants. A la manière de Gdevelop, ce moteur laisse plus de temps aux concepteurs pour se concentrer sur les caractéristiques du jeu.

Cependant, contrairement au moteur précédant, celui-ci s’oriente plus vers du développement pur pouvant être un avantage pour certains développeurs puisque rien ne se fait via un éditeur (pouvant être parfois contraignant !).

De plus, MelonJS est moteur de jeux autonome qui intègrent les fonctionnalités WebGL et WebAudio ne nécessitant pas de dépendances supplémentaires, faisant de lui un framework simple et pratique à utiliser.

C’est également un framework peu gourmant en performances offrant aux concepteurs une large palette d’objets et entités, d’effets (particules, animations, …) ainsi que quelques éléments d’interfaces graphiques.

Malheureusement, ce moteur fait partie de ceux que je n’ai pas testé  (problème de compatibilité de version entre NodeJs et Grunt).

 

Pour plus d’informations sur MelonJS, rdv sur leur site internet : http://www.melonjs.org/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

ImpactJS

ImpactJS est un moteur de jeux JavaScript destiné au développement de jeux Web et mobiles en HTML5.

Ce moteur plutôt axé sur la création de jeux 2D intègre l’éditeur de niveaux Weltmeister permettant la création rapide de vos niveaux. De plus, l’utilisation de l’API Ejecta Framework permet de rendre vos jeux disponibles sur différentes plateformes comme IOS (parfois compliqué à gérer sur d’autres moteurs).

Ce framework permet d’effectuer un rendu direct via OpenGL pour ainsi éviter les problèmes de compatibilité entre les différents navigateurs comme Safari (sur IOS ou MacOS) qui sont généralement à l’origine de certains problèmes techniques.

Son éditeur intégré (entièrement en ligne) offre un bon équilibre entre développement et création. Celui-ci permet l’ajout rapide des différents composants de jeux ou encore la création de Tilemap.

De plus, Impact met à disposition un menu d’aide au debug simple d’utilisation qui permet aux concepteurs de mieux gérer les performances lors de la création de leurs jeux.

 

Pour plus d’informations sur ImpactJS, rdv sur leur site internet : https://impactjs.com/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

BabylonJS

BabylonJS n’est pas un moteur de jeux à proprement parler mais un moteur de rendu axé sur la 3D. Il permet donc aux concepteurs de développer leurs jeux de A à Z en passant par la conception du moteur de jeux jusqu’à la réalisation du jeu en lui-même, cela implique donc que les utilisateurs de ce moteur soient expérimentés.

Ce qui fait la puissance de ce moteur et l’attrait autour de celui-ci, c’est qu’il est complétement gratuit (open-source) et simple d’utilisation (pour les développeurs aguerris). De plus, ayant été créé en 2013, BabylonJS est un moteur très avancé (version actuelle 4.1) et surtout stable ! Il peut être qualifié de moteur de hautes performances, implémentant le Node Material Editor, éditeur très complet et simple d’utilisation.

De plus, BabylonJS implémente de nombreux outils (en ligne) permettant notamment une meilleure expérience de développement pour la gestion du multiplateforme, tels que Babylon Native ou des outils plus généraux comme Cascaded Shadows, Babylon Playgroung et bien d’autres tels que Navigation Mesh utilisé dans le pathfinding des IA.

Ce moteur fait également un grand pas dans l’avancé des jeux en web puisque qu’il intègre le support WebXR qui permet la création d’application en réalité augmentée et réalité virtuelle.

Je pense que BabylonJS fait, à l’heure actuelle, partie des moteurs de rendu 3D les plus puissants et les plus avancés dans le domaine du Web.

 

Pour plus d’informations sur BabylonJS, rdv sur leurs site internet : https://www.babylonjs.com/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

Phaser

Phaser est un moteur de jeu Web orienté principalement vers les jeux 2D. Ce framework réalise un rendu graphique par le biais de WebGL (si le navigateur est compatible WebGL) ou au travers du contexte 2D de Canvas.

De plus, Phaser utilise, pour le rendu graphique, une librairie très performante PixiJS dont nous reparlerons dans la partie suivante. L’utilisation de ce moteur de rendu permet ainsi une bonne efficacité en termes de rapidité, de fluidité ou encore pour la création d’effets visuels.

Phaser est un framework Javascript conçue pour l’HTML5 et est donc disponible sur tous les navigateurs récents ainsi que sur mobiles, par conséquent, il offre aux développeurs un grand nombre d’utilisateurs potentiels.

En effet, un des gros avantages de Phaser est que les jeux ne soient produits qu’en HTML5 et non sous forme d’applications natives à travers de frameworks dédiés. Cela permet un développement et un déploiement moins coûteux de ces applications (pas de déploiement sur les stores comme l’appstore par exemple), un code « unique » (il doit cependant être adapté à toutes les plateformes) pour toutes les plateformes. De plus, de nombreux développeurs et documentations sont disponibles sur ce genre de technologie en pleine expansion, le seul point négatif est la documentation officielle, qui selon moi, serait à améliorer (point sur lequel je reviendrai dans l’article dédié à Phaser!

Mise à part l’imposition du langage (JavaScript), Phaser n’impose aucune structure particulière comme l’utilisation obligatoire de design-patterns ou de pseudo-classes, par exemple. Libre à chacun de faire comme il l’entend ! Ainsi, sa structure est relativement simple et n’implémente pas d’architecture ECS (Entité-Composants-Systèmes) mais il reste possible de l’organiser dans ce sens.

Cependant, ce framework propose également un fichier de définition TypeScript ainsi qu’un template de démarrage pour ceux qui préféreraient cette alternative.

Pour en finir avec Phaser, celui-ci en est à sa version trois et fait partie des frameworks ayant la volonté de se développer et de toujours en proposer plus à ces utilisateurs. C’est un moteur très intéressant que je vous conseille grandement malgré quelques aspects négatifs dont je vous reparlerai dans les prochains articles.

 

Pour plus d’informations sur PhaserJS, rdv sur leurs site internet : https://phaser.io/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

PixiJS

PixiJS est, tout comme BabylonJS, un moteur de rendu et non un moteur de jeux, basé sur JavaScript et l’HTML5. Comme tous les autres moteurs vus précédemment, celui-ci est multiplateforme et peut donc être utilisé tant sur de des navigateurs de bureau que sur mobiles.

Tout comme Phaser (puisque celui-ci est basé sur PixiJS), il utilise le WebGL accéléré et le repli sur Canvas si nécessaire (au cas où les navigateurs ne le supporteraient pas).

L’objectif principal de PixiJS est d’améliorer la création, la gestion et l’animation des différents composants graphiques pouvant être implémentés dans les jeux Web.

L’avantage principal de cet outil est qu’il permet aux développeurs d’exploiter rapidement la puissance matériel (navigateurs ou mobiles) sans forcément de connaissances poussées du WebGL.

Cependant, comme je vous l’ai dit, PixiJS n’est qu’un moteur de rendu et tout comme BabylonJS il est déconseillé aux débutants puisqu’il faudra construire le jeu de A à Z : du moteur, au jeu en lui-même. Ainsi, tous les phénomènes physiques ou encore la détection de collisions devront être implémentés par vos soins ! En revanche, l’un des avantages est de pouvoir créer votre propre moteur de jeux qui pourra vous servir plus tard pour d’autres créations.

Comme vous l’avez compris, ce moteur se concentre plutôt sur la gestion du rendu et des ressources. Il dispose tout de même d’un fort potentiel puisqu’il est à la fois stable, performant et existe depuis longtemps (2013 – version 5) et est, de plus, utilisé par de nombreux frameworks comme Phaser.

Je dirais que l’utilisation d’un moteur de rendu comme PixiJS permet aux concepteurs d’améliorer l’expérience utilisateur tout en gardant un contrôle plus large sur la gestion du jeu (physique, interaction, Game design, etc…) tout en facilitant la conception graphique de celui-ci.

Pour finir, PixiJS pourrait également être utilisé dans bien d’autres domaines et pas seulement pour la création de jeux vidéo, ce qui lui offre un avantage considérable dans le domaine du développement Web. En effet, puisqu’il s’agit d’un moteur de rendu, il n’est pas nécessairement destiné au monde du jeux vidéo.

 

Pour plus d’informations sur PixiJS, rdv sur leurs site internet : https://www.pixijs.com/ ou sur l’article relatif à ce moteur : disponible prochainement.

 

 

Conclusion

J’espère que ce premier article vous aura plu !

N’hésitez pas à me faire vos retours pour que je puisse m’améliorer lors des prochains articles que je publierais.

Enfin, vous retrouverez les autres moteurs que pu j’ai étudié dans le prochaine article qui paraîtra la semaine prochaine !

Lien vers la partie 2: Les moteurs de jeux vidéo – partie 1

Leave a Reply

Your email address will not be published.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.