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

Aras Pranck­e­vičius tra­vaille chez Uni­ty depuis 2006. On peut trou­ver sa dernière con­férence à la GDC de 2015 sur cette page.

--g14dm5Entre 2003 et 2005, il était demo­mak­er et tra­vail­lait sur son pro­pre moteur. On peut trou­ver l’ensem­ble de ses travaux sur le site de son groupe Nes­nausk.

secretgov_06Attar­dons nous quelques instants sur son moteur dévelop­pé en 2003: hKo­rez. L’idée au départ était de créer un moteur pour un space shoot­er game.  Le moteur pos­sède un design mod­u­laire ori­en­té objet (OOP). Il fonc­tionne sous Win32(OpenGL) et Linux(Software). Il pos­sède un lan­gage de script pour l’IA (le BiTikZyz), pos­sède un ges­tion­naire de ressources, un moteur de physique basique (dynam­ic octree et bound­ing spheres), un GUI et quelques effets par­ti­c­uliers: Envi­ron­ment map­ping, lens flares, sky­box, etc. A pri­ori, il ne pos­sède pas de sys­tème d’an­i­ma­tion (skele­tal, shaped).

Pourquoi est-ce que je vous par­le de son moteur ? Par ce qu’il vient de faire il y a quelques mois une con­férence où il explique pourquoi un moteur de jeu pro­fes­sion­nel a besoin d’une très grosse équipe aujour­d’hui. Faire un moteur de jeu il y a quelques années était encore à la portée de per­son­nes douées qui fai­saient cela sur leur temps libre. Mais ce n’est absol­u­ment plus pos­si­ble aujour­d’hui - tout du moins si on souhaite créer un moteur com­péti­tif. Et celui qui vous dira le con­traire est un fou ou il retarde de 10 ans. Oui, on peut faire un moteur 3D seul, avec pas mal d’ef­fets, voir même un édi­teur de jeu qui exporte vers dif­férentes plate­formes… il n’y a qu’à voir des pro­jets comme Irrlicht et Cop­per­cube. Ces out­ils deman­dent des années de développe­ment à leurs auteurs et le niveau atteint est déjà très intéres­sant. On pour­rait même s’en con­tenter pour cer­tains jeux.

coppercube-4.4_sMais ces out­ils n’ar­riveront jamais à rat­trap­er des out­ils comme Unre­al Engine 4, Source 2 ou Uni­ty 5. Les tech­niques ont telle­ment évolué en quelques années:  les algo­rithmes qui sont util­isés par ces moteurs sor­tent directe­ment de lab­o­ra­toires de recherche ou de thès­es sur le sujet. En quelques mois, les algo­rithmes sont dépassés et rem­placés par d’autres. On trou­ve des noms de plus en plus bar­bares qui reflè­tent des dif­fi­cultés tech­niques qui sont par­fois impor­tantes. OpenGL/Vulkan et Direc­tX avan­cent aus­si très vite, le matériel n’en par­lons même pas. Et s’il ne s’agis­sait que des cartes graphiques ! Non, il faut aus­si aujour­d’hui qu’un jeu tourne bien sur Android, iOS ou même directe­ment en WebGL/HTML5. Sans compter les con­soles et leurs spé­ci­ficités… Et ce matériel évolue très vite, les dri­vers ont des bogues… y‑a plein de choses qui ne fonc­tion­nent pas comme elles devraient. Pour­tant, si vous faites un jeu, vous voulez qu’il fonc­tionne sur tous ces sup­ports, c’est l’idéal non ?

gdc-2015-nvidia-unveils-its-titan-x-gpu_z2g2.1920Aujour­d’hui, vouloir faire son pro­pre moteur de jeu peut répon­dre à un besoin ponctuel, c’est envis­age­able si on fait un jeu qui n’u­tilise pas les tech­niques dernier-cri comme le jeu 2Dark. Mais avec cette vague de moteurs qui passent à l’open source et qui sont qua­si-gra­tu­its, cela se jus­ti­fie de moins en moins (à moins d’être une grosse société comme Naughty Dogs).

