Unreal Engine vs Unity 3D : mon choix final

Il est temps pour moi de m’investir pleinement dans Unity ou dans Unreal Engine. J’ai vu la preview de Unity 5… avec le global illumination et WebGL/HTML5… ça a l’air aussi bon qu’UE4 – J’ai l’impression qu’en France, on est très Unity, mais ça va peut-être changer.

Edit au 20/04/2017: Bon, cet article date un peu. Je ne le renie pas, mais je connais aujourd’hui d’avantage les 2 moteurs et je vous propose une synthèse ici. Et il faut dire que les 2 moteurs ont aussi évolué depuis, mais ce qui suit reste vrai en grande partie.

Mes critères sont :

  • la portabilité vers les mobiles et consoles,
  • la qualité du rendu,
  • l’optimisation en terme de vitesse,
  • les outils,
  • le marché francophone (opportunités) et enfin en dernier,
  • L’avenir de la technologie

Ah oui, j’oubliais, ce sont surtout les jeux 3D qui m’intéressent, mais je ne veux pas me fermer à la possibilité de faire des jeux 2D également.

Attention, je ne compte pas faire un article de référence sur les atouts et inconvénients des 2 outils – je n’ai qu’un point de vue extérieur à la question. J’ai déjà bidouillé 3 ou 4 petits jeux sur Unity 3D, mais avec une version gratuite et qui date de près de deux ans, donc mon expérience n’est pas significative. Et concernant Unreal Engine, je n’ai pas d’expérience tout court. Toutefois, j’ai fait quelques recherches et je me suis appuyé sur l’avis de plusieurs personnes pour forger mon opinion. Voici le compte-rendu de mes recherches.

Techniquement:

Le gros point qui différenciait Unity d’Unreal Engine, c’était le rendu. L‘illumination Globale était acquise pour les 2 moteurs, mais la nouveauté d’UE 4, c’était le PBR (Physically Based Rendering). Le Rendu Physique Réaliste ou PBR (Physically Based Rendering) est un modèle d’illumination pour créer des rendus 3D qui respectent les lois de la physique. Le rendu est époustouflant et se rapproche d’avantage de la synthèse d’images. Mais Unity 5, dans sa preview, semble avoir rattrapé son retard dans ce domaine. Mais pas facile d’en juger, nous n’avons aucune idée de la vitesse de traitement d’Unity en ce domaine.

Après, je ne peux pas prendre chaque fonctionnalité et les comparer, ce serait un travail de titan, et ce n’est pas forcément ce que je recherche. La liste des fonctionnalités d’Unity est disponible ici, et celles d’Unreal Engine, sur cette page.

Coté programmation, Unity 3D se programme en C#/Javascript alors qu’Unreal Engine 4 utilise le C++ ainsi qu’un éditeur visuel Blueprint. Cet éditeur visuel n’a pas d’équivalent sous Unity mais il existe extension non-officielle PlayMaker qui fait le même boulot (mais cela ressemble plus à un jouet qu’un outil de travail amha).

Coté réseau, c’est la grosse interrogation – et ce n’est pas un point de détail pour moi. Le projet UNET d’Unity est encore en cours de développement, mais devrait permettre de développer des MMO. Aujourd’hui, Unity gère assez mal un grand nombre de joueurs simultanés car il update toutes les infos de tous les joueurs chez tout le monde et de façon ultra “safe”. Pierre A. m’écris que “On a déjà vu des MMO fait avec Unity et tu n’est pas obligé d’envoyer des packets en reliable. D’autre part, la grande majorité des studios font appel à des 3rd partys (Photon, Smartfox…)“. Donc, ce n’est pas un problème en soi, mais il faut faire appel à des modules externes. Quant à Unreal Engine, il y aurait le même genre de projet concernant les MMO. Quant aux jeux réseau moins gourmand, n’oublions pas qu’UE fait tourner le jeu Unreal Tournament qui est relativement bien optimisé de ce coté. J’ai donc tendance à préférer largement UE pour l’aspect réseau, car celui d’Unity est simple d’emploi mais trop limité à mon goût.

