Почему игры работают намного лучше в Windows, чем в OSX?

11

Например, на моем Mac Mini с Bootcamp Team Fortress 2 работает со скоростью 20 кадров в секунду в OSX и 80 кадров в секунду в Windows. Это похоже на частый случай. Почему это?

без
источник
Это одна и та же машина с двойной загрузкой в ​​любой операционной системе.
без
двойная загрузка как в "не виртуальной машине" правильно?
Горацио
1
Да, загрузка напрямую в любую из ОС.
без
1
Я всегда нахожу эти вопросы интересными - до тех пор, пока они не превращаются в бессмысленные скандалы / пламя - потому что, как пользователь Mac (от 10 месяцев), я вижу неправильные представления пользователей Windows.
Рикет

Ответы:

15

Драйверы Direct3D для Windows смехотворно оптимизированы, иногда для конкретных игр, и разработаны отдельными поставщиками оборудования.

Драйверы Apple OpenGL написаны и поддерживаются (AFAIK) Apple и предназначены для «общего» использования ОС, составления пользовательского интерфейса и еще много чего. Там нет такой большой оптимизации для игр и высокой производительности.

По сути, многие ресурсы из многих источников были направлены на то, чтобы сделать DirectX быстрым в Windows, и гораздо меньше ресурсов доступно для того же на Mac.

chrish
источник
Я бы даже более определенно склонялся к компилятору шейдера в драйвере, как к небольшой части разницы. altdevblogaday.com/2011/07/20/… говорит, что для популярных игр NV / AMD даже вручную оптимизируют шейдеры под свое оборудование.
Адам
5
Это не только драйверы .. это также разработчики игр. Обычно они вкладывают больше ресурсов в оптимизацию для Direct3d / DirectX вместо OpenGL. Другой случай, когда игра изначально разрабатывалась только для Windows, а затем портируется. Это должен быть действительно хороший порт (например, может привести к переписыванию большого количества кода), если он должен достичь аналогичной производительности ... что в большинстве случаев не так.
Буммзак
Итак, Team Fortress 2 отображается в OpenGL на OSX, а D3D на Windows?
без
Да, Direct3D предназначен только для Windows, поэтому любая игра на любой другой платформе воспроизводится с использованием OpenGL (или программного обеспечения ...). Windows также поддерживает OpenGL; но большинство версий игр для Windows будут использовать Direct3D, потому что, как уже упоминалось, драйверы для Windows обычно гораздо более оптимизированы для D3D.
Рикет
13

Хотя я не буду сбрасывать со счетов оптимизацию, которую Microsoft, возможно, внедрила в Windows и / или DirectX, я твердо убежден, что большинство программ работают лучше на Windows просто потому, что именно на это ориентируются разработчики (вот где деньги). Они принимают проектные решения с учетом Windows, а затем стараются заставить его работать в других ОС (Mac, Linux и т. Д.). Я постоянно сталкиваюсь с этим на работе: у других проектов так много проблем с портированием на системы, отличные от Windows, потому что разработчики восприняли это как запоздалую мысль. Я неоднократно писал программы, основанные на нескольких ОС, и при этом очень мало усилий, потому что я планировал это с самого начала. Как только вы действительно попытаетесь это сделать (в отличие от неохотного создания порта после факта), вы узнаете, что для этого нужно, и это потребует совсем немного дополнительных усилий.

Klox
источник
Любопытство некодера здесь: что происходит с производительностью, когда вы проектируете для мультиплатформы? Например, будет ли ваша многоплатформенная игра работать в Windows так же быстро, как в версии для Windows?
Джейсон Пинео
@Jason: это больше о потраченном времени и специфике платформы. Ничто не мешает разработчику написать код, полностью оптимизированный для Windows, написать отдельный код, полностью оптимизированный для OSX, а затем просто переключиться на платформу. Однако время и ресурсы, потраченные на это, часто перевешивают выгоду от этого.
Джордаан Милонас
@Jason: В этом случае, это действительно зависит от того, насколько хорошо вы разработали свою игру (и когда я говорю «дизайн», я имею в виду планирование, а не фактическое кодирование) и насколько разные ОС разные. Если они сильно отличаются, то комментарий Джордаана уместен, когда вы должны обращаться к каждой ОС отдельно. Но с такими общими интерфейсами, как OpenGL, и с течением времени разные API заимствуют понятия друг у друга, все они становятся довольно похожими. Таким образом, сегодня это скорее пример сопоставления функций и разработки программного обеспечения, позволяющий использовать каждую из функций без исключения ОС.
Klox
7

