Warum laufen Spiele unter Windows so viel besser als unter OSX?

11

Auf meinem Mac Mini mit Bootcamp läuft Team Fortress 2 beispielsweise unter OSX mit etwa 20 fps und unter Windows mit 80 fps. Dies scheint ein häufiger Fall zu sein. Warum ist das?

ohne
quelle
Es ist derselbe Computer, der in beiden Betriebssystemen doppelt gestartet wurde.
sans
Dual gebootet wie in "keine virtuelle Maschine" richtig?
Horatio
1
Ja, direkt in eines der Betriebssysteme booten.
sans
1
Ich finde diese Fragen immer interessant - solange sie sich nicht in sinnlose Beschimpfungen / Flammen verwandeln -, weil ich als Mac-Benutzer (von 10 Monaten) die Missverständnisse von Windows-Benutzern sehe.
Ricket

Antworten:

15

Direct3D-Treiber unter Windows werden lächerlich optimiert, manchmal für bestimmte Spiele, und von einzelnen Hardwareanbietern entwickelt.

Die OpenGL-Treiber von Apple werden von Apple geschrieben und gewartet (AFAIK) und sind für die "allgemeine" Verwendung des Betriebssystems, die Zusammenstellung der Benutzeroberfläche und so weiter vorgesehen. Es gibt nicht so viele Optimierungen für Spiele und Hochleistungsdurchsatz.

Grundsätzlich haben viele Ressourcen aus vielen Quellen DirectX unter Windows schnell gemacht, während unter Mac viel weniger Ressourcen zur Verfügung stehen, um dasselbe zu tun.

chrish
quelle
Ich würde mich noch genauer auf den Shader-Compiler im Treiber stützen, da dies ein Teil des Unterschieds ist. altdevblogaday.com/2011/07/20/… sagt, dass NV / AMD für beliebte Spiele sogar die Shader für ihre Hardware von Hand optimieren wird.
Adam
5
Es sind nicht nur die Treiber, sondern auch die Spieleentwickler. Sie investieren normalerweise mehr Ressourcen in die Optimierung für Direct3d / DirectX anstelle von OpenGL. Ein anderer Fall ist, wenn ein Spiel ursprünglich nur für Windows entwickelt wurde und später portiert wird. Das muss ein wirklich guter Port sein (z. B. kann zu viel Code-Umschreiben führen), wenn eine ähnliche Leistung erzielt werden soll ... was meistens nicht der Fall ist.
Bummzack
Also wird Team Fortress 2 in OpenGL unter OSX, aber in D3D unter Windows gerendert?
sans
Ohne, ja, Direct3D ist nur für Windows verfügbar, daher wird jedes Spiel auf einer anderen Plattform mit OpenGL (oder Software ..) gerendert. Windows unterstützt auch OpenGL. Die meisten Windows-Versionen von Spielen verwenden jedoch Direct3D, da die Treiber für Windows, wie bereits erwähnt, normalerweise viel besser für D3D optimiert sind.
Ricket
13

Obwohl ich die Optimierung, die Microsoft möglicherweise in Windows und / oder DirectX vorgenommen hat, nicht außer Acht lasse, bin ich der festen Überzeugung, dass die meisten Programme unter Windows eine bessere Leistung erbringen, nur weil sich die Entwickler darauf konzentrieren (dort liegt das Geld). Sie treffen Entwurfsentscheidungen unter Berücksichtigung von Windows und versuchen später, sie unter anderen Betriebssystemen (Mac, Linux usw.) zum Laufen zu bringen. Bei der Arbeit stoße ich ständig darauf: Andere Projekte haben so große Probleme mit der Portierung auf Nicht-Windows-Systeme, weil die Entwickler dies als Nachdenken betrachteten. Ich habe wiederholt Programme geschrieben, die mit sehr geringem Aufwand auf mehreren Betriebssystemen aufbauen, weil ich es von Anfang an so geplant habe. Sobald Sie wirklich versucht haben, dies zu tun (im Gegensatz dazu, den Port widerwillig nachträglich auszuführen), lernen Sie, was es braucht, und es erfordert nur sehr wenig zusätzlichen Aufwand.

Klox
quelle
Die Neugier eines Nicht-Codierers hier: Was passiert mit der Leistung, wenn Sie für Multiplattform entwerfen? Wird Ihr Multiplattform-Spiel beispielsweise unter Windows so schnell ausgeführt wie eine Windows-Version?
Jason Pineo
@ Jason: Es geht mehr um die aufgewendete Zeit und die Plattformspezifität. Nichts hindert einen Entwickler daran, Code zu schreiben, der vollständig für Windows optimiert ist, separaten Code zu schreiben, der vollständig für OSX optimiert ist, und dann einfach zu wechseln, der basierend auf der Plattform verwendet wird. Die dafür aufgewendete Zeit und damit aufgewendete Ressourcen überwiegen jedoch häufig den Nutzen.
Jordaan Mylonas
@Jason: In diesem Fall hängt es wirklich davon ab, wie gut Sie Ihr Spiel entworfen haben (und wenn ich Design sage, meine ich Planung, nicht die eigentliche Codierung) und wie unterschiedlich die verschiedenen Betriebssysteme sind. Wenn sie sehr unterschiedlich sind, ist Jordaans Kommentar angemessen, wenn Sie jedes Betriebssystem separat ansprechen müssen. Mit gängigen Schnittstellen wie OpenGL und verschiedenen APIs, die Konzepte voneinander leihen, sind sie sich jedoch alle ziemlich ähnlich geworden. Daher ist es heute eher eine Übung zum Abgleichen von Funktionen und zum Entwerfen Ihrer Software, um jede der Funktionen nutzen zu können, ohne ein Betriebssystem auszuschließen.
Klox
7