Voici une preview des fonctions supportées par Unity 5 diffusée à la GDC 2014 :

Voici également une démo technique pour Unreal Engine 4.6 présentée également à la GDC 2014:

Les nouvelles fonctionnalités de ce moteur sont disponibles sur cette page.
Les licences (ce n’est plus valable aujourd’hui):

Unity 3D dispose de 2 types de licence : la location à 75$ pour la version pro, ou 1500$ à l’achat, sachant que les mises à jour sont garanties à vie. Toutefois, pour développer correctement sur iOS ou Android, il faut s’acquitter du même montant pour chaque plate-forme. Ces licences ne sont pas forcément obligatoires mais facilite grandement le portage des jeux vers ces plate-formes. Il n’y a aucune redevance à verser sur les produits vendus.

Unreal Engine 4 se loue 19€/mois. On peut arrêter quand on veux, mais on ne dispose plus des mises à jour ni de l’accès au code source. Oui, c’est un point important, on peut accéder au code source de l’outil, via Github. Une redevance de 5% des bénéfices est demandée toutefois sur chaque produit vendu. C’est peut-être un peu casse-tête, mais cela semble d’autant plus intéressant pour les petits studios car le coût est moindre.

Portabilité:

Les deux outils sont équivalents en terme de portabilité. Les jeux développés peuvent tourner sous PC, Mac OS X, Linux, Android et iOS, ainsi que sur les consoles nexgen Xbox One et PS4.

Concernant le web, unity utilise un plugin qui permet de faire tourner le jeu dans le navigateur. Toutefois, l’utilisateur doit télécharger préalablement ce plugin. Ce n’est pas directement du HTML5/WebGL. En même temps, toutes les fonctions sont supportées. Unity 5 annonce toutefois la possibilité d’exporter en HTML5/WebGL. Pour Unreal Engine, c’est expérimental, mais déjà possible.

Popularité et marché pro:
Il y a de très nombreux jeux pros fonctionnant avec Unreal Engine. Voici une liste non exhaustive. Parmi eux, on compte Fable Legends de Lionhead Studios ou Tom Clancy’s Rainbow Six: Vegas d’Ubisoft. De grands studios et distributeurs illustrent le moteur : Activision, Disney, Codemasters, Touchstone Pictures, Square Enix, Microsoft ou Sega. Ce sont essentiellement des jeux qui tournent sous UE3, car les jeux sous UE4 sont en cours de production pour la plupart.

Concernant Unity, voici également une liste non exhaustive de jeux professionnels. Il s’agit de jeux un peu plus modestes, généralement réalisés par de plus petits studios.

Bon, attention, je ne dénigre pas les studios indépendants : bien au contraire, je préfère les jeux originaux qui sortent de ces studios. C’est juste une observation.

Concernant le marché des professionnels, ce n’est pas facile de se faire une idée. Unreal Engine 4 possède une nouvelle licence qui le rend très attractif, alors qu’il était auparavant hors de portée des petits studios. Ce qui fait qu’il était surtout réservé aux AAA. Depuis, il devrait de plus en plus se répandre, notamment dans la sphère francophone où Unity 3D règne en maître. Ainsi, il est de notoriété que pour les indies, c’est mieux Unity – c’est plus simple, moins performant, mais plus facile. Je me demande à quel point ces idées sont préconçues. Unity est rentré dans les écoles par la petite porte en proposant son outil gratuitement alors que cela était payant pour Unreal Engine. Depuis peu, la licence est gratuite pour l’enseignement, donc les choses vont peut-être évoluer. Il reste que les particuliers n’ont pas facilement accès au moteur car il n’existe aucune version gratuite du moteur. Cela sera probablement un frein conséquent à son développement vers le commun des mortels.

