Mac Gaming : pourquoi y a-t-il toujours aussi peu de portages de jeux sur macOS ?

Pierre Dandumont |

En dépit de quelques efforts de la part d'Apple et d'une part de marché du Mac qui augmente année après année, les portages de jeux PC ou consoles vers macOS restent finalement assez rares. Pour ne rien arranger, ces portages souffrent parfois de performances en retrait. Pourquoi ce désamour ? Voici nos explications.

Notre série Mac Gaming 🎮
  1. Comment le mode Jeu de Sonoma optimise les performances lors des parties
  2. Le Game Porting Toolkit, un outil pour développeurs qui profite aux joueurs
  3. Apple a-t-elle vraiment ce qu'il faut pour séduire les joueurs ?
  4. Pourquoi y a-t-il toujours aussi peu de portages de jeux sur macOS ?
  5. Quels sont les gros jeux disponibles sur Mac ?

Une architecture atypique

Du temps des Mac Intel, Apple employait les mêmes GPU que les PC, avec des puces AMD, Intel ou même Nvidia dans une époque lointaine. Avec les Mac Apple Silicon, les GPU proviennent des GPU des iPhone, qui dérivent de l'architecture de PowerVR. Et pour les développeurs, c'est un souci. De façon extrêmement simplifiée, les GPU classiques effectuent un rendu dit immédiat : un triangle (la base dans une scène 3D) est pris en charge, rendu sous la forme de pixels et écrit en mémoire. Si un second triangle arrive et se place devant le précédent dans la scène, le premier a été calculé inutilement. Cette solution est efficace, mais gâche parfois de la bande passante mémoire.

Cette vieille démo PowerVR montre bien l'intérêt du rendu différé. Elle empile à l'infini des cartes à jouer rendues en 3D. Dans le cas des GPU à rendu immédiat, les anciennes cartes empilées ralentissent les performances, même si elles sont cachées sous le tas.

Dans les GPU d'Apple et dans quelques GPU mobiles, le rendu est dit différé : les triangles sont traités dans une première passe (avec un découpage dans de petites zones appelées tuiles, tiles en anglais) pour vérifier ceux qui sont invisibles et le reste du rendu est ensuite appliqué uniquement sur les visibles dans une seconde passe. Cette solution a l'avantage de réduire la bande passante mémoire — ce qui explique ce choix dans les appareils mobiles — et d'obtenir un bon ratio entre performances théoriques et pratiques, mais empêche la mise en place de certaines techniques modernes.

Cette voie pose par ailleurs un problème quand la géométrie est plus complexe que le reste du rendu et nécessite donc parfois quelques ajustements au niveau du moteur 3D. En fait, c'est précisément ce point qui a probablement poussé Apple à offrir le Game Porting Toolkit et qui permet justement de mettre en avant les opérations bloquantes.

Si les différences entre les architectures peuvent sembler anecdotiques, elles ne le sont pas en pratique : dans le monde PC, les développeurs ont déjà du mal à proposer des titres qui fonctionnent aussi bien avec les GPU de Nvidia que ceux d'AMD et depuis quelques mois d'Intel. Il n'est pas rare de voir des mises à jour qui accélèrent certains jeux de façon très significative sur une marque précise de GPU et (surtout) les fabricants de cartes graphiques offrent régulièrement des pilotes qui améliorent les performances sur le dernier AAA à la mode. Et si les développeurs peuvent tenter de corriger les goulets d'étranglement dans leurs moteurs 3D, espérer un comportement proactif de la part d'Apple reste un doux rêve : la société met rarement à jour ses pilotes (au mieux, vous aurez une nouvelle version dans une mise à jour mineure d'iOS ou macOS) et encore plus exceptionnellement pour améliorer les performances dans les jeux.

L'arrivée de Starfield a amené sa cohorte de pilotes « optimisés », un joli mot pour dire adapté au moteur.

Tout cela implique que les développeurs doivent bien comprendre le fonctionnement des GPU Apple, ce qui n'est pas une évidence dans le cas d'un portage, et doivent aussi parfois essayer d'adapter un code qui n'a pas du tout été pensé pour la manière de faire des puces d'Apple, ce qui peut amener l'absence de certains effets ou des résultats nettement plus faibles, et ce même si les GPU offrent une puissance brute à peu près similaire.

L'obstination d'Apple avec Metal 3

Le cas des API 3D est un problème un peu particulier. Historiquement, elles étaient très nombreuses : dans les années 1990, chaque fabricant avait sa propre API, c'est-à-dire un ensemble de commandes standardisées, pour ses cartes, et parfois même plusieurs en fonction des puces. Assez rapidement, le marché s'est resserré et deux API ont pris l'ascendant : DirectX (plus exactement Direct3D, le pendant lié à la 3D, bravo, vous suivez) et OpenGL. Apple a choisi à l'époque OpenGL, pour la bonne et simple raison que DirectX était propriétaire et appartenait à Microsoft.