Als Mitbenutzer von Mac möchte ich einen zusätzlichen Faktor anbieten: Der CPU-Scheduler in OS X ist "fairer" als in Windows.

Dies ist eine Art kompliziertes Informatik-Thema. Hier ist eine einfache Möglichkeit, sich Ihren CPU-Scheduler vorzustellen: Ihr Prozessor muss viele Aufgaben gleichzeitig erledigen (alle Ihre offenen Programme sowie Hintergrundsystemprozesse). Es kann nur tatsächlich nur ein paar Dinge gleichzeitig erledigen (die Anzahl der Kerne multipliziert mit der Anzahl der Threads pro Kern; ein Dual-Core-i7 kann beispielsweise 4 Aufgaben gleichzeitig ausführen). Es teilt also die gesamte Arbeit in Teile auf und wechselt zwischen ihnen, so dass es so aussieht, als würde es tatsächlich viele Dinge gleichzeitig tun. Wenn Sie zwei Programme ausführen, wechselt der Prozessor tatsächlich nur zwischen der Verarbeitung dieser beiden Programme, sehr schnell (z. B. einige Mikrosekunden hier und einige Mikrosekunden dort).

Das Muster, für das Dinge in welcher Reihenfolge und für wie lange ausgeführt werden, wird durch einen "Planungsalgorithmus" festgelegt. Beispielsweise ordnet der Round-Robin-Scheduler die Aufgaben nur in einem Kreis an und verarbeitet sie nacheinander. Ein anderer Planer ordnet die Aufgaben möglicherweise so an, dass die verbleibende Zeit am wenigsten bis am meisten bleibt. Kleine Aufgaben werden schnell erledigt, und große Aufgaben müssen möglicherweise eine Weile warten, bevor sie erledigt werden.

Windows und OS X sind sehr unterschiedlich, und auch ihre Planungsalgorithmen sind etwas unterschiedlich. Windows ist etwas "schlauer" in Bezug auf die Priorisierung von Dingen, daher wird sichtbaren Programmen zusätzliche Priorität eingeräumt, damit der Computer schneller angezeigt wird. OS X ist jedoch fairer gegenüber Hintergrundprozessen. Die allgemeinen Algorithmen sind zwischen den beiden Betriebssystemen sehr ähnlich (sie sind beide mehrstufige Rückkopplungswarteschlangen ), aber dieses kleine Detail führt zu einer unterschiedlichen Benutzererfahrung.

Beide Seiten haben ihre Vorteile. Wie gesagt, sichtbare Programme in Windows werden schneller angezeigt, weil sie mehr Priorität erhalten. Wenn jedoch ein sichtbares Programm viel Strom verbraucht, leidet der gesamte Computer etwas mehr. Der fairere Scheduler von OS X führt zu vorhersehbareren und stabileren Geschwindigkeiten, was sich gut für Audio- und Videobetriebe eignet. Wenn Sie beispielsweise ein Lied im Hintergrund abspielen, ist es weniger wahrscheinlich, dass es stottert, wenn Sie andere Dinge gleichzeitig tun als unter Windows.

Der entscheidende Punkt ist also: Ein Vollbildspiel unter Windows wird auf der CPU eine hohe Priorität erhalten, und alles, was im Hintergrund läuft, muss nur warten. In OS X ist dies weniger der Fall.

Einige technische Informationen zu den Schedulern werden gegeben hier . Der Rest dieser Antwort stammt aus meiner Informatikausbildung und meiner Verwendung von OS X in den letzten 10 Monaten, nachdem ich Windows über 10 Jahre (und gelegentlich Linux) verwendet habe. Ich bin manchmal frustriert über den faireren Planer, aber manchmal schätze ich seine Vorteile.

Linux hat übrigens eine noch fairere Scheduler-Implementierung. Dies macht es zu einem großartigen Server, aber meiner Meinung nach ist die Benutzererfahrung beeinträchtigt. Wenn Ihr Computer beispielsweise mit Aufgaben überfüllt ist, reagiert Ihr Cursor nicht mehr reibungslos, da er die gleiche Priorität wie alles andere hat. Dies geschieht grundsätzlich nie unter Windows oder OS X.

Ricket
quelle
-2

Einige Spiele, die auf MacOSX "portiert" wurden, sind Windows- Spiele, die in einem Emulator ausgeführt werden. Obwohl ich keine vollständige Liste von Beispielen habe, scheint es zumindest SPORE zu geben, die so war:

SPORE wurde nie offiziell unter GNU / Linux veröffentlicht, und die Mac-Version ist schlecht gealtert. Der Mac-Port ist eigentlich die Windows-Version, die mit Cider geliefert wird. Hierbei handelt es sich um eine veraltete Technologie, die eine (jetzt alte) Version von WINE in Spiele einwickelt. ( Quelle )

Das Ausführen einer Software in einem Emulator ist per Definition langsamer als das native Ausführen.

Don
quelle