Le Source Engine de Valve, pas natif OpenGL ?

Arnaud de la Grandière |
Valve avait annoncé que le portage de ses jeux sur Mac serait un vrai portage natif. Or en inspectant les fichiers du Source Engine, Netkas s'est aperçu qu'il était fait mention de conversion DirectX.

skitched


Le sujet a été levé sur le forum de Steam, et Rob Barris y a répondu :

« J'ai écrit le module OpenGL pour la version Mac de Source. Il présente au moteur une interface compatible avec DirectX9, le moteur fait appel à moi, je fais appel à OpenGL, des points apparaissent.

Les problèmes de performance en question sont de manière générale au niveau des pilotes - en dessous de cette couche. Cette interface ne démontre aucun ralentissement notable dans nos tests.

L'application a été compilée avec gcc en binaire natif Mach-O en utilisant les outils de Mac OS X »


La polémique est il est vrai quelque peu abusive : tous les jeux portés de Windows à Mac OS X, aussi "natifs" soient-ils, utilisent ce système d'interface DirectX-OpenGL. Aspyr et Feral Software utilisent le même procédé pour porter leurs jeux sur Mac, à l'aide d'une interface DirectX-OpenGL qu'ils utilisent dans chacun de leurs portages. Ce qui permet également d'avoir des mises à jour globales du code entre Windows et Mac OS X sans avoir à tout réécrire. Rappelons également que le passage d'une ligne de code à l'autre (ce qu'implique ce découpage des fonctions) prend à peu de chose près un cycle processeur, et que les Core 2 Duo qui équipent nos Mac en exécutent plusieurs milliards par seconde…

Par ailleurs, puisqu'il en est question, notez que Portal a été mis à jour. Il vous suffit de lancer Steam pour que la mise à jour soit téléchargée et installée automatiquement.
Tags
avatar salamandre40 | 

J'ai fait la mise à jour de portal et les performances sont encore pires qu'avant... (macbook pro 2010 ecran hd)

avatar lennoyl | 

Le pire dans tout ça, c'est que des boulets vont s'en prendre à Valve alors que la cause des différences entre les versions Mac et PC des jeux est, encore une fois, ces fainéants d'Ado....euh... d'Apple ^^.

avatar azgard | 

je suis ravis de portal, premier jeu que j'ai essayé sur steam. Il fonctionne très bien et mon vieux mbp ne ventile pas beaucoup.
Par contre, il n'y a que les 19 cartes + bonus ? Ce n'est que ça portal ?

avatar françois bayrou | 

démarrage plus sympa avec la maj : la bascule plein écran est plus rapide.
Mais qu'est ce que ca rame !
Chez moi le moteur de quakeLive est beaucoup plus fluide sur des scènes 3D bien plus complexes, donc le problème ne vient pas que des pilotes mais aussi du moteur, non ? Qu'en pensez vous ?

avatar Psylo | 

Pour les pilotes de merde, y'a toujours bootcamp. Mais pour les cartes graph de merde, rien à faire... faut vraiment être sévèrement psychotique ou défoncé à l'éther pour vouloir jouer sur un Mac.

avatar salamandre40 | 

Je pense aussi qu'il y a quelques problèmes avec le moteur, car avant la mise à jour le jeu était plus fluide. Maintenant quand je crée les "portal", je ne vois plus à travers, à la place il y a une horrible texture noire...

Par contre ce jeu est vraiment sympa!!

avatar Arnaud de la Grandière | 

@ François Bayrou : Ca peut aussi venir de ta configuration… certains ont fait état de grandes améliorations en passant à la dernière version de Paragon NTFS par exemple.

avatar melaure | 

Ces gens n'ont aucune excuse. Si Blizzard est capable de pondre des jeux natifs Mac propres, les autres devraient l'être aussi. Fuyons donc tout ce qui n'est pas bien fait sur Mac.

D'ailleurs dans l'histoire du jeu sur Mac, on pas eu beaucoup de titres, mais au moins les éditeurs le faisait bien pendant 20 ans (d'Apache Strike à Unreal Tournament). Depuis le passage à Intel, on ajoute des couches d'émulation aux jeux PC. Refusons cette logique !

Le Mac ne doit pas être une sous-plateforme avec des jeux baclés !

avatar Arnaud de la Grandière | 

@ Melaure :

1) il n'est nullement question d'émulation.
2) Blizzard utilise le même procédé pour ses jeux
3) Unreal Tournament utilise le même procédé
4) les jeux portés sur PowerPC utilisaient les mêmes interfaces DirectX-OpenGL.

avatar françois bayrou | 