avatar Furious Angel | 

C’est l’œuf est la poule. Y’a pas de joueurs sur Mac donc les développeurs n’y vont pas. Y’a pas de jeux sur Mac donc les joueurs n’y vont pas.

La solution ? Qu’Apple mette la main à la poche pour les portages.

avatar Ichigo-Roku | 

@Furious Angel

Est-ce vraiment un problème de ne pas avoir les gros jeux du monde PC/consoles sur macOS ?

avatar melaure | 

@Ichigo-Roku

Non on peut avoir des tas de jeux sympa moins ambitieux. Un bon vieux Escape Velocity nous a amusé des dizaines d’heures sans necessité une config démente.

Par contre ce qui fera venir les jeux c’est la part de marché. Or Cook préfère la large au nombre et il l’a encore montré à la dernière keynote. On a du matos pas si mal mais les prix n’ont rien à voir avec la réalité des coûts de fabrication. Tim a transformé un constructeurs informatique en Black Rock, faut pas s’étonner qu’ob soit les dindons de la farce ;)

avatar Ichigo-Roku | 

@melaure

Oui du coup pas forcément besoin de rendre compatible les jeux Windows/consoles. Avoir des jeux de développeurs macOS et/ou iOS pourrait suffire.

avatar fabricepsb71 | 

@Ichigo-Roku

La seule chance pour que le Mac devienne un jour une plateforme de jeu ce sera lorsque les éditeurs du monde PC/Windows/console s’y intéresseront.
Rien à faire des jeux faits par des développeurs spécialisés MacOS si c’est pour un avoir, au final, un désert logiciel comme aujourd’hui.
Les nouveaux jeux de cette fin d’année existent grâce à des éditeurs qui ne connaissaient pas MacOS il y a encore deux ou trois ans.

avatar Ichigo-Roku | 

@fabricepsb71

Pour moi personne ne souhaite aller dans ce sens (que ce soit Apple ou les éditeurs de jeux), la situation s’empire d’années en années sur macOS pendant que ça s’améliore côté GNU/Linux.
Pour moi que ce soit Apple ou les éditeurs ils ont fait leur choix sur les 5/10 prochaines années.

avatar hougoul | 

@Ichigo-Roku

Whaou, et bien Apple a vraiment de l’argent à foutre par la fenêtre.
Pourquoi donc s’emmerdent t’ils a faire des outils pour aider les développeurs à faire des jeux sur Mac et en 3D
Pourquoi s’emmerdent t’ils à faire un GPU à mettre des accélérateurs de raytracing, a aider les gars derrière cinema 4D, a participer au développement de Blender.
Pourquoi diable vont ils perdre du temps et de l’argent à faire des présentations pour promouvoir des jeux sur Mac.
Pourquoi diable vont ils faire des vidéos et passer du temps à aider les gars de Baldurd Gate 3 à optimiser leur jeux pour la puce M1.

avatar Ichigo-Roku | 

@hougoul

Mais il n’y a pas que les gros jeux AAA, des jeux cloisonnés aux OS Apple il y en plein, tout ce qu’Apple fait ça sert mais pas pour les éditeurs AAA dont il est question ici.
Si un éditeur veut aller dans le sens d’Apple bien évidement qu’ils vont les aider, ça rapporte de l’argent à Apple hein.
Mais la majorité des éditeurs de jeux s’en foutent car ce n’est pas un gros marché et qu’en plus Apple ne leur simplifie pas la tâche pour le développement de jeux multiplateformes.

avatar koko256 | 

@Ichigo-Roku

Comme toujours (et souvent sur MacG) quand on n'y joue pas, cela ne manque pas. C'est comme les commentaires qui disent que TF1 c'est de la merde donc tant mieux si ce n'est plus disponible sur Apple TV.
Je ne suis pas sensible au retro gaming parce que c'est mon passé et j'en suis lassé. Et clairement, si les quelques AAA auquel je joue étaient porté sur Mac, je prendrais un M3Max portable et n'aurait plus besoin du PC fixe. Du coup je garde mon Air M1 qui ne fait rien tourner sauf Wow grâce à son style cartoon et attends que les fondeurs PC rattrapent leur retard en autonomie (j'ai vu un pub pour un lenovo avec 18h donc cela arrive mais je préférerais du ARM ou RISC-V car il y a bien un overhead à émuler un jeu CISC dans du RISC, essentiellement à cause de la complication pour avoir une compilateur efficace sur toutes les puces).

avatar Ichigo-Roku | 

@koko256

Bah ce n’est pas la question, le mac pourrait être une plateforme à part entière avec ses propres jeux.

avatar koko256 | 

@Ichigo-Roku

Pour jouer entre possesseurs de Mac (je ne parle pas seulement du multi-joueurs mais aussi des forums de discussions et des sites de fan) ? Non merci.