Quand je pose la question dans la sphère francophone, on me répond “prends Unity” et dans la sphère anglophone, on me conseille “Unreal Engine”. “En France, il y a que Arkane Studios (Dishonored) et Dont-Nod (Remember me) qui font des jeux consoles et étrangement, les deux utilisent l’Unreal Engine. Les autres, c’est du mobile. C’est pour ça, que oui, en France, c’est Unity avant tout.” me souffle Alexandre L. C’est vrai que le marché français reste relativement étroit de ce coté là. Ce qui est sûr, c’est qu’aujourd’hui, il y a plus d’offres d’emploi en France pour Unity que pour Unreal Engine. Mais est-ce que cela sera encore vrai dans 2 ans ? Il y a également ces rumeurs qui traînent depuis 2 mois sur un éventuel rachat d’Unity… Quand on investi son temps, son énergie et même son argent dans un choix technologique, mieux vaut avoir une idée de ce que donnera cette technologie dans 2 ans, et pas seulement sur un plan technique.

Lorsqu’on demande sous google le nombre de liens, on obtient 18.8M de résultats pour Unity 3D et 18.8M pour Unreal Engine (en incluant “UDK” l’ancien nom en plus). Cette proximité est tout de même étrange, mais cela ne révèle rien au final.

Sur Amazon, 301 livres pour Unreal Engine et 239 pour Unity 3D. Par contre, en français, il y a 7 livres (doublons exclus) pour Unity 3D et aucun pour Unreal Engine.

Asset Store/Market Place:

En faisant un tour sur l’asset store, il y a vraiment pas mal d’extensions pour Unity, mais celles qui sont vraiment intéressantes sont presque toutes payantes ! Il y a tout un business d’assets autour d’Unity qui ressemble de plus en plus à un App Store. Sur Unreal Engine, j’ai l’impression que l’outil est plus complet et qu’il se passe de ce type d’extensions – il y a toutefois beaucoup d’assets (objets, anims, etc.) qui peuvent être intégrés à un jeu et qui sont bien entendu payants. En gros, il me semble qu’il y a plus de gratuit sur Unreal Engine que sur Unity – le système est moins parasité par les petites structures qui veulent vendre leurs outils.

Conclusion:

Dans mes lectures, il apparaissait souvent que Unity proposait des fonctions en avant première, pas vraiment finalisées (half baked) et pas optimisées – ce qui ne donne rien de bon pour la version 5 qui semble si prometteuse. J’avoue que le coté accès au code source est pour ma part important, non seulement pour mes propres besoins, mais aussi pour que la communauté de développeurs puissent participer à l’amélioration continue du produit. Enfin, la licence de 1500$ d’Unity est un facteur très limitant pour moi qui n’ai pas envie d’investir une telle somme, même si ce n’est pas une somme importante pour un petit studio.

J’ai l’impression qu’Unreal Engine devrait percer en France sous peu, même si Unity semble avoir une longueur d’avance. Dans tous les cas, si l’objectif est principalement de développer des jeux, il ne faut pas se contenter du marché francophone qui est beaucoup trop petit.

Pour le reste, comme je modélise sous Blender, le Blender Game Engine restera de loin pour moteur de jeu préféré pour créer mes maquettes et tester les différentes interactions du terrain, les anims des personnages, etc.

Je  vous laisse avec ce petit coup de cœur sous Unreal Engine:
https://www.youtube.com/watch?v=-bLOi3mo9NE

Oui, vous l’aurez deviné… j’ai tendance à préférer Unreal Engine, mais j’attends vos commentaires… je n’ai pas encore fait mon choix.

Donc, pour résumer : se former à Unreal Engine exclusivement, c’est se couper du marché français des indépendants ou risquer de n’intéresser personne en terme de livre, formation ou prestations. C’est tout de même un point important. Se former aux deux me parait maladroit, car on ne peut atteindre le même niveau de maîtrise si on pratique les 2 moteurs. Se lancer dans UE 4, en tant que Français, c’est comme vouloir lancer un nouveau marché: c’est difficile et on en retire que rarement les fruits.

Un grand merci à Pierre A. et Alexandre L. pour leurs corrections et suggestions.

Edit du 19/04/2015: Bon, comme vous le voyez, je me suis bien investi dans l’un de ces moteurs…

Edit du 25/03/2016: Un petit article de Jean Charpentier, un autre dev qui est passé par divers moteurs avant de s’arrêter sur UE4. profitez en pour aller voir ses vidéos également.

Ces articles pourraient aussi vous intéresser …