A l'occasion de la GTC, la conférence annuelle organisée par NVIDIA pour les développeurs de technologies exploitant ses processeurs, la marque mettait en avant sa solution GameWorks. La boîte à outils GameWorks se retrouve en effet dans un certain nombre de jeux vidéo du commerce (Call Of Duty Ghosts, TitanFall, Watch_Dogs, etc) ainsi que dans de futurs titres à paraître. Un succès qui, au lendemain de la sortie de Watch_Dogs (voir d'ailleurs notre guide technique), irrite un brin AMD. Et ce n'est peut-être pas un hasard si Forbes nous expliquait récemment que GameWorks était au final une mauvaise chose pour l'industrie du jeu vidéo PC.
Mais GameWorks qu'est-ce que c'est au juste ? Comme nous vous l'expliquions en mars dernier, GameWorks permet aux développeurs d'intégrer facilement, via l'ajout d'une libraire externe, des technologies plus ou moins complexes : simulation de feu, rendu de l'eau, rendu de chevelure, ou encore d'ajouter la prise en charge des effets HBAO+ ou de l'anticrénelage TXAA. En clair, NVIDIA propose aux développeurs des solutions clés en main pour implémenter des technologies de rendu ou d'effets prêtes à l'emploi dans leurs jeux .
AMD : « GameWorks est une boîte noire »
Sur le papier, la démarche est a priori louable : mettre à disposition le fruit de la R&D de NVIDIA pour faire avancer les jeux vidéo et l'utilisation des GPU. Mais voilà, elle s'accompagnerait vraisemblablement d'un certain nombre de pratiques ou de limitations qui pourrait favoriser NVIDIA et ses cartes graphiques, au détriment d'AMD et de ses Radeon. Richard Huddy, de retour chez AMD en tant que Gaming Scientist après un passage éclair chez Intel, a pu nous livrer son point de vue sur GameWorks lors de son passage à Lyon. Un point de vue clair : GameWorks n'est ni plus ni moins qu'une boîte noire sur laquelle le développeur du jeu n'a aucun contrôle, aucune maitrise puisqu'il ne connait pas le code qu'elle renferme et ne peut donc pas juger de son efficacité le plaçant à la merci de NVIDIA.Richard Huddy pointe du doigt le fait que les fonctionnalités proposées par GameWorks se matérialisent sous la forme de DLL. Des DLL fournies par NVIDIA, avec des versions différentes qui se succèderaient et que le développeur du jeu ne pourrait modifier. AMD se refuse pour sa part à optimiser ses pilotes pour des DLL. La marque explique en effet que le meilleur moyen d'optimiser ses pilotes pour un jeu est l'accès au code source. Certes, il serait possible de pratiquer un reverse engineering des DLL en question pour arriver au même résultat, mais Richard Huddy explique que cette procédure est bien plus longue et donc coûteuse.
Call Of Duty : Ghosts - Un jeu GameWorks
Richard Huddy explique d'ailleurs que NVIDIA proposerait avec ses drivers day-one (lors de la sortie de jeux vidéo) des shaders de substitution pour certaines fonctions des DLL GameWorks. Des shaders qui selon lui, ne comporteraient que quelques lignes de code quand ceux des bibliothèques GameWorks en font plusieurs centaines, suggérant ainsi que NVIDIA alourdirait volontairement les outils qu'il met à disposition des développeurs.
Côté code source, AMD pointe du doigt l'obscurantisme supposé de NVIDIA. Selon AMD et Richard Huddy, NVIDIA ne donne plus aucun exemple de code source pour l'utilisation de ses librairies GameWorks : il faut nécessairement les contacter pour signer un accord de licence et avoir ainsi accès au code. Vérifications faites, il existe quand même bien des exemples de code GameWorks librement accessibles sur le portail des développeurs de NVIDIA et selon le niveau de licence qui lie un développeur avec NVIDIA, le développeur aura accès au code source de ces fameuses DLL. Et Richard Huddy d'accuser NVIDIA d'interdire explicitement aux développeurs de partager le code source qu'ils peuvent avoir avec AMD. Selon l'intéressé, plusieurs développeurs qu'il ne peut malheureusement pas citer, ont des termes de licence très strictes qui les empêchent de discuter de certains points avec AMD. Une pratique qui, si elle était avérée, serait évidemment contestable.Et si AMD pouvait craindre que GameWorks soit intégré nativement à l'Unreal Engine 4 d'EPIC, ce ne serait finalement pas le cas, contrairement à ce que dit NVIDIA. Seules les technologies PhysX feraient finalement parties de l'Unreal Engine 4.
Et chez NVIDIA qu'en pense-t-on ?
Nous avons bien sûr contacté NVIDIA pour obtenir le point de vue de la marque sur certaines de ces allégations. Chez le caméléon c'est l'énervement qui prévaut, la firme estimant avoir déjà répondu aux accusations d'AMD notamment au travers de ce papier. Au sujet des problématiques de licence vis-à-vis du code source, NVIDIA nous indique :« Le code source de GameWorks est fourni aux développeurs via un accord de licence. Il ne peut pas être distribué à des tiers sans licence. Ce n'est pas une nouvelle pratique et c'est, du reste, assez courant dans l'industrie pour un middleware qu'il s'agisse de NVIDIA, d'AMD ou d'Intel. En général, les développeurs de jeux ne fournissent pas leur code source et l'optimisation s'effectue via des binaires. »
Au passage, NVIDIA se demande si AMD reçoit le code source de tous les titres PC majeurs et les middleware utilisés. NVIDIA enchaîne en donnant son point de vue sur le meilleur moyen d'optimiser un jeu PC :
« C'est une perspective assez étrange, puisque le développeur livre la DLL avec le jeu, il n'y a aucun changement masqué. AMD ne livre pas le code source de Mantle et n'a pas mis à disposition les sources pour leur version compute de l'occlusion ambiante pas plus que le leur code source de TressFX avant son intégration dans Tomb Raider. En général, les développeurs de jeux ne distribuent pas le code source de leurs créations : l'optimisation pour un jeu implique toujours de travailler avec un code compilé plutôt qu'avec le code source du jeu même. »
NVIDIA insiste enfin sur sa volonté de rendre les jeux PC meilleurs, plus beaux et plus cool, en rappelant au passage ses efforts de recherche et développement, des efforts qui, selon NVIDIA, profitent à l'industrie dans son ensemble.
Quelle conclusion ?
Vous l'aurez compris, AMD et NVIDIA nous refont le coup du « c'est pas moi c'est l'autre » dans cette affaire. Si nous ne doutons pas que les deux protagonistes puissent par moment faire preuve de mauvaise foi, on reste sensible au problème soulevé par AMD. Qu'un développeur de jeu puisse inclure à l'aveuglette des morceaux de code sans connaître leur nature nous paraît discutable. Bien sûr l'initiative de NVIDIA avec GameWorks est tout à fait compréhensible : enrichir les jeux vidéo en les rendant plus réalistes sans compliquer la vie des développeurs. En ce sens, GameWorks œuvre pour le jeu vidéo PC et pour que celui-ci ne soit pas une simple adaptation des titres consoles. Seulement voilà cette initiative semble s'accompagner de restrictions qui peuvent induire une distorsion de la concurrence et ici nous ne pouvons pas la cautionner. Bien sûr il n'est pas anormal que NVIDIA cherche à protéger son portefeuille de brevets et le fruit de ses investissements en recherche et développement mais si cela veut dire que potentiellement 40% des joueurs PC se retrouve avec des jeux mal optimisés c'est tout à fait regrettable... Quant à AMD, la marque a aussi beau jeu de se présenter en victime dans cette affaire. On se souvient parfaitement de Dirt: Showdown et de son paramètre d'illumination globale qui fonctionne aux petits oignons sur AMD mais gréve les performances chez NVIDIA de façon à peine croyable. De la même manière, les problèmes de plantage et absence d'optimisation sur les cartes NVIDIA du dernier Hitman, Hitman: Absolution sont encore dans nos mémoires. Finalement, tout ceci n'est pas vraiment nouveau : depuis des années AMD et NVIDIA fournissent leurs trouvailles à leurs partenaires avec pour résultat des prestations assez catastrophiques sur les cartes concurrentes. On se souvient également du programme TWIMTBP de NVIDIA « The Way It's Meant To Be Played » et de ses dérives. Tout comme feu le SDK RenderMonkey d'AMD.
Et difficile de ne pas évoquer Mantle, l'API de rendu nouvelle génération d'AMD dont le code source n'est pas non plus public (pas plus que le SDK, du moins pour le moment) et qui par nature ne sera jamais adoptée par NVIDIA ou même Intel pour des raisons politiques. Bref... dans cette histoire personne n'est vraiment blanc comme neige. On aimerait dire qu'au final c'est au développeur de jeu de faire le bon choix et de s'assurer que son titre fonctionne convenablement sur l'ensemble des configurations PC, la diversité ayant toujours été la force et la faiblesse du PC. Mais la réalité est que les considérations économiques l'emporteront souvent si ce n'est toujours. Affaire à suivre.