Pourquoi les jeux fonctionnent-ils tellement mieux sous Windows que sous OSX?

11

Par exemple, sur mon Mac Mini avec Bootcamp, Team Fortress 2 fonctionne à environ 20fps sous OSX et 80fps sous Windows. Cela semble être un cas courant. Pourquoi est-ce?

sans
la source
C'est la même machine à double démarrage dans l'un ou l'autre système d'exploitation.
sans
double démarrage comme dans "pas une machine virtuelle" correct?
horatio
1
Oui, en démarrant directement dans l'un ou l'autre OS.
sans
1
Je trouve toujours ces questions intéressantes - tant qu'elles ne se transforment pas en délires insensés / enflammés - parce que, en tant qu'utilisateur Mac (de 10 mois), je peux voir les idées fausses des utilisateurs de Windows.
Ricket

Réponses:

15

Les pilotes Direct3D sur Windows sont ridiculement optimisés, parfois pour des jeux spécifiques, et développés par des fournisseurs de matériel individuels.

Les pilotes OpenGL d'Apple sont écrits et maintenus (AFAIK) par Apple, et sont destinés à une utilisation «générale» du système d'exploitation, à la composition de l'interface utilisateur et ainsi de suite. Il n'y a pas tant d'optimisation pour les jeux et le débit haute performance.

Fondamentalement, beaucoup de ressources provenant de nombreuses sources ont été utilisées pour rendre DirectX rapide sur Windows, tandis que beaucoup moins de ressources sont disponibles pour faire de même sur Mac.

chrish
la source
Je pencherais encore plus spécifiquement vers le compilateur de shader dans le pilote comme faisant partie de la différence. altdevblogaday.com/2011/07/20/… dit que pour les jeux populaires, NV / AMD optimisera même manuellement les shaders pour leur matériel.
Adam
5
Ce ne sont pas seulement les pilotes .. ce sont aussi les développeurs de jeux. Ils investissent généralement plus de ressources dans l'optimisation de Direct3d / DirectX au lieu d'OpenGL. Un autre cas est celui où un jeu a été initialement développé uniquement pour Windows et est porté plus tard. Cela doit être un très bon port (par exemple, cela peut entraîner beaucoup de réécriture de code) s'il doit atteindre des performances similaires ... ce qui n'est généralement pas le cas.
bummzack
Donc Team Fortress 2 est rendu en OpenGL sur OSX mais en D3D sur Windows?
sans
sans, oui, Direct3D est uniquement Windows, donc tout jeu sur n'importe quelle autre plate-forme est rendu en utilisant OpenGL (ou logiciel ..). Windows prend également en charge OpenGL; mais la plupart des versions de jeux Windows utiliseront Direct3D car, comme mentionné, les pilotes pour Windows sont généralement beaucoup plus optimisés pour D3D.
Ricket
13

Bien que je ne néglige pas l'optimisation que Microsoft a pu mettre dans Windows et / ou DirectX, je crois fermement que la plupart des programmes fonctionnent mieux sous Windows simplement parce que c'est ce sur quoi les développeurs se concentrent (c'est là que l'argent se trouve). Ils prennent des décisions de conception en pensant à Windows, puis essaient plus tard de le faire fonctionner dans d'autres systèmes d'exploitation (Mac, Linux, etc.). Je suis constamment confronté à cela au travail: d'autres projets ont tellement de mal à porter sur des systèmes non Windows parce que les développeurs l'ont traité comme une réflexion après coup. J'ai écrit à plusieurs reprises des programmes qui s'appuient sur plusieurs systèmes d'exploitation avec très peu d'effort parce que je l'ai planifié de cette façon depuis le début. Une fois que vous avez vraiment essayé de le faire (par opposition à faire à contrecœur le port après coup), vous apprenez ce qu'il faut et cela nécessite très peu d'efforts supplémentaires.

Klox
la source
La curiosité d'un non-codeur ici: qu'advient-il des performances lorsque vous concevez pour multiplateforme? Par exemple, votre jeu multiplateforme fonctionnera-t-il aussi vite sur Windows qu'une version centrée sur Windows?
Jason Pineo
@Jason: Il s'agit davantage du temps passé et de la spécificité de la plateforme. Rien n'empêche un développeur d'écrire du code entièrement optimisé pour Windows, d'écrire du code séparé entièrement optimisé pour OSX, puis de simplement changer de code en fonction de la plate-forme. Cependant, le temps et donc les ressources consacrées à cette tâche l'emportent souvent sur l'avantage de le faire.
Jordaan Mylonas du
@ Jason: Dans ce cas, cela dépend vraiment de la façon dont vous avez bien conçu votre jeu (et quand je parle de conception, je veux dire de la planification, pas du codage réel) et de la divergence des différents systèmes d'exploitation. S'ils sont très différents, le commentaire de Jordaan est approprié lorsque vous devez traiter chaque système d'exploitation séparément. Mais avec des interfaces communes comme OpenGL, et au fil du temps, différentes API empruntent des concepts, elles sont toutes devenues assez similaires. Donc, aujourd'hui, il s'agit plus d'un exercice de mise en correspondance des fonctionnalités et de conception de votre logiciel pour pouvoir utiliser chacune des fonctionnalités sans exclure un système d'exploitation.
Klox
7

