Créer son propre moteur de jeu 3D est-il encore d'actualité ?

Aras Pranckevičius travaille chez Unity depuis 2006. On peut trouver sa dernière conférence à la GDC de 2015 sur cette page.

--g14dm5Entre 2003 et 2005, il était demomaker et travaillait sur son propre moteur. On peut trouver l’ensemble de ses travaux sur le site de son groupe Nesnausk.

secretgov_06Attardons nous quelques instants sur son moteur développé en 2003: hKorez. L’idée au départ était de créer un moteur pour un space shooter game.  Le moteur possède un design modulaire orienté objet (OOP). Il fonctionne sous Win32(OpenGL) et Linux(Software). Il possède un langage de script pour l’IA (le BiTikZyz), possède un gestionnaire de ressources, un moteur de physique basique (dynamic octree et bounding spheres), un GUI et quelques effets particuliers: Environment mapping, lens flares, skybox, etc. A priori, il ne possède pas de système d’animation (skeletal, shaped).

Pourquoi est-ce que je vous parle de son moteur ? Par ce qu’il vient de faire il y a quelques mois une conférence où il explique pourquoi un moteur de jeu professionnel a besoin d’une très grosse équipe aujourd’hui. Faire un moteur de jeu il y a quelques années était encore à la portée de personnes douées qui faisaient cela sur leur temps libre. Mais ce n’est absolument plus possible aujourd’hui – tout du moins si on souhaite créer un moteur compétitif. Et celui qui vous dira le contraire est un fou ou il retarde de 10 ans. Oui, on peut faire un moteur 3D seul, avec pas mal d’effets, voir même un éditeur de jeu qui exporte vers différentes plateformes… il n’y a qu’à voir des projets comme Irrlicht et Coppercube. Ces outils demandent des années de développement à leurs auteurs et le niveau atteint est déjà très intéressant. On pourrait même s’en contenter pour certains jeux.

coppercube-4.4_sMais ces outils n’arriveront jamais à rattraper des outils comme Unreal Engine 4, Source 2 ou Unity 5. Les techniques ont tellement évolué en quelques années:  les algorithmes qui sont utilisés par ces moteurs sortent directement de laboratoires de recherche ou de thèses sur le sujet. En quelques mois, les algorithmes sont dépassés et remplacés par d’autres. On trouve des noms de plus en plus barbares qui reflètent des difficultés techniques qui sont parfois importantes. OpenGL/Vulkan et DirectX avancent aussi très vite, le matériel n’en parlons même pas. Et s’il ne s’agissait que des cartes graphiques ! Non, il faut aussi aujourd’hui qu’un jeu tourne bien sur Android, iOS ou même directement en WebGL/HTML5. Sans compter les consoles et leurs spécificités… Et ce matériel évolue très vite, les drivers ont des bogues… y-a plein de choses qui ne fonctionnent pas comme elles devraient. Pourtant, si vous faites un jeu, vous voulez qu’il fonctionne sur tous ces supports, c’est l’idéal non ?

gdc-2015-nvidia-unveils-its-titan-x-gpu_z2g2.1920Aujourd’hui, vouloir faire son propre moteur de jeu peut répondre à un besoin ponctuel, c’est envisageable si on fait un jeu qui n’utilise pas les techniques dernier-cri comme le jeu 2Dark. Mais avec cette vague de moteurs qui passent à l’open source et qui sont quasi-gratuits, cela se justifie de moins en moins (à moins d’être une grosse société comme Naughty Dogs).

6bc790bf7046527557822614fb47e175D’où cette réflexion : est-ce encore d’actualité ? Le ticket est tellement élevé qu’on peut se demander combien de temps encore les AAA vont utiliser des moteurs maisons, avec des rendus et des effets spectaculaires à la clé ! On assiste peut-être à la fin de la surenchère dans ce domaine… Est-ce que cela signifie à terme que tous les jeux vont finir par se ressembler ?

Si vous voulez en savoir un peu plus, cette conférence de Aras Pranckevičius devrait vous éclairer un peu, sur sa propre expérience déjà car il a déjà réalisé un moteur de jeu, mais aussi parce qu’il travaille aujourd’hui sur un moteur pro, Unity 5. Ce moteur possède une équipe de près de 100 personnes, et ce uniquement en R&D !

4848.IMG_8615Du coté d’UE4, je n’arrive pas à déterminer la taille de l’équipe qui travaille exclusivement sur l’éditeur et le moteur de jeu. On sait juste qu’UE4 est la dernière version de l’Unreal Engine démarré en 1998. La version 4 est en développement depuis 2003 et jusqu’à mi-2008, il n’y avait que Tim Sweeney, le co-fondateur d’Epic, qui travaillait dessus ! La première version d’UE4 a été présentée en 2012 à la Game Developers Conference.

Son blog: http://aras-p.info/

Voici l’ensemble de ses conférences, ainsi que les papiers qu’il a rédigés. Sur son temps libre, il travaille sur plusieurs projets dont celui-ci avec sa fille.

Edit du 14/03

Sur les réseaux sociaux, plusieurs arguments ont été opposés:

  • Si la techno est nouvelle et qu’il y’a tout à faire

D’accord, mais de quelle techno parle t-on ? S’il s’agit d’une techno qui n’est pas encore supportée par le marché des gros (Unity/UE4/etc.), mais ce n’est pas le cas de WebGL/HTML5, qu’en est-il du marché? On parle bien d’un moteur pour faire des jeux. S’il n’y a pas de marché, à quoi sert de créer un jeu et s’il y a un marché potentiel, les gros s’en empareront rapidement avec une technologie disposant déjà de tous leurs acquis.

  • Pour montrer qu’on a le savoir faire, pour se former