6bc790bf7046527557822614fb47e175D’où cette réflex­ion : est-ce encore d’ac­tu­al­ité ? Le tick­et est telle­ment élevé qu’on peut se deman­der com­bi­en de temps encore les AAA vont utilis­er des moteurs maisons, avec des ren­dus et des effets spec­tac­u­laires à la clé ! On assiste peut-être à la fin de la surenchère dans ce domaine… Est-ce que cela sig­ni­fie à terme que tous les jeux vont finir par se ressem­bler ?

Si vous voulez en savoir un peu plus, cette con­férence de Aras Pranck­e­vičius devrait vous éclair­er un peu, sur sa pro­pre expéri­ence déjà car il a déjà réal­isé un moteur de jeu, mais aus­si parce qu’il tra­vaille aujour­d’hui sur un moteur pro, Uni­ty 5. Ce moteur pos­sède une équipe de près de 100 per­son­nes, et ce unique­ment en R&D !

4848.IMG_8615Du coté d’UE4, je n’ar­rive pas à déter­min­er la taille de l’équipe qui tra­vaille exclu­sive­ment sur l’édi­teur et le moteur de jeu. On sait juste qu’UE4 est la dernière ver­sion de l’Un­re­al Engine démar­ré en 1998. La ver­sion 4 est en développe­ment depuis 2003 et jusqu’à mi-2008, il n’y avait que Tim Sweeney, le co-fon­da­teur d’Epic, qui tra­vail­lait dessus ! La pre­mière ver­sion d’UE4 a été présen­tée en 2012 à la Game Devel­op­ers Con­fer­ence.

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

Voici l’ensem­ble de ses con­férences, ain­si que les papiers qu’il a rédigés. Sur son temps libre, il tra­vaille sur plusieurs pro­jets dont celui-ci avec sa fille.

Edit du 14/03

Sur les réseaux soci­aux, plusieurs argu­ments ont été opposés:

  • Si la tech­no est nou­velle et qu’il y’a tout à faire

D’ac­cord, mais de quelle tech­no par­le t‑on ? S’il s’ag­it d’une tech­no qui n’est pas encore sup­port­é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 par­le 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é poten­tiel, les gros s’en empareront rapi­de­ment avec une tech­nolo­gie dis­posant déjà de tous leurs acquis.

  • Pour mon­tr­er qu’on a le savoir faire, pour se for­mer

D’ac­cord, mais ce n’est pas créer un moteur de jeu dans ce cas, ou alors un très basique qui ne sera jamais util­isé dans aucun jeu, sauf à vouloir créer un jeu avec pour mon­tr­er le moteur. Si on est réelle­ment con­scient de la tech­nolo­gie sous-jacente aux moteurs de jeux actuels, on sait très bien qu’il ne s’ag­it pas que d’un assem­blage de quelques fonc­tions OpenGL/DirectX et de quelques algos con­nus du grand pub­lic. Le coeur de ces moteurs est mon­strueux ! Et on ne par­le pas que du ren­du.

Pour se for­mer, et surtout pour mon­tr­er qu’on est com­pé­tent, je pense qu’il est préférable de créer un plu­g­in ou de faire évoluer une des fonc­tions des moteurs exis­tants que de vouloir recon­stru­ire la roue.

  • Pour maitris­er n’im­porte quel moteur

Non, ce n’est pas parce qu’on créer la maque­tte d’un moteur de 2CV qu’on est capa­ble de maitris­er le fonc­tion­nement du réac­teur d’une fusée. C’est bien d’avoir des bases, s’en­têter à tout refaire soi-même, c’est aus­si pren­dre le risque d’avoir un grand retard dans les tech­nolo­gies et nou­veaux algo­rithmes dévelop­pés.

  • Pour avoir la chance d’in­nover un jour

Les argu­ments précé­dents suff­isent à com­pren­dre que pour innover, il faut déjà maitris­er ce qui existe — il n’est pas utile de vouloir tout recon­stru­ire de ses mains. D’ailleurs, on ne le fait jamais. Depuis l’ap­pari­tion des fonc­tions accéléra­tri­ces dans les cartes 3D, plus per­son­ne ne songe à créer des fonc­tions de ren­du “logi­ciel”. On va utilis­er OpenGL et Direc­tX. De même, que con­stru­ire un com­pi­la­teur C++ n’est plus d’ac­tu­al­ité, tant les opti­mi­sa­tions, les processeurs, etc. sont nom­breux. Innover oui, en se bas­ant 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épen­dant des grands acteurs