@nonoche :je n'ai pas parangon NTFS ! et je ne vois plus non plus à travers les portails, fini les belles mises en abyme :) A mon avis une maj va sortir dans pas longtemps.

@psylo : ma GeForce 8600M GT "de merde" s'en sort très bien sur quake live, y compris sur les grandes maps CTF, pleines de joueurs, du fog, de la texture mouvante, 10x plus de triangles, etc etc ... alors que ca rame dans portal avec 2 pièces cubiques à afficher :( Dire qu'il n'y a rien à faire me semble un peu exagéré

Merci à Valve d'avoir offert Portal, ca donne une idée des performances, et elles sont décevantes chez moi, ca ne donne pas envie d'acheter

avatar rulian | 

@melaure : Ah... ignoranc, quand tu nous tiens...tu nous fais dire des Conn.....
C'est pas vrai que j'entend au loin les éternelles raleurs... Steam, sur Mac, ca va nous apporter plus de jeux alors que le jeu semblait mort sur Mac depuis notamment Bootcamp.
Steam, c'est TRES positif, si ca ne vous plait pas, achetez un PC ou ne Jouez pas...

avatar jodido | 

ouais moi il m'est un pti moment à se lancer portal mais après ça va je trouve!

avatar sield | 

Sur MacBook C2D avec GMA x1300 (?) portal m'indique que je risque d' avoir des soucis si je lance le jeu :-( quelqu'un a essayé ?

avatar jerdopler | 

Moi aussi je ne vois plus a travers les portails c'est un peu gênant pour jouer !!!!!!
J'espère qu'ils vont corriger ça !!!

avatar discolan | 

Pareil ! Depuis la mise à jour, les portails sont noirs. :(
MBP 8600M GT

avatar Zed-K | 

@ sield :
Avec une GMA on te dit que tu "peux avoir des soucis" ??
Avec ma 7300 GT, on me dit "merci de changer de carte", même pas moyen de lancer le jeu mdr...

En fait c'est toute la série des 7xxx qui n'est pas compatible.
Question posée dans un sujet [url=http://forums.steampowered.com/forums/showthread.php?t=1266238]sur leur forum[/url], le développeur en charge du portage Mac du moteur source me répond qu'il manque une fonction OpenGL dans le driver Nvidia fourni par Apple, réponse qui me paraît douteuse vu que le jeu fonctionne à la perfection via CrossOver (qui utilise une couche de traduction DirectXOpenGL).
Et maintenant j'apprends qu'ils utilisent le même procédé.
Le développeur n'a d'ailleurs plus répondu sur le sujet par la suite...

Bon, c'est que le début, mais j'espère franchement qu'ils vont pas la jouer façon Adobe ("nous on bouge pas, çay la faute à Apple"...)
Surtout que TOUS les jeux utilisant le moteur Source utiliseront cette couche d'interfaçage... donc aucun jeu Source pour les 7xxx, alors que tout fonctionne à la perfection sous Windows ou sur OSX via CrossOver...

Pour les perfs OpenGL, je veux bien qu'elles soient moins bonnes (cf. l'article sur MacGen il y a peu qui comparait les perfs avec celles sur Windows et Ubuntu), mais les écarts font parle françois bayrou laissent penser que quelque chose cloche.

avatar Arnaud de la Grandière | 

@ sunjohn : sachant que DirectX et OpenGL ont tous deux pour vocation d'être des langages universels pour accéder aux fonctions matérielles des cartes graphiques de toutes marques, les deux ont les mêmes jeux d'instruction, à peu de chose près.

avatar G.rom | 

@françois bayrou : Le moteur de quake3 n'est plus qu'une vieillerie aujourd'hui, rien à voir avec le moteur source.

avatar control.alt.suppr | 

@nonoche: l'Unreal engine était codé en OpenGL au départ, avec aussi une version DX disponible (mais bien moins beau).

@sunjohn: ils parlent de l'appel de fonction supplémentaire ajouté par la couche intermédiaire, un appel de fonction (passage de paramètre, ajout à la pile...) ne prend effectivement que quelques cycles processeur.

avatar Psylo | 

@françois bayrou
Une GeForce 8600M GT qui fait tourner QuakeLive, mon dieu c'est impressionnant ! No comment.
Comme d'hab, le maceux n'a aucune vision cohérente de son hardware et des softs qui tournent dessus. Merci la propagande Apple, mentir aux gens, désinformer et les laisser dans l'ignorance, c'est des méthodes déplorable. Big Brother quand tu nous tiens...

avatar salamandre40 | 

@Psylo

La 8600 M GT n'est pas terrible... mais half life 2 episode 1 devrait tourner correctement (voir lien çi dessous), alors Portal...

http://www.notebookcheck.net/NVIDIA-GeForce-8600M-GT.3986.0.html.

avatar françois bayrou | 

@psylo
"Une GeForce 8600M GT qui fait tourner QuakeLive, mon dieu c'est impressionnant ! No comment."

Ben du coup tu es d'accord avec moi, elle devrait faire tourner Portal aussi bien, voire mieux, non ?

avatar G.rom | 

@françois bayrou : non justement, portal est beaucoup plus évolué que quake live ;)

avatar Cekter | 

Hey les gens, je sais pas si beaucoup d'entre vous sont gamers mais les perfs là sont pitoyables hein...

Après je ne sais pas si c'est la faute à Apple ou à Valve ou à la fée clochette mais le résultat est là : c'est pas terrible.

Y a que Torchlight qui s'en sort MAIS ENCORE HEUREUX c'est fait pour tourner sur netbook ce jeu.

Par contre MacG est toujours content... C'est beau la constance...

(et c'est beau de lire des conneries du genre : "Rappelons également que le passage d'une ligne de code à l'autre (ce qu'implique ce découpage des fonctions) prend à peu de chose près un cycle processeur, et que les Core 2 Duo qui équipent nos Mac en exécutent plusieurs milliards par seconde". Je me doute que vous devez absolument défendre Apple par intérêt et par conviction mais si on peut se passer des enfumages pour enfant de 5 ans ça serait bien. Ou alors servez les à nos potes autistes d'Apple genre mr S.)

avatar acid_junkie | 

Conversion DirectX -> OpenGL? Voila qui explique bien des choses!
Le reverse engineering n'a que rarement produit des programmes performants.

@nonoche: plusieurs devs de jeux que je connais m'ont dit que DirectX est beaucoup plus facile et moins tordu que OpenGL. Sinon, je trouve qu'on pourrait refaire passer Microsoft devant la commission anti-trust pour DirectX. Ne pas partager DirectX a un impact grave sur la concurrence et est une des raisons principales de son hegemonie.

avatar Cekter | 

peut être aussi que la raison de l'hégémonie de windows est qu'il est installable sur n'importe quelle machine et pas exclusivement réservé à des ordinateurs aux cartes graphiques obsolètes pour un prix délirant... Enfin je dis ça je dis rien...

avatar françois bayrou | 
avatar Arnaud de la Grandière | 

@ Cekter : c'est bien beau d'appeler ça des "conneries", encore faudrait-il que tu argumentes un minimum pour en faire la démonstration… autrement dit c'est une accusation gratuite.

avatar G.rom | 

@françois bayrou oui je connais ;) compare ne serait-ce que le lance rocket de quake et l'arme de portal ;) après le design de portal peut te paraitre vide mais les textures sont plus belles, effet de lumière, reflets, etc... incomparable, sans compter la physique qui ne se voit pas à l'écran, etc... Rajoute encore que dans portal tu mets de l'antialiasing et filtre de texture, il ne reste plus rien de quake. Ce n'est pas une gueguerre hein, juste que le moteur de quake3 a fait son temps ;)

