Mengapa game berjalan jauh lebih baik di Windows daripada di OSX?

11

Sebagai contoh, di Mac Mini saya dengan Bootcamp, Team Fortress 2 berjalan sekitar 20fps di OSX dan 80fps di Windows. Ini tampaknya menjadi kasus umum. Kenapa ini?

tanpa
sumber
Ini adalah mesin yang sama yang di-boot ganda ke sistem operasi mana pun.
Sans
dual boot seperti pada "bukan mesin virtual" yang benar?
horatio
1
Ya, boot langsung ke salah satu OS.
Sans
1
Saya selalu menemukan pertanyaan-pertanyaan ini menarik - selama mereka tidak berubah menjadi kata-kata kasar yang menyala-nyala - karena, sebagai pengguna Mac (10 bulan), saya bisa melihat kesalahpahaman pengguna Windows.
Ricket

Jawaban:

15

Driver Direct3D pada Windows sangat dioptimalkan, terkadang untuk game tertentu, dan dikembangkan oleh masing-masing vendor perangkat keras.

Driver OpenGL Apple ditulis dan dipelihara (AFAIK) oleh Apple, dan dimaksudkan untuk penggunaan OS "umum", yang mengkomposisikan UI dan yang lainnya. Tidak ada begitu banyak optimasi untuk game dan throughput kinerja tinggi.

Pada dasarnya, banyak sumber daya dari banyak sumber telah digunakan untuk membuat DirectX cepat di Windows, sementara sumber daya yang lebih sedikit tersedia untuk melakukan hal yang sama pada Mac.

Chrish
sumber
Saya akan bersandar lebih spesifik ke arah shader compiler di driver sebagai bagian dari perbedaan. altdevblogaday.com/2011/07/20/… mengatakan bahwa untuk game populer NV / AMD bahkan akan mengoptimalkan shader untuk perangkat keras mereka.
Adam
5
Ini bukan hanya driver .. itu juga pengembang game. Mereka biasanya menginvestasikan lebih banyak sumber daya untuk mengoptimalkan Direct3d / DirectX daripada OpenGL. Kasus lain adalah ketika sebuah game awalnya dikembangkan hanya untuk windows dan kemudian porting. Itu harus menjadi port yang benar - benar baik (mis. Dapat mengakibatkan banyak penulisan ulang kode) jika harus mencapai kinerja yang sama ... yang sebagian besar tidak terjadi.
bummzack
Jadi Team Fortress 2 diberikan dalam OpenGL pada OSX tetapi D3D pada Windows?
Sans
sans, ya, Direct3D hanya untuk Windows, jadi setiap game di platform lain dirender menggunakan OpenGL (atau perangkat lunak ..). Windows juga mendukung OpenGL; tetapi sebagian besar versi Windows game akan menggunakan Direct3D karena seperti yang disebutkan, driver untuk Windows biasanya jauh lebih dioptimalkan untuk D3D.
Ricket
13

Meskipun saya tidak akan mengabaikan optimasi yang mungkin dilakukan Microsoft ke Windows dan / atau DirectX, saya sangat percaya bahwa sebagian besar program berkinerja lebih baik di Windows hanya karena itulah yang menjadi fokus pengembang (di situlah uang itu). Mereka membuat keputusan desain dengan mempertimbangkan Windows, dan kemudian mencoba membuatnya bekerja di OS lain (Mac, Linux, dll.). Saya terus-menerus mengalami hal ini di tempat kerja: proyek-proyek lain memiliki begitu banyak masalah dengan porting ke sistem non-Windows karena pengembang memperlakukannya sebagai pemikiran setelah. Saya telah berulang kali menulis program yang dibangun pada banyak OS dengan sedikit usaha karena saya telah merencanakannya sejak awal. Setelah Anda benar-benar mencoba melakukannya (bukan dengan enggan melakukan port setelah fakta), Anda mempelajari apa yang diperlukan dan itu membutuhkan sedikit usaha ekstra.

Klox
sumber
Keingintahuan non-programmer di sini: Apa yang terjadi dengan kinerja ketika Anda mendesain untuk multi platform? Misalnya, apakah game multiplatform Anda akan berjalan secepat di Windows seperti versi Windows-focus?
Jason Pineo
@Jason: Ini lebih banyak tentang waktu yang dihabiskan dan kekhususan platform. Tidak ada yang menghentikan pengembang dari menulis kode yang sepenuhnya dioptimalkan untuk Windows, menulis kode terpisah yang sepenuhnya dioptimalkan untuk OSX, dan kemudian hanya beralih yang digunakan berdasarkan platform. Namun, waktu dan sumber daya yang dihabiskan untuk melakukannya seringkali lebih besar daripada manfaatnya.
Jordaan Mylonas
@Jason: Dalam hal ini, itu benar-benar tergantung pada seberapa baik Anda merancang game Anda (dan ketika saya mengatakan desain yang saya maksud perencanaan, bukan pengkodean yang sebenarnya) dan seberapa beragam perbedaan OS tersebut. Jika mereka sangat berbeda, maka komentar Jordaan sesuai di mana Anda harus mengatasi setiap OS secara terpisah. Tetapi dengan antarmuka umum seperti OpenGL, dan seiring waktu API yang berbeda meminjam konsep satu sama lain, mereka semua menjadi agak mirip. Jadi hari ini lebih merupakan latihan dalam mencocokkan fitur dan merancang perangkat lunak Anda untuk dapat menggunakan masing-masing fitur tanpa mengecualikan OS.
Klox
7

