Почему сложно портировать игры с консолей на ПК? [закрыто]

27

Порты ПК для консольных игр часто выходят через месяц или два. Почему это?

Игры написаны на языках, которые также компилируются на ПК, поэтому логика игры должна компилироваться без проблем. Что их тогда сдерживает? Это код рендеринга или что?

Анализ крови
источник
3
Вероятно, это связано с публикацией сделок. Им платят, например, от Sony за создание эксклюзивного титула PS3 / PS4.
Авр
Я говорю об играх, которые выходят за некоторые приставки. Говорят, что «порт» выйдет через X месяцев после выхода консоли. Вопрос в том, что является причиной, по которой они ждут. Я имею в виду, что маркетингу есть чем заняться, но мне интересно со стороны программиста.
Bloodcount
Но Аурус прав, это наиболее вероятный ответ. Перенос кода с консолей на ПК не является тривиальным по нескольким причинам. Большинство игр, которые выходят на ПК вскоре после выпуска консоли, изначально были предназначены для ПК, или, по крайней мере, базовая технология поддерживает простой порт. В противном случае пары месяцев, вероятно, было бы недостаточно
Гримшоу
Что касается вашего комментария "игры написаны на языках, которые компилируются на ПК" не всегда было правдой. В частности, я хотел бы изменить известную цитату: «Консоли и ПК могут быть компьютерами, но не все компьютеры созданы равными».
kurtzbot

Ответы:

47

Есть несколько причин, по которым порт ПК может занять некоторое время. (Я извиняюсь, если мне кажется, что я где-то повторяюсь; это вроде как написано на лету.)

Адаптация управления и игрового процесса

Когда вы играете на консоли, это само по себе накладывает определенные ограничения на то, что вы можете сделать, поскольку все, что у пользователя есть, - это геймпад.

Простое создание отображений 1: 1 между клавишами клавиатуры и входами контроллера не всегда является хорошей идеей - если вообще возможно - поэтому иногда требуется больше времени, чтобы найти хорошее решение.

Аппаратная абстракция / Фрагментация

Когда вы разрабатываете, например, для Wii U, вы точно знаете, как ведет себя Wii U, потому что все Wii Us идентичны. Это не верно для ПК; у вас много разных видеокарт и процессоров, и иногда на некоторых из них что-то не работает. Требуется много тестов, чтобы обнаружить эти ошибки, и исправление их также требует времени.

Если вы никогда не использовали свой движок для создания версии для ПК, вам также необходимо соответствующим образом кодировать аппаратную абстракцию. Некоторые игры хотят поддерживать несколько версий DirectX и OpenGL для Linux / Mac, и все это требует времени для написания, если это не было сделано ранее.

Ресурс спор

На консолях игра не должна конкурировать с ОС за ресурсы и т. Д. - не так много всего происходит в фоновом режиме.

На ПК у вас работает ОС, у вас есть множество фоновых программ, и все это означает, что вы не получите такую ​​большую долю, на которую надеялись. Это означает, что вам иногда нужно выполнить дополнительную оптимизацию, особенно для игроков на младших системах

Улучшение активов

С консолью у вас есть фиксированная цель, поэтому вы пишете шейдеры и т.д.

На ПК некоторые видеокарты поддерживают более продвинутые функции, и, возможно, вы захотите использовать для них лучший шейдер. Ну, это означает, что вам придется написать этот шейдер.

Платформо-зависимые вещи

Консольные SDK могут иметь множество удобных функций, которые непросто отображаются на ПК - например, они могут предоставлять доступ к аппаратным таймерам или хорошим звуковым API.

Эти вещи обычно не доступны на ПК; вам нужно использовать другие способы выполнения этих вещей, и, возможно, это изменит то, как вы должны абстрагироваться от различий платформы.

Майкл Мэдсен
источник
4
Что касается элементов управления, пользовательского интерфейса, вы все еще можете увидеть это, когда меню на рабочем столе ПК даже не работает с мышью, например, они сделали отображение 1: 1 с d-pad на клавиатуру. Другая потенциальная проблема - языки шейдеров и поддержка драйверов.
Каспер Бейер
1
Хороший ответ в целом. Однако в случаях, когда разработчики хотят выжать из консолей максимальную производительность, низкоуровневого уровня кода, специфичного для платформы, обычно недостаточно, сама игра должна быть спроектирована так, чтобы использовать сильные атрибуты аппаратного обеспечения консоли, что Не обязательно идеальное решение для ПК тоже!
Гримшоу
6

Простая причина в том, что консоль имеет один и тот же набор оборудования, который одинаков для каждой консоли.

Все ваши XBox, PS3 и Wii имеют такое же оборудование, как и ваши соседи XBox, PS3 и Wii. Однако ваш компьютер имеет другой ЦП, другую видеокарту, другой объем ОЗУ, фактически всю конфигурацию и настройки операционной системы, установленные драйверы могут быть абсолютно уникальными, чем ни один другой человек в мире.