Как один из пользователей Mac, я хотел бы предложить дополнительный фактор: планировщик ЦП в OS X более «справедливый», чем в Windows.

Это своего рода сложная тема информатики, так что вот простой способ подумать о вашем планировщике ЦП: ваш процессор должен манипулировать многими задачами одновременно (все ваши открытые программы плюс фоновые системные процессы). Фактически он может выполнять только пару действий одновременно (количество ядер умножается на количество потоков на ядро; двухъядерный i7 может, например, выполнять 4 задачи одновременно). Таким образом, он разбивает всю работу на части и чередуется между ними, так что создается впечатление, что он действительно делает много вещей одновременно. Когда вы запускаете две программы, процессор просто чередует обработку этих двух программ, очень быстро (например, несколько микросекунд здесь, а затем несколько микросекунд там).

Шаблон, для которого все выполняется в каком порядке и на какой срок, определяется «алгоритмом планирования». Например, планировщик циклического перебора просто упорядочивает задачи по кругу и обрабатывает каждое из них по порядку. Другой планировщик может упорядочить задачи с минимального до оставшегося времени - небольшие задачи будут выполняться быстро, а большим задачам придется подождать некоторое время, прежде чем они будут выполнены.

Windows и OS X очень разные, и их алгоритмы планирования также немного отличаются. Windows немного «умнее» распределяет приоритеты, поэтому уделяет больше внимания видимым программам, чтобы компьютер быстрее появлялся. OS X, однако, более справедлива для фоновых процессов. Общие алгоритмы одинаковы для двух ОС (обе они представляют собой многоуровневые очереди обратной связи ), но эта маленькая деталь приводит к разному восприятию пользователя.

Обе стороны имеют свои преимущества. Как я уже сказал, видимые программы в Windows будут появляться быстрее, потому что они получают больший приоритет; но если одна видимая программа решает потреблять много энергии, весь компьютер страдает немного больше. Более честный планировщик OS X обеспечивает более предсказуемые и стабильные скорости, что хорошо для аудио и видео операций. Например, если вы играете песню в фоновом режиме, она вряд ли заикается, когда вы делаете другие вещи одновременно, чем в Windows.

Итак, суть в следующем: полноэкранная игра в Windows получит высокий приоритет для процессора, и все, что работает в фоновом режиме, просто будет ждать. В OS X это менее верно.

Некоторая техническая информация о планировщиках дана здесь ; остальная часть этого ответа - мое образование в области компьютерных наук и использование OS X в течение последних 10 месяцев, после использования Windows более 10 лет (и иногда Linux). Иногда меня расстраивает более честный планировщик, но иногда я ценю его преимущества.

У Linux, кстати, есть еще более справедливая реализация планировщика; это то, что делает его отличным сервером, но, на мой взгляд, пользовательский опыт ухудшается. Например, когда ваш компьютер перегружен задачами, ваш курсор перестанет реагировать плавно, потому что ему присвоен тот же приоритет, что и всем остальным. Это в основном никогда не происходит в Windows или OS X.

Ricket
источник
-2

Некоторые игры, которые были «портированы» на MacOSX, на самом деле являются играми для Windows, работающими в эмуляторе. Хотя у меня нет полного списка примеров, похоже, что есть хотя бы SPORE:

SPORE никогда не был официально выпущен на GNU / Linux, а версия для Mac плохо устарела. Порт Mac на самом деле является выпуском Windows, поставляемым с Cider, который является устаревшей технологией, охватывающей (теперь уже старую) версию WINE вокруг игр. ( Источник )

Запуск программного обеспечения в эмуляторе по определению медленнее, чем запуск его в исходном состоянии.

дон
источник