Sebagai sesama pengguna Mac, saya ingin menawarkan faktor tambahan: penjadwal CPU di OS X lebih "adil" daripada di Windows.

Ini semacam topik ilmu komputer yang rumit, jadi inilah cara sederhana untuk memikirkan penjadwal CPU Anda: prosesor Anda harus menyulap banyak tugas sekaligus (semua program terbuka, plus proses sistem latar belakang). Ini hanya dapat benar - benar melakukan beberapa hal sekaligus (jumlah core kali jumlah thread per core; i7 dual-core dapat melakukan 4 tugas sekaligus, misalnya). Jadi itu membagi semua pekerjaan menjadi potongan-potongan, dan berganti-ganti di antara mereka sehingga sepertinya itu benar-benar melakukan banyak hal sekaligus. Ketika Anda menjalankan dua program, prosesor sebenarnya hanya berganti-ganti antara memproses dua program tersebut, sangat cepat (seperti, beberapa mikrodetik di sini, dan kemudian beberapa mikrodetik di sana).

Pola untuk hal-hal yang dieksekusi dalam urutan apa dan untuk berapa lama diputuskan oleh "algoritma penjadwalan". Sebagai contoh, penjadwal round robin hanya mengatur tugas-tugas dalam lingkaran dan memproses masing-masing secara berurutan. Penjadwal lain mungkin mengatur tugas dari sisa waktu yang tersisa - tugas kecil akan dilakukan dengan cepat, dan tugas besar mungkin harus menunggu beberapa saat sebelum selesai.

Windows dan OS X sangat berbeda, dan algoritma penjadwalannya juga sedikit berbeda. Windows sedikit "lebih pintar" tentang memprioritaskan hal-hal, sehingga memberikan prioritas ekstra untuk program yang terlihat untuk membuat komputer terlihat lebih cepat. OS X, bagaimanapun, lebih adil untuk proses latar belakang. Algoritma keseluruhan hampir sama antara kedua OS (keduanya adalah antrian umpan balik bertingkat ), tetapi detail kecil ini menghasilkan pengalaman pengguna yang berbeda.

Kedua belah pihak memiliki kelebihan. Seperti saya katakan, program yang terlihat di Windows akan muncul lebih cepat karena mereka mendapat prioritas lebih; tetapi jika satu program terlihat memutuskan untuk mengambil banyak daya, seluruh komputer menderita sedikit lebih banyak. Penjadwal OS X yang lebih adil menghasilkan kecepatan yang lebih dapat diprediksi dan stabil, yang bagus untuk operasi audio dan video. Misalnya, jika Anda memutar lagu di latar belakang, itu cenderung gagap ketika Anda melakukan hal-hal lain pada waktu yang sama daripada di Windows.

Jadi, poin yang bisa diambil adalah ini: permainan layar penuh di Windows akan mendapatkan prioritas tinggi pada CPU dan apa pun yang berjalan di latar belakang hanya harus menunggu. Di OS X, ini kurang terjadi.

Beberapa info teknis tentang penjadwal diberikan di sini ; sisa jawaban ini adalah dari pendidikan ilmu komputer saya dan penggunaan OS X selama 10 bulan terakhir, setelah menggunakan Windows selama lebih dari 10 tahun (dan kadang-kadang Linux). Saya kadang-kadang frustrasi oleh penjadwal yang lebih adil, tetapi di lain waktu saya menghargai kelebihannya.

Linux, omong-omong, memiliki implementasi scheduler yang bahkan lebih adil; ini adalah apa yang membuatnya menjadi server yang hebat, tetapi menurut saya pengalaman pengguna menurun. Misalnya, ketika komputer Anda macet dengan tugas, kursor Anda akan berhenti merespons dengan lancar karena diberi prioritas yang sama dengan yang lainnya. Ini pada dasarnya tidak pernah terjadi di Windows atau OS X.

Ricket
sumber
-2

Beberapa gim yang telah "porting" ke MacOSX sebenarnya adalah gim Windows yang berjalan dalam emulator. Meskipun saya tidak memiliki daftar contoh lengkap, tampaknya setidaknya ada SPORE yang seperti itu:

SPORE tidak pernah dirilis secara resmi di GNU / Linux, dan versi Mac berusia lanjut. Port Mac sebenarnya adalah rilis Windows yang dikemas dengan Cider, yang merupakan teknologi terdepresiasi yang membungkus versi WINE (yang sudah lama) di seputar game. ( Sumber )

Menjalankan perangkat lunak dalam sebuah emulator menurut definisi lebih lambat daripada menjalankannya secara asli.

mengenakan
sumber