A par­tir du moment où le code source de ces moteurs est disponible, l’ar­gu­ment n’est, à mon avis, plus val­able. Si un jour Unre­al Engine rede­vient totale­ment pro­prié­taire avec un code source fer­mé, et que tous les autres suiv­ent… oui, alors, pourquoi pas. En se con­damnant prob­a­ble­ment à faire moins bien, mais au moins sans être dépen­dant. Mais actuelle­ment, cela ne me sem­ble pas néces­saire.

Ma réponse était moins tra­vail­lée sur les RS mais par cer­tains cotés, plus com­plète: “J’en­tends l’ar­gu­ment de la tech­no, mais quelle nou­velle tech­no n’est aujour­d’hui pas sup­port­ée par un cou­ple comme Unity/Unreal ? Ce qu’ils peu­vent pro­duire en WebGL/HTML5 dis­pose de la plu­part des acquis de leur tech­nolo­gie sur les autres plate­formes. Ok pour l’ap­pren­tis­sage, c’est val­able pour tout, du processeur au moteur de voiture en pas­sant un sys­tème d’ex­ploita­tion. Mais je me con­cen­trais sur un moteur de jeu pour faire des jeux. Pierre A., ce que tu dis est au coeur de ma réflex­ion: as-tu sincère­ment l’im­pres­sion qu’il soit encore pos­si­ble d’in­nover dans le domaine des moteurs de jeux, aujour­d’hui ? Ce qu’est capa­ble de pro­duire en 1 mois de tra­vail l’équipe R&D d’U­ni­ty, il te faudrait prob­a­ble­ment des années pour, ne serait-ce que l’as­sim­i­l­er — et ne par­lons même pas d’in­nover dans le domaine. Per­son­ne aujour­d’hui n’en­vis­age de créer dans son garage un nou­veau sys­tème d’ex­ploita­tion, un processeur nou­veau mul­ti-coeurs, un com­pi­la­teur C++ ou même un nav­i­ga­teur web (on y arrive aus­si de ce coté là). Ce que je veux dire, même si je ne suis pas assez clair, c’est que dans toute tech­nolo­gie, il y a un moment, une frac­ture, où le tra­vail d’un homme, aus­si bril­lant soit-il, ne représente plus rien par rap­port à ce qui se pro­duit à l’échelle de gross­es sociétés. Il peut apporter sa pierre à l’éd­i­fice en ajoutant telle ou telle fonc­tion, en amélio­rant tel ou tel algo­rithme.… mais s’il tente de tout refaire par lui-même, il obtien­dra… un jou­et. Un pro­duit qui ne sera exploitable que pour le plaisir de l’ex­ploiter, mais qui n’ap­portera rien par lui-même. Et Si je reviens aux moteurs de jeu: oui, on peut con­stru­ire un éditeur/moteur qui fasse illu­sion… mais qui restera un suc­cé­dané plutôt mau­vais de ce qu’on peut avoir aujour­d’hui gra­tu­it et open source. L’ar­gu­ment de la ne pas être pieds et mains liées à un pro­duit pro­prié­taire ou une tech­no ne tient même plus le coup ! D’ailleurs, le moteur WebGL d’U­ni­ty et UE4 n’est ni C#, ni C++ : c’est bien évidem­ment du JS. Et si on par­lait plutôt de démarche com­mu­nau­taire ? Des cen­taines de développeurs qui tra­vail­lent sur des tech­nos open source par exem­ple… cha­cun n’ayant qu’une étroite vision du pro­duit final dans son ensem­ble. Oui, là, on y arrive un peu plus. J’imag­ine qu’il y aura sous peu des fork plus ou moins grossiers d’UE4 qui cir­culeront, en ayant absorbé une par­tie de la tech­nolo­gie du moteur. Mais le plus sou­vent, ce sont de pâles copies… De mémoire, je n’ar­rive pas à me sou­venir de pro­grès véri­ta­ble­ment sérieux “nais­sant” de l’open source com­mu­nau­taire. Lin­ux, noy­au créé à par­tir de Minix, lui-même un pro­jet édu­catif basé sur Unix… pas vrai­ment inno­vant par rap­port à Win­dows… Blender ? J’adore ce pro­duit, mais sou­vent, sont inté­grées des tech­nos venant de Maya, Max ou d’autres…

Laisser un commentaire

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