En tant qu'utilisateur Mac, j'aimerais offrir un facteur supplémentaire: le programmateur CPU sous OS X est plus «juste» que sous Windows.

C'est une sorte de sujet informatique compliqué, alors voici une façon simple de penser à votre ordonnanceur CPU: votre processeur doit jongler avec plusieurs tâches à la fois (tous vos programmes ouverts, plus les processus système en arrière-plan). Il ne peut réellement faire que deux choses à la fois (le nombre de cœurs multiplié par le nombre de threads par cœur; un i7 double cœur peut effectuer 4 tâches à la fois, par exemple). Donc, il divise tout le travail en morceaux et les alterne pour donner l'impression qu'il fait en fait beaucoup de choses à la fois. Lorsque vous exécutez deux programmes, le processeur alterne en fait entre les deux programmes, très rapidement (comme quelques microsecondes ici, puis quelques microsecondes là-bas).

Le modèle pour lequel les choses sont exécutées dans quel ordre et pour combien de temps est décidé par un "algorithme de planification". Par exemple, le planificateur à tour de rôle organise simplement les tâches dans un cercle et traite chacune dans l'ordre. Un autre ordonnanceur pourrait organiser les tâches du moins au plus longtemps restant - les petites tâches seraient effectuées rapidement et les grandes tâches pourraient devoir attendre un certain temps avant d'être effectuées.

Windows et OS X sont très différents, et leurs algorithmes de planification sont également un peu différents. Windows est un peu plus «intelligent» quant à la hiérarchisation des choses, il donne donc une priorité supplémentaire aux programmes visibles afin de faire apparaître l'ordinateur plus rapidement. OS X, cependant, est plus équitable pour les processus d'arrière-plan. Les algorithmes globaux sont sensiblement les mêmes entre les deux systèmes d'exploitation (ce sont tous les deux des files d'attente de rétroaction à plusieurs niveaux ), mais ce petit détail se traduit par une expérience utilisateur différente.

Les deux parties ont leurs avantages. Comme je l'ai dit, les programmes visibles dans Windows apparaîtront plus rapidement car ils obtiennent plus de priorité; mais si un programme visible décide de consommer beaucoup d'énergie, tout l'ordinateur en souffre un peu plus. L'ordonnanceur plus équitable d'OS X se traduit par des vitesses plus prévisibles et stables, ce qui est bon pour les opérations audio et vidéo. Par exemple, si vous lisez une chanson en arrière-plan, il est moins susceptible de bégayer lorsque vous faites d'autres choses en même temps que sous Windows.

Donc, le point à retenir est le suivant: un jeu plein écran sous Windows va obtenir une priorité élevée sur le processeur et tout ce qui s'exécute en arrière-plan devra simplement attendre. Sous OS X, c'est moins le cas.

Quelques informations techniques sur les planificateurs sont fournies ici ; le reste de cette réponse provient de mes études en informatique et de mon utilisation d'OS X au cours des 10 derniers mois, après avoir utilisé Windows pendant plus de 10 ans (et Linux occasionnellement). Je suis parfois frustré par le planificateur plus juste, mais d'autres fois j'apprécie ses avantages.

Linux, en passant, a une implémentation du planificateur encore plus équitable; c'est ce qui en fait un excellent serveur, mais à mon avis l'expérience utilisateur est dégradée. Par exemple, lorsque votre ordinateur est embourbé avec des tâches, votre curseur cessera de répondre en douceur car il a la même priorité que tout le reste. Cela ne se produit pratiquement jamais sous Windows ou OS X.

Ricket
la source
-2

Certains jeux qui ont été "portés" sur MacOSX sont en fait des jeux Windows exécutés dans un émulateur. Bien que je n'ai pas une liste complète d'exemples, il semble qu'il y ait au moins SPORE qui était comme ça:

SPORE n'a jamais été officiellement publié sur GNU / Linux, et la version Mac a mal vieilli. Le port Mac est en fait la version Windows fournie avec Cider, qui est une technologie dépréciée enveloppant une version (désormais ancienne) de WINE autour des jeux. ( Source )

L'exécution d'un logiciel dans un émulateur est par définition plus lente que son exécution native.

Don
la source