Unity, Unreal, Godot, quelle solution 3D temps réel choisir ?

23 Octobre 2019
Image d'un paysage en 3D sortant de l'écran d'un smartphone
Depuis quelques années, les logiciels permettant de développer des solutions 3D temps réel se sont fortement développés. Aujourd’hui, ils sont devenus incontournables dans le monde du jeu vidéo, mais également auprès des industriels.

Ces derniers les utilisent pour développer des solutions innovantes, impliquant notamment de la Réalité Virtuelle et de la Réalité Augmentée (telle que la simulation de conduite que nous vous présentions il y a quelques semaines). Le logiciel le plus populaire sur le marché est Unity 3D mais des alternatives existent. Cet article a pour objectif de vous présenter les solutions les plus évoluées afin de vous aider à faire le choix le plus adapté à vos besoins.

Unity 3D – Le leader du marché

Unity est le moteur le plus apprécié du marché. Sorti en 2005, il gagne en popularité auprès des développeurs à la fin des années 2000. Auparavant, Unity était réservé aux utilisateurs MAC OS. Sa distribution gratuite (dans sa version de base) contribue à son succès, tout comme sa boutique en ligne.  Elle permet aux artistes de vendre leurs créations (textures, scripts, modèles 3D) et aux développeurs d’acheter des ressources pour développer des jeux plus rapidement.  Enfin, sa prise en main a été facilitée grâce à l’utilisation d’un langage de programmation simple (C# est plus simple que C ++), la présence de nombreux tutoriels, et une communauté importante permettant une grande entraide entre les différents utilisateurs.

Accueil de l'asset store

Figure 1: Accueil de l'asset store (https://assetstore.unity.com)

 

Au niveau des caractéristiques, Unity est un moteur de jeu complet :

Le rendu 3D

Unity permet d’obtenir des graphismes de haute qualité notamment grâce au rendu physique réaliste (Physically Based Rendering). Les caractéristiques des matériaux sont prises en compte (texture, type, métallicité, brillance, rugosité…) ainsi que leur environnement afin d’obtenir le meilleur rendu 3D possible en répercutant la luminosité ambiante sur la texture des objets.

Exemple de rendus avec un poste radio

Figure 2: Exemple d'un objet dans différents environnements

 

La programmation haute performance

Le langage de programmation utilisé sous Unity est C#. Récemment, Unity Technologies a mis en place une nouvelle façon de programmer appelée « ECS » (Entity Component System). Elle permet d’écrire du code haute performance, en passant d’une programmation orientée objets à une programmation orientée composants. A la clé, un gain de temps et de performance inestimable. Il est également plus simple, quand plusieurs individus travaillent sur un même projet, de réutiliser le même code et d’apporter sa contribution.  Le Job System d’Unity permet quant à lui d’écrire du code multi-threads. Il est alors possible de développer des solutions 3D plus vastes, plus dynamiques, plus riches et plus complexes, fonctionnant sur différents types d’appareils. Enfin, le « Burst Compiler » permet de produire du code natif hautement optimisé pour les capacités spécifiques de la plateforme de destination (smartphone, ordinateur, console).

Unity dispose également d’un « Profiler » permettant la collecte des données et l’analyse des performances liées au processeur, au processeur graphique, au pourcentage d’utilisation de la mémoire, à l’audio et aux graphismes. Le but est de détecter toutes les anomalies afin d’évaluer et d’optimiser la performance des projets.  

Exemple de graphes du profiler d'Unity

Figure 3: Le profiler d'Unity

 

Des outils adaptés aussi aux grandes équipes

Unity propose des outils répondant aux besoins des grandes équipes. « Collaborate » fonctionne un peu comme « Git » et permet aux équipes de travailler ensemble sur un même projet grâce au partage et à la synchronisation d’actions et d’informations, tout en versionnant le code. Cet outil est directement intégré à l’éditeur d’Unity de façon très intuitive. Il est également possible d’ajouter des outils de communication et d’échange comme « Discord », « Slack », ou « Jira ».

Unity propose également un système de « Cloud Build » qui automatise le process de compilation de projets. L’avantage de cette solution est qu’il est possible de compiler un projet via le cloud pour plusieurs plateformes simultanément. Vous pouvez ensuite distribuer votre build où vous le souhaitez.

Coût d’utilisation

Un critère très important pour les entreprises est évidemment le coût de la solution utilisée.  Le modèle économique de Unity Technologies est très avantageux. Pour un chiffre d’affaires annuel inférieur à 100k€, l’utilisation du logiciel est gratuite. Au-delà de 100k€, il faut souscrire à un abonnement de 35€/mois. Au-delà de 200k€ annuels, l’entreprise doit souscrire à un abonnement de 125€/mois.

Si vous restez abonnés pour une durée d’au moins 2 ans, vous pouvez conserver la version d’Unity dont vous disposez. Vous pouvez alors arrêter l’abonnement et continuer à l’utiliser.

Il est également possible de contacter Unity pour acheter le code source du moteur.

Pour aller plus loin

L’auteur de ces lignes a publié de nombreux ouvrages sur le développement de solutions 3D temps réel avec Unity, notamment un livre sur la création d’applications innovantes :

Couverture du livre d'Anthony Cardinale "développer des applis innovantes avec Unity"

 

Unreal Engine – La solution privilégiée par les studios AAA

Bien que le projet ait débuté au début des années 90, Unreal Engine n’a été proposé aux développeurs qu’en 1998. La solution étant alors très chère, Unity fut longtemps préféré du grand public. Ce n’est réellement qu’en 2015, date à laquelle le moteur est devenu gratuit, qu’Unreal Engine a vu sa cote de popularité exploser. Aujourd’hui les deux logiciels jouissent d’une cote de popularité presque identique.

Un rendu AAA

Pendant de nombreuses années, Unreal, qui fit de la qualité du rendu sa priorité, était supérieur à Unity dans ce domaine. Utilisé par les plus gros studios de développement de jeux, Unreal a donné naissance à de nombreux titres AAA (classification donnée pour les jeux vidéo de très grande qualité).

Aujourd’hui, Unity a rattrapé son retard et les deux moteurs de jeux permettent d’obtenir la même qualité de rendu à paramètres égaux. La différence réside dans le fait qu’Unreal active les effets de post traitement par défaut (contrairement à Unity qui nécessite une action du développeur).

Visualisation architecture d'intérieur issue du blog d'Unreal

Figure 4: Blog d’Unreal  (https://www.unrealengine.com/en-US/tech-blog/real-time-ray-tracing-in-unreal-engine---part-2-architectural-visualization)

 

Du C++ pour un code ultra performant, du visual scripting pour les débutants

Unreal Engine permet aux développeurs d’écrire des scripts en C++, qui est le langage privilégié des développeurs 3D temps réel. Il rend également possible l’optimisation de ce code afin d’obtenir de meilleures performances.  

Mais pour les débutants, Unreal a lancé le langage « Blueprint » qui est un langage de programmation visuel ne nécessitant pas l’écriture de code. Le développeur imbrique des blocs reliés par des liens, ce qui permet de programmer rapidement et facilement. Une façon simple de s’initier à la création de jeux sans connaissances poussées.

Exemple de code Blueprint

Figure 5: Exemple de code Blueprint (https://openclassrooms.com/fr/courses/2675311-developpez-votre-premier-jeu-video-avec-lunreal-engine-4/3188250-blueprint-dans-les-grandes-lignes)

 

Des outils toujours plus poussés pour un rendu hyper réaliste

Unreal propose de très nombreux outils pour pousser le réalisme et l’immersion dans vos solutions 3D temps réel. Le moteur est toujours très réactif face aux nouveautés (Hardware / Software) afin d’implémenter les dernières technologies. Ray-Tracing, ombres dynamiques, réflexions 3D, effets de post traitement, effets spéciaux, outils d’animation, système audio poussé. Le logiciel accorde également beaucoup d’attention à l’étude et au développement de solutions dédiées à la conception de simulations en Réalité Virtuelle & Réalité Augmentée.

Coût d’utilisation

Le business model d’Unreal a évolué ces dernières années afin de devenir très simple aujourd’hui : 5% de ce que vous gagnez sur les ventes au consommateur final sont reversés à Unreal.

Bonne nouvelle pour les industriels, cette règle des 5% ne s’applique que sur la vente de produits (jeux, simulations…) aux utilisateurs finaux. Cela signifie que les solutions internes (formations en Réalité Virtuelle) ou démonstrateurs (visites virtuelles architecturales) qui n’ont pas pour objectif d’être vendus à des utilisateurs externes, peuvent être développés gratuitement sans redevance ou royalty.  

Godot Engine – Le challenger Open source

Au début des années 2000, les moteurs de jeux tels que nous les connaissons aujourd’hui n’existaient pas, du moins pas sur le marché. Les studios avaient encore majoritairement des solutions faites maison et les moteurs de jeux étaient encore très spécifiques et ne permettaient de développer qu’un seul style de jeu bien précis.

Godot a été développé dès 2001 et s’est voulu plus généraliste que les moteurs de jeux déjà présents, en proposant une solution qui permettrait la création de divers types de jeux (2D, 3D, jeux de plateforme, d’action, d’aventure …). Il faudra attendre 2014 avant que Godot ne devienne libre et accessible à tous. En quelques années le moteur a beaucoup évolué et il intègre aujourd’hui toutes les fonctionnalités essentielles que l’on retrouve sur l’ensemble des logiciels de solutions 3D. Bien que Godot soit un peu en retard par rapport à ses concurrents, il a l’avantage d’être entièrement libre, gratuit et open source. Son ambition est de faire aussi bien que Blender et de devenir une référence libre incontournable, avec comme objectif que celui de venir concurrencer les deux géants précités.

Des graphismes 3D de qualité

Même si Godot accuse un léger retard par rapport à ses concurrents, il intègre les fonctionnalités principales permettant d’obtenir un rendu de qualité. Il incorpore, comme ses concurrents, les matériaux PBR, la possibilité de créer ses propres shaders (nuanceur informatique permettant de régler l’absorption et la diffusion de lumière par un objet, ainsi que sa texture et son ombre), un système d’illuminations globale et des effets de post traitement.  

Page d'accueil de Godot Engine

Figure 6: Page d'accueil de Godot Engine (https://godotengine.org/)

 

Programmation avec GDScript

Le langage de programmation principal proposé par Godot est « GDScript », très proche du python. Ce langage est simple et parfait pour débuter. Godot propose d’autres langages comme par exemple C# dans la version mono du logiciel ou encore C++. Enfin, pour ceux qui souhaitent se lancer dans la création de jeux sans avoir besoin de coder, Godot propose un langage de programmation visuel (Visual Scripting) similaire au Blueprint d’Unreal.

GDScript vs Visuel Scripting

Figure 7: GDScript vs Visuel Scripting (https://www.pinterest.com.au/pin/251779435403569598/)

 

Des outils pour répondre aux besoins de la communauté

Godot propose de nombreuses solutions pour faciliter le développement. Le travail collaboratif est supporté grâce aux outils les plus populaires (Git, Mercurial…). Le moteur de jeu propose également des dispositifs pour l’optimisation du code et des projets, notamment un Profiler.

Godot est proche de sa communauté. Cela signifie que vous pouvez demander aux développeurs d’implémenter des fonctionnalités qui vous semblent pertinentes, ou les développer vous-même, et les proposer à Godot.

Coût d’utilisation

Au niveau du tarif, Godot est distribué sous licence MIT, le logiciel est gratuit et vous êtes propriétaires de ce que vous développez avec ce moteur.

Pour aller plus loin

La documentation et les ressources en français sont encore rares. Pour pallier à cela, l’auteur de cet article a publié un livre sur le développement de jeux avec Godot Engine :

Couverture du livre d'Anthony Cardinale "Développement de jeux avec Godot Game Engine"

 

 

Conclusion

Les 3 solutions ont leurs avantages. L’important est de choisir la solution la plus adaptée à son entreprise. Pour les sociétés disposant de développeurs C#, Unity sera la meilleure option. Pour celles ayant des développeurs C++ dans leurs effectifs, il sera préférable de travailler sur Unreal. Enfin, pour celles travaillant majoritairement avec des développeurs Python, il sera plus opportun de se tourner vers Godot.

Le développement de solutions en Réalité Virtuelle et Réalité Augmentée est très simple sous Unity et Unreal, mais beaucoup plus complexe avec Godot, car beaucoup de fonctionnalités ne sont pas encore implémentées nativement et il vous faudra les développer.

Si la qualité du rendu est un facteur indispensable pour vous, votre choix s’orientera sur Unity ou Unreal. Si votre souhait est d’utiliser des outils libres, vous préférerez la solution Godot.

Chez AUSY nous avons fait le choix d’utiliser Unity qui reste la solution la plus populaire pour le développement de solutions en Réalité Virtuelle / Réalité Augmentée. Cela nous permet de capitaliser et de former nos équipes à une technologie polyvalente. De plus, la programmation se fait avec C#, un langage que nous utilisons également pour le développement de logiciel, d’applications mobiles et de sites internet. Néanmoins, nous restons à l’affut de l’évolution des autres technologies au travers d’une veille continue afin de toujours proposer à nos clients les solutions les plus adaptées à leurs besoins.

 

Avatar d'Anthony Cardinale

Passionné par les nouvelles technologies et l'innovation, Anthony s’est spécialisé dans le développement de simulations immersives en Réalité Virtuelle / Réalité Augmentée avec Unity 3D. Il aime apprendre, partager son savoir et a déjà publié de nombreux livres sur le développement de solutions 3D temps réel dont Développer des applis innovantes avec Unity, Editions d-booker 13 avril 2017, dans lequel il explique comment tirer parti de la Réalité Virtuelle ainsi que de la Réalité Augmentée pour créer 6 applications innovantes. Anthony est responsable du pôle 3D/RA/RV d’AUSY Sophia Antipolis. Avec l’équipe projet, il accompagne nos clients dans le développement de projets innovants.

 

 

 

Aussi n’hésitez pas à visiter nos pages web dédiées à notre écosystème Smart Innovation

Parlons ensemble de vos projets.

contact