Perché i giochi funzionano molto meglio in Windows che in OSX?


11

Ad esempio, sul mio Mac Mini con Bootcamp, Team Fortress 2 funziona a circa 20 fps in OSX e 80 fps in Windows. Questo sembra essere un caso comune. Perchè è questo?


È la stessa macchina dual boot avviata in entrambi i sistemi operativi.
senza

doppio avvio come in "non una macchina virtuale" corretto?
horatio,

1
Sì, l'avvio direttamente in entrambi i sistemi operativi.
senza

1
Trovo sempre queste domande interessanti - purché non si trasformino in irritazioni / fiamme insensate - perché, come utente Mac (di 10 mesi), riesco a vedere le idee sbagliate degli utenti Windows.
Ricket,

Risposte:


15

I driver Direct3D su Windows sono ridicolmente ottimizzati, a volte per giochi specifici, e sviluppati da singoli fornitori di hardware.

I driver OpenGL di Apple sono scritti e gestiti (AFAIK) da Apple e sono destinati all'uso del sistema operativo "generale", che compongono l'interfaccia utente e quant'altro. Non c'è così tanta ottimizzazione per gaming e throughput ad alte prestazioni.

Fondamentalmente, molte risorse provenienti da molte fonti hanno contribuito a rendere DirectX veloce su Windows, mentre sono disponibili molte meno risorse per fare lo stesso su Mac.


Mi spingerei ancora più specificamente verso il compilatore di shader nel driver come parte della differenza. altdevblogaday.com/2011/07/20/… afferma che per i giochi popolari NV / AMD ottimizzerà anche gli shader per il loro hardware.
Adam,

5
Non sono solo i driver .. è anche gli sviluppatori di giochi. Di solito investono più risorse nell'ottimizzazione per Direct3d / DirectX anziché OpenGL. Un altro caso è quando un gioco inizialmente è stato sviluppato solo per Windows e viene portato successivamente. Questa deve essere una porta davvero buona (ad es. Può comportare un sacco di riscrittura del codice) se dovrebbe ottenere prestazioni simili ... che per lo più non è il caso.
bummzack,

Quindi Team Fortress 2 è reso in OpenGL su OSX ma D3D su Windows?
senza

sans, sì, Direct3D è solo per Windows, quindi qualsiasi gioco su qualsiasi altra piattaforma è reso usando OpenGL (o software ...). Windows supporta anche OpenGL; ma la maggior parte delle versioni di giochi per Windows utilizzerà Direct3D perché, come detto, i driver per Windows sono generalmente molto più ottimizzati per D3D.
Ricket,

13

Anche se non escluderò l'ottimizzazione che Microsoft potrebbe aver messo su Windows e / o DirectX, credo fermamente che la maggior parte dei programmi funzioni meglio su Windows semplicemente perché è quello su cui si concentrano gli sviluppatori (ecco dove sono i soldi). Prendono decisioni di progettazione pensando a Windows, e successivamente cercano di farlo funzionare su altri sistemi operativi (Mac, Linux, ecc.). Mi imbatto costantemente al lavoro: altri progetti hanno così tanti problemi con il porting su sistemi non Windows perché gli sviluppatori lo hanno trattato come un ripensamento. Ho ripetutamente scritto programmi che si basano su più sistemi operativi con il minimo sforzo perché l'ho pianificato in questo modo dall'inizio. Una volta che hai davvero provato a farlo (invece di fare a malincuore il porto dopo il fatto), impari cosa ci vuole e richiede pochissimo sforzo extra.


La curiosità di un non programmatore qui: cosa succede alle prestazioni quando si progetta per multipiattaforma? Ad esempio, il tuo gioco multipiattaforma funzionerà velocemente su Windows come una versione incentrata su Windows?
Jason Pineo,

@Jason: riguarda più il tempo speso e la specificità della piattaforma. Non c'è nulla che impedisca a uno sviluppatore di scrivere codice che è completamente ottimizzato per Windows, scrivere codice separato che è completamente ottimizzato per OSX e quindi cambiare semplicemente quello che viene utilizzato in base alla piattaforma. Tuttavia, il tempo e quindi le risorse impiegate per farlo spesso superano il vantaggio di farlo.
Jordaan Mylonas,