avatar HAL-9000 | 

Rhhho Cekter est très en forme en ce vendredi :p

"Ne pas partager DirectX a un impact grave sur la concurrence et est une des raisons principales de son hegemonie."

LOL mais LOL quoi !

avatar Aughta | 

Pareil, je ne vois plus ce qui se passe derrière un portail :-)
Sinon, je préfère ça : la mise en place du plein écran directement.
Ça sera certainement vite réglé le souci avec les portails, Valve est plutôt réactif.
Un regret : J'avais acheté Bioshock sur Steam à l'époque via BootCamp…
… Et là je ne peux pas le récupérer en version Mac alors qu'il existe en natif :-p

avatar Arnaud de la Grandière | 

@ Aughta : c'est tout bêtement parce que l'éditeur de la version Mac (Feral) est différent de l'éditeur de la version PC (2K games), alors que tous les jeux Steam Play sont publiés par le même éditeur. Feral ne semble pas vouloir distribuer ses jeux sur Steam pour le moment, mais même s'ils le faisaient, l'achat de la version Windows de Bioshock ne pourrait pas intégrer la version Mac.

avatar T Ki | 

Un portage "natif" qui marche moins bien qu'une émulation est une merde. Valve pour Mac est donc une merde. L'utilisateur se fout de savoir de qui c'est la faute, tout ce qu'il a besoin de savoir c'est que c'est la pire façon de faire tourner un jeu, même avec une émulation à la CrossOver ça tourne mieux...

avatar monkey_wp | 