Это то, что затрудняет портирование на ПК. Вам необходимо учитывать все возможные компоненты оборудования в соответствии с минимальными системными требованиями и выше. Это сложный и сложный процесс для программирования и отладки. Разработчикам очень трудно знать каждую конфигурацию, для которой нужно программировать, и почти невозможно выполнить тестирование этих конфигураций.

Как только они разрабатывают его для ПК, разработчики проводят обширное тестирование, но оно также может зависеть от бета-тестирования от пользователей на срок от нескольких недель до нескольких месяцев. Этот аутсорсинг тестов с бета-плеерами до официального выпуска порта на ПК, как правило, объясняет разницу в датах выпуска между консолями и ПК.

Том Блю Пиддок
источник
5

Перенос кода на новую платформу занимает много времени. Создание наносекундного таймера для Xbox 360 (я никогда не разрабатывал в XNA) потребует иной реализации, чем тот же наносекундный таймер в Linux, Mac или Windows. Теперь представьте, что у вас есть сотни таких функций, которые нужно портировать, и тысячи, если двигатель достаточно массивный.

Для добавления этих различных реализаций для новых платформ может потребоваться месяц или два кода. Кроме того, вы не всегда можете использовать те же библиотеки на Xbox 360, что и на Windows, Playstation 3 или другой платформе. Это означает, что вам, возможно, придется использовать совершенно новую библиотеку, чтобы сделать то же самое, что вы делали в версии для Xbox 360.

В целом, такие вещи складываются в большое количество времени. Портирование на новую платформу редко бывает простым для больших приложений AAA.

TorbenC
источник
3

Во многих случаях это почти не имеет отношения к тому, чтобы быть жестким .

Это просто не приоритет. Они крутятся, чтобы едва выйти из двери вовремя. Каждая минутная разница требует времени для учета. Если вы можете выпустить на нескольких консолях или ПК к крайнему сроку, сначала сделайте это, а затем оберните порты. Выпуск рано, заработать больше денег. Как правило, приставки лучше играли в коробочные игры последнего поколения, хотя они начали меняться - новые консоли могут изменить ситуацию.

Кроме того, в некоторых случаях производители консолей предоставляют преимущества для эксклюзивных выпусков, поэтому издатель получает скидку или некоторые из них, если они выпускают на определенной консоли сначала, а затем на других платформах. Ничего технического в этом нет.

Шон Миддледич
источник
1

Изначально игры сложнее делать на консоли, чем на ПК. Кроме того, у консолей очень разные спецификации и разное оборудование между nintendo, sony и microsoft, что не только приводит к разной производительности, но и к различным узким местам.

Обычно игра просто настраивает свой движок, чтобы максимизировать качество и производительность на каждой консоли.

При адаптации к ПК возникают другие проблемы. Консоли являются однородными, то есть все консоли имеют одинаковое оборудование (все PS3 имеют одинаковую производительность оборудования). Когда вы создаете свою игру для ПК, вы выбираете минимальную спецификацию, но вы также позволяете пользователю повышать качество для более мощных ПК. Игры, предназначенные для ПК, менее оптимизированы, но их легче создавать для программистов.

Программирование на консоли имеет одно преимущество: оно позволяет программистам максимизировать производительность, поэтому любая консольная игра всегда будет работать хорошо.

На ПК это хуже, потому что есть много оборудования, но предоставлено, это больше свободы, самая лучшая игра всегда будет на ПК, потому что ПК всегда на переднем крае, по цене.

Портировать игру с консоли на ПК может быть непросто, поскольку консоль рассчитана на производительность игры, а ПК нет, но в целом портировать игру с консоли на ПК гораздо проще, чем наоборот, потому что у консоли намного меньше памяти, что-то вроде в 2 или 4 раза меньше.

Изменение кода для адаптации к этому ограничению памяти в большинстве случаев всегда будет означать полное перепрограммирование.

Я не думаю, что сложно портировать игру с консоли на ПК, это просто вопрос API. Компаниям и программистам, работающим только с консолями, будет сложно переносить их на ПК, потому что они к этому не привыкли, а также потому, что они постоянно адаптируются к консольному API, так что их код часто отвечает ограничениям консольного компилятора, и не обязательно заботиться о ПК apis.

Конечно, двигатели могут быть запрограммированы на работу на всех консолях и ПК, как только это будет сделано, это будет проще, чем просто попросить ваших программистов перенести движок на ПК после того, как им сказали, что это никогда не планировалось в течение 3-4 лет.

Консоли TL; DR являются однородными и имеют последнее поколение консолей, ПК разнородны, а оборудование и API постоянно развиваются. Затраты распределяются между программированием и аппаратным обеспечением, что является компромиссом.

Хорошо бы разрешить всем аппаратным средствам работать все, но цены на консоли компенсируются, потому что компании-производители игр платят производителям консолей лицензию, поэтому они блокируют свое оборудование для запуска только тех компаний, которые платят. Это грязно.

jokoon
источник