@Jason: In questo caso, dipende davvero da quanto bene hai progettato il tuo gioco (e quando dico design intendo pianificazione, non la vera codifica) e quanto divergenti sono i diversi sistemi operativi. Se sono molto diversi, allora il commento di Jordaan è appropriato dove devi affrontare ogni sistema operativo separatamente. Ma con interfacce comuni come OpenGL e nel tempo diverse API prendono in prestito concetti l'una dall'altra, sono diventate tutte piuttosto simili. Quindi oggi è più un esercizio per abbinare le funzionalità e progettare il tuo software per poter utilizzare ciascuna delle funzionalità senza escludere un sistema operativo.
Klox,

7

Come collega Mac, vorrei offrire un ulteriore fattore: lo scheduler della CPU in OS X è più "equo" che in Windows.

Questa è una specie di argomento informatico complicato, quindi ecco un modo semplice di pensare al tuo programmatore di CPU: il tuo processore deve destreggiarsi tra molte attività contemporaneamente (tutti i tuoi programmi aperti, oltre a processi di sistema in background). In realtà può fare solo un paio di cose alla volta (il numero di core moltiplicato per il numero di thread per core; un i7 dual-core può fare 4 attività contemporaneamente, per esempio). Quindi divide tutto il lavoro in pezzi e si alterna tra loro in modo che sembri effettivamente fare molte cose contemporaneamente. Quando si eseguono due programmi, il processore in realtà si alterna semplicemente avanti e indietro tra l'elaborazione di quei due programmi, molto velocemente (come, alcuni microsecondi qui, e poi alcuni microsecondi lì).

Il modello per cui le cose vengono eseguite in quale ordine e per quanto tempo viene deciso da un "algoritmo di schedulazione". Ad esempio, il pianificatore round robin organizza semplicemente le attività in un cerchio e le elabora in ordine. Un altro programmatore potrebbe organizzare le attività dal minimo alla maggior parte del tempo rimanente: piccole attività verrebbero eseguite rapidamente e grandi attività potrebbero dover attendere un po 'prima di essere eseguite.

Windows e OS X sono molto diversi e anche i loro algoritmi di pianificazione sono leggermente diversi. Windows è un po 'più "intelligente" nel definire le priorità delle cose, quindi dà una priorità extra ai programmi visibili per rendere il computer più veloce. OS X, tuttavia, è più giusto nei processi in background. Gli algoritmi generali sono più o meno gli stessi tra i due sistemi operativi (sono entrambe code di feedback multilivello ), ma questo piccolo dettaglio si traduce in un'esperienza utente diversa.

Entrambe le parti hanno i loro vantaggi. Come ho detto, i programmi visibili in Windows appariranno più velocemente perché hanno più priorità; ma se un programma visibile decide di prendere molta energia, l'intero computer soffre un po 'di più. Lo scheduler più equo di OS X produce velocità più prevedibili e stabili, il che è buono per le operazioni audio e video. Ad esempio, se stai riproducendo un brano in background, è meno probabile che balbetti quando fai altre cose contemporaneamente rispetto a Windows.

Quindi, il punto da asporto è questo: un gioco a schermo intero in Windows avrà la massima priorità sulla CPU e tutto ciò che è in esecuzione in background dovrà solo aspettare. In OS X, questo è meno il caso.

Alcune informazioni tecniche sugli scheduler sono fornite qui ; il resto di questa risposta proviene dalla mia educazione informatica e dal mio utilizzo di OS X negli ultimi 10 mesi, dopo aver usato Windows per oltre 10 anni (e Linux occasionalmente). A volte sono frustrato dal programmatore più equo, ma altre volte ne apprezzo i vantaggi.

Linux, a proposito, ha un'implementazione dello scheduler ancora più equa; questo è ciò che lo rende un ottimo server, ma a mio avviso l'esperienza dell'utente è degradata. Ad esempio, quando il tuo computer è impantanato di attività, il cursore smetterà di rispondere senza problemi perché ha la stessa priorità di tutto il resto. Questo in pratica non succede mai in Windows o OS X.


-2

Alcuni giochi che sono stati "portati" su MacOSX sono in realtà giochi Windows eseguiti all'interno di un emulatore. Anche se non ho un elenco completo di esempi, sembra che almeno SPORE fosse così:

SPORE non è mai stato ufficialmente rilasciato su GNU / Linux e la versione per Mac è scaduta male. La porta Mac è in realtà la versione di Windows fornita con Cider, che è una tecnologia deprezzata che avvolge una versione (ormai vecchia) di WINE attorno ai giochi. ( Fonte )

L'esecuzione di un software all'interno di un emulatore è per definizione più lenta rispetto all'esecuzione nativa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.