@G.rom @françois bayrou
Certes Quake 3 est d'un autre age mais source n'est plus tout jeune non plus et sur une 8600M GT ça devrait tourner impec, sur ma 8800 ça roule du tonnerre (bon faut dire aussi qu'entre une 8600 et une 8800 il y a un fossé).
françois regarde cette vidéo : http://www.youtube.com/watch?v=ZcY2ZwL5jWo
normalement ça devrait être comme ça avec une 8600

avatar Arnaud de la Grandière | 

@ T Ki : Crossover ça n'est pas de l'émulation, c'est un wrapper. C'est une version de Wine (WINE = Wine Is Not an Emulator).

C'est le même principe que l'interface DirectX-OpenGL, sauf que ça vaut pour toutes les API de Windows/Mac OS X et non juste pour DirectX/OpenGL.

L'émulation, ça permet d'exécuter du code binaire destiné à une plateforme matérielle donnée sur une autre plateforme matérielle. Rien à voir.

avatar ErGo_404 | 

[quote]acid_junkie [14/05/2010 13:07]

Conversion DirectX -> OpenGL? Voila qui explique bien des choses!
Le reverse engineering n'a que rarement produit des programmes performants.

@nonoche: plusieurs devs de jeux que je connais m'ont dit que DirectX est beaucoup plus facile et moins tordu que OpenGL. Sinon, je trouve qu'on pourrait refaire passer Microsoft devant la commission anti-trust pour DirectX. Ne pas partager DirectX a un impact grave sur la concurrence et est une des raisons principales de son hegemonie.[/quote]
Dude, vu qu'apparemment tu ne sais pas ce qu'est le reverse engineering, je vais simplement supposer que tu ne sais pas de quoi tu parles dans le reste non plus. Dans ce cas, on ne dit rien.
Le reverse engineering consiste à analyser un système (en général) fermé, comme un logiciel, pour le modifier ou pour s'interfacer avec lui. Rien à voir avec un système qui permet de basculer entre DirectX et OpenGL selon le système sur lequel on se trouve.

avatar KillerX | 

J'ai essayé Portal avec le GMA X3100 (MacBook blanc 2.4GHz early 2008), et c'est légèrement saccadé avec toutes les options graphiques au minimum.

avatar T Ki | 

@nonoche
Merci, je sais comment ça marche. J'essayais juste de faire simple.
Au cas où... Citation du Robert, j'ai ajouté le gras :
[quote](V. 1972; angl. emulation, de to emulate. → Émuler). Inform. Mode de fonctionnement qui consiste à simuler (è Émuler) un sytème informatique, [b]un logiciel[/b] ou un composant électronique à l'intérieur d'un autre.[quote]

avatar Cekter | 

bon apparemment c'est un peu de la daube pour le moment le truc de valve sur mac.

Comme disait un lecteur de macbid : bon effet d'annonce mais rien derrière...

Décidément y a que Blizzard qui assure (parce que ce n'est ÉVIDEMENT PAS la faute d'Apple, impossible ça, jamais voyons, quelle idée).

avatar Arnaud de la Grandière | 

@ T Ki : alors tu as fait trop simple, en comparant l'interface DirectX-OpenGL de Valve à "l'émulation" de Crossover, alors que les deux sont basés sur le même principe, bien que porté plus loin dans Crossover. Et le fait de parler de logiciel n'est pas discriminant en termes d'émulation (je parlais bien de code binaire…)

avatar Arnaud de la Grandière | 

@ Cekter : une bonne fois pour toutes, Blizzard fait exactement la même chose que Valve en l'occurence.

avatar HAL-9000 | 

"Think different. think not optimized" Apple - 2010.

avatar spacetito | 

C'est pas aussi bon que sur windows sur la même machine mais ça tourne trois fois mieux en termes de FPS et de stabilité que la merde de crossover... En tous les cas virez dejà l'anti aliasing les pilotes osx gere ça tres mal. Pour moi même sur le 27" en résolution native les jeux fonctionnent parfaitement, idem sur mon i5 portable donc bon...

avatar melaure | 

@nonoche

Depuis quand Unreal Tournament utilise un driver DirectX OpenGL ???

Il est natif ! Ignare toi même ! C'est grâce à ça qu'il y avait une version Amiga ...

Non ce n'est pas acceptable que les jeux ne soient pas directement développé en OpenGL, ce qui était le cas il y a une dizaine d'année ! Et non pas d'émulateur DirectX sur PPC ... N'importe quoi ton numéro 4 (comme le reste).

Steam n'est qu'une bonne nouvelle pour ceux qui ont renoncé au jeu vraiment fait pour OS X, et qui acceptent encore une fois de faire un sacrifice, même s'il n'est pas aussi important que l'émulateur derrière C&C 3 et cie ...

C'est plutôt Rulian qui devrait acheter un PC plutôt que de ne faire que la moitié du chemin avec Steam.

Je ne veux ni PC ni Steam, mais que les boites développent proprement pour Mac. Sinon les versions Mac seront souvent mauvaises et rares comparé au PC.

Je jouerais sur Mac SANS Steam, c'est tout !

avatar Arnaud de la Grandière | 

@ Melaure : Déjà, je ne me suis jamais permis de te traiter d'ignare, à l'inverse de toi. Je me suis juste contenté de rappeler certains points. J'ai sans doute été trop vite en besogne concernant Unreal, cependant, l'argument reste le même : strictement TOUS les jeux qui ont été développés initialement pour DirectX utilisent ce procédé pour rediriger les appel vers OpenGL. Tous, sans exception, y compris sur PowerPC (je rappelle qu'il ne s'agit là nullement d'émulation).

S'émouvoir de ce procédé, c'est comme si on trouvait impensable que certaines parties du code d'un jeu soient passés en fonctions au lieu d'être reproduites à chaque fois qu'il y en a besoin pour économiser une poignée de milliardièmes de secondes. C'est juste grotesque.

avatar TequilaPhone | 

@Nonoche

On peut avoir la source ou Blizzard utilise le même procédé pour ses jeux ? Parce que à moins de faire erreur, Blizzard code en DirectX et OpenGl.

avatar kash3r | 

Chez moi aussi, depuis la MAJ on ne voit plus à travers les portes juste du noir.
Steam plante encore plus.
MPB 9600 512

avatar Orus | 

Eh bien moi avec mon iMac et sa ATI Radeon HD 4850, aucun problèmes, ça roule impeccable !

avatar melaure | 

Effectivement nonoche c'était la réaction de Rullian ... j'ai mélangé et c'est lui qui m'a énervé.

Après UT, je m'en doutais bien, sans forcément approuver. Mais tu n'as pas tord, ces branchements dans le code ne coûtent pas bien cher aujourd'hui vu la puissance des procs.

Ensuite il y a quand même toujours les problèmes d'optimisations sur Mac, car même à l'époque ou OpenGL était devant DirectX sur PC, les jeux étaient plus véloces que sur Mac.

Et encore plus avant, c'était difficile de comparer les sprockets ou Quickdraw avec la concurrence ...

Ceci dit ce n'est pas la seule chose qui me gène, je n'aime pas non plus le système de distribution par le logiciel Stream ... ;)

avatar Arnaud de la Grandière | 

Explication dans le détail.

Le code source fait appel à une API du système pour afficher de la 3D. Pour simplifier, mettons qu'avec DirectX la commande d'affichage d'un cube ressemble à ça:

DessineCube(coordX, coordY, coordZ, angleX, angleY, angleZ, taille);

Entendons-nous bien : il s'agit là du code source avant compilation. Sur OpenGL, mettons que la fonction pour dessiner un cube ressemble à ceci :

CubeDessin(taille, angleX, angleY, angleZ, coordX,coordY,coordZ);

Ce que tu appelles un "portage natif" consisterait à remplacer l'un par l'autre à chaque fois qu'il apparait dans le code.

Si on compile le code pour DirectX sur Mac OS X, il y aura une erreur indiquant que la fonction DessineCube n'existe pas. Il suffit d'ajouter la définition de la fonction et de la transmettre à OpenGL en ajoutant ceci au code:

(void) DessineCube(coordX, coordY, coordZ, angleX, angleY, angleZ, taille) {
CubeDessin(taille, angleX, angleY, angleZ, coordX,coordY,coordZ);
}

Donc à chaque fois que le code source original fera appel à la fonction DessineCube, le programme ira exécuter la "fausse" fonction DirectX, qui transmet les paramètres à OpenGL dans l'ordre où il les attend. L'opération, une fois compilée, a un impact négligeable sur l'exécution du code, et permet de modifier le code source le moins possible pour le rendre exécutable. L'intérêt c'est qu'il n'y a pas à renouveler cette opération à chaque fois que le code source fait appel à la fonction DessineCube, c'est fait une fois pour toutes. Et une fois qu'on a une bibliothèque qui reprend toutes les fonctions de DirectX, on peut l'appliquer indifféremment à tous les logiciels qui font appel à ces fonctions. C'est ce que font toutes les boîtes qui font un portage natif de jeux sur Mac (naturellement, le portage d'un jeu ne se limite pas aux seules redirections des appels vers DirectX).

Pages

CONNEXION UTILISATEUR