avatar Ichigo-Roku | 

@koko256

Que la communauté soit “Mac”, “PS5” ou autre ça change quoi ?
Et puis même si on regarde juste sur un seul jeu en détail, les communautés seront diverses.

avatar koko256 | 

@Ichigo-Roku

Mac, il n'y aura personne. Et beaucoup de jeux PS5 sont multiplateformes. C'est la masse qui fait qu'il y a une communauté.

avatar Ichigo-Roku | 

@koko256

Que macOS devienne une plateforme à part entière ou une plateforme à portages de AAA, des jeux et des communautés il y en a déjà et pour chaque jeu hein.

Les communautés sont éclatées, il n’y en a pas qu’une seule qui englobe le tout.

avatar koko256 | 

@Ichigo-Roku

Je répondais à "le mac pourrait être une plateforme à part entière avec ses propres jeux."
Dans ce cas la communauté de ces jeux "mac only" serait minuscule.
Je ne pense pas que des jeux que Mac soit une bonne idée.

avatar Grahamcoxon | 

Sans compter que les jeux arrivent après et que ceux qui voulaient vraiment y jouer y ont déjà joué. Je pense que le Mac ne sera jamais une vraie plate-forme de jeux mais si on pouvait avoir quelques triples A chaque année ce serait bien

avatar hougoul | 

Pour info, il me semble que les carte nvidia utilise le rendu par tuile depuis les geforce 9xx, tout comme les cartes dérivés des powervr.

avatar Pierre Dandumont | 

Pas de la même façon. Le tile caching de Nvidia c'est une optimisation qui permet de réduire un peu le problème des triangles inutiles. Mais en gros, depuis les premières GeForce c'est un des buts : arriver à conjuguer les avantages des deux types de rendu.

Après, le rendu immédiat est plus simple à mettre en place, et donc on peut compenser facilement avec la puissance brute sans chercher à corriger les défauts du rendu différé, et c'est la voie de pleins de fabricants depuis 25 ans.

avatar hougoul | 

@Pierre Dandumont

Plus personne ne fait du rendu immédiat, en tout cas dans les jeux vidéos, la majorité passe par la technique g-buffer.
Pour la transparence cela à toujours été un problème en rasterisation,
De plus sur les Apple silicone le système de tuiles n’est pas celui décrit dessus, il n’y a pas d’attente d’avoir rasterisé toute la géométrie pour le passer au fragment shader. Donc pas vraiment de différence avec nvidia.

avatar hougoul | 

Quelles sont les techniques modernes qui posent problème pour une architecture de rendu en tuile.
Nvidia ne me semble avoir aucun problème.

J’aimerai bien avoir des exemples car la je ne vois pas.
A moins que l’on parle de fonctionnalité non implementer mais c’est le cas quelque soit le GPU. Les rtx 20xx ont des limitations que non pas les jeunes soeurs et cela n’a rien avoir avec le rendu par tuile ou pas.

avatar Pierre Dandumont | 

nVidia n'est pas en rendu en tuile direct. C'est un rendu immédiat avec un petit cache au niveau des tuiles : ça permet d'économiser un peu de bande passante. Mais le rendu n'est pas différé. Très basiquement, l'image est découpée en tuile et il y a un cache pour les triangles pour éviter de traiter tout ce qui est inutile, mais uniquement par tuile. C'est expliqué là : https://www.hardware.fr/news/15027/gdc-nvidia-parle-tile-caching-maxwell-pascal.html

Le rendu TBDR, les deux principaux problèmes viennent d'une géométrie très complexe et de la transparence. Si on a énormément de petits triangles (une scène très complexe) avec de la transparence, les calculs liés à la géométrie sont un goulet d'étranglement pour le GPU : le calcul des pixels visibles (ou pas) dans les tuiles bloquent le reste. C'était réellement un souci sur les PowerVR de la première génération, qui géraient très mal la transparence.

Après, y a un point à prendre en compte : globalement, une scène qui va arriver à bloquer un GPU moderne à cause de la géométrie, elle est de toute façon probablement trop lourde pour une GPU entrée/milieu de gamme. On peut supposer que de toute façon, elle serait trop lourde aussi en rendu immédiat sur le milieu de gamme. On a rarement des scènes avec énormément de géométrie mais peu de traitements sur le reste.

avatar reborn | 

Une Apple TV avec puce A17 pro serait sympa 👍

avatar hougoul | 

Le TBDR n’est pas obligatoire, et TB n’est applicable qu’aux carte ayant des caches de tiles car elle permet de faire tout ton pipeline de rendu sans passer par la mémoire à la différence des autres GPU qui eux ont besoin de faire des allées retour avec la mémoire.

avatar koko256 | 

Pourquoi faut-il écrire l'image en mémoire quand le moniteur est branché sur la carte graphique ? Ou alors on parle de la mémoire de la carte graphique ?

CONNEXION UTILISATEUR