D’accord, mais ce n’est pas créer un moteur de jeu dans ce cas, ou alors un très basique qui ne sera jamais utilisé dans aucun jeu, sauf à vouloir créer un jeu avec pour montrer le moteur. Si on est réellement conscient de la technologie sous-jacente aux moteurs de jeux actuels, on sait très bien qu’il ne s’agit pas que d’un assemblage de quelques fonctions OpenGL/DirectX et de quelques algos connus du grand public. Le coeur de ces moteurs est monstrueux ! Et on ne parle pas que du rendu.

Pour se former, et surtout pour montrer qu’on est compétent, je pense qu’il est préférable de créer un plugin ou de faire évoluer une des fonctions des moteurs existants que de vouloir reconstruire la roue.

  • Pour maitriser n’importe quel moteur

Non, ce n’est pas parce qu’on créer la maquette d’un moteur de 2CV qu’on est capable de maitriser le fonctionnement du réacteur d’une fusée. C’est bien d’avoir des bases, s’entêter à tout refaire soi-même, c’est aussi prendre le risque d’avoir un grand retard dans les technologies et nouveaux algorithmes développés.

  • Pour avoir la chance d’innover un jour

Les arguments précédents suffisent à comprendre que pour innover, il faut déjà maitriser ce qui existe – il n’est pas utile de vouloir tout reconstruire de ses mains. D’ailleurs, on ne le fait jamais. Depuis l’apparition des fonctions accélératrices dans les cartes 3D, plus personne ne songe à créer des fonctions de rendu “logiciel”. On va utiliser OpenGL et DirectX. De même, que construire un compilateur C++ n’est plus d’actualité, tant les optimisations, les processeurs, etc. sont nombreux. Innover oui, en se basant sur ce qui existe… et je crois que le point de non retour est atteint pour les moteurs de jeux 3D.

  • Pour ne pas être dépendant des grands acteurs

A partir du moment où le code source de ces moteurs est disponible, l’argument n’est, à mon avis, plus valable. Si un jour Unreal Engine redevient totalement propriétaire avec un code source fermé, et que tous les autres suivent… oui, alors, pourquoi pas. En se condamnant probablement à faire moins bien, mais au moins sans être dépendant. Mais actuellement, cela ne me semble pas nécessaire.

Ma réponse était moins travaillée sur les RS mais par certains cotés, plus complète: “J’entends l’argument de la techno, mais quelle nouvelle techno n’est aujourd’hui pas supportée par un couple comme Unity/Unreal ? Ce qu’ils peuvent produire en WebGL/HTML5 dispose de la plupart des acquis de leur technologie sur les autres plateformes. Ok pour l’apprentissage, c’est valable pour tout, du processeur au moteur de voiture en passant un système d’exploitation. Mais je me concentrais sur un moteur de jeu pour faire des jeux. Pierre A., ce que tu dis est au coeur de ma réflexion: as-tu sincèrement l’impression qu’il soit encore possible d’innover dans le domaine des moteurs de jeux, aujourd’hui ? Ce qu’est capable de produire en 1 mois de travail l’équipe R&D d’Unity, il te faudrait probablement des années pour, ne serait-ce que l’assimiler – et ne parlons même pas d’innover dans le domaine. Personne aujourd’hui n’envisage de créer dans son garage un nouveau système d’exploitation, un processeur nouveau multi-coeurs, un compilateur C++ ou même un navigateur web (on y arrive aussi de ce coté là). Ce que je veux dire, même si je ne suis pas assez clair, c’est que dans toute technologie, il y a un moment, une fracture, où le travail d’un homme, aussi brillant soit-il, ne représente plus rien par rapport à ce qui se produit à l’échelle de grosses sociétés. Il peut apporter sa pierre à l’édifice en ajoutant telle ou telle fonction, en améliorant tel ou tel algorithme…. mais s’il tente de tout refaire par lui-même, il obtiendra… un jouet. Un produit qui ne sera exploitable que pour le plaisir de l’exploiter, mais qui n’apportera rien par lui-même. Et Si je reviens aux moteurs de jeu: oui, on peut construire un éditeur/moteur qui fasse illusion… mais qui restera un succédané plutôt mauvais de ce qu’on peut avoir aujourd’hui gratuit et open source. L’argument de la ne pas être pieds et mains liées à un produit propriétaire ou une techno ne tient même plus le coup ! D’ailleurs, le moteur WebGL d’Unity et UE4 n’est ni C#, ni C++ : c’est bien évidemment du JS. Et si on parlait plutôt de démarche communautaire ? Des centaines de développeurs qui travaillent sur des technos open source par exemple… chacun n’ayant qu’une étroite vision du produit final dans son ensemble. Oui, là, on y arrive un peu plus. J’imagine qu’il y aura sous peu des fork plus ou moins grossiers d’UE4 qui circuleront, en ayant absorbé une partie de la technologie du moteur. Mais le plus souvent, ce sont de pâles copies… De mémoire, je n’arrive pas à me souvenir de progrès véritablement sérieux “naissant” de l’open source communautaire. Linux, noyau créé à partir de Minix, lui-même un projet éducatif basé sur Unix… pas vraiment innovant par rapport à Windows… Blender ? J’adore ce produit, mais souvent, sont intégrées des technos venant de Maya, Max ou d’autres…

Ces articles pourraient aussi vous intéresser …