Порты ПК для консольных игр часто выходят через месяц или два. Почему это?
Игры написаны на языках, которые также компилируются на ПК, поэтому логика игры должна компилироваться без проблем. Что их тогда сдерживает? Это код рендеринга или что?
Порты ПК для консольных игр часто выходят через месяц или два. Почему это?
Игры написаны на языках, которые также компилируются на ПК, поэтому логика игры должна компилироваться без проблем. Что их тогда сдерживает? Это код рендеринга или что?
Ответы:
Есть несколько причин, по которым порт ПК может занять некоторое время. (Я извиняюсь, если мне кажется, что я где-то повторяюсь; это вроде как написано на лету.)
Когда вы играете на консоли, это само по себе накладывает определенные ограничения на то, что вы можете сделать, поскольку все, что у пользователя есть, - это геймпад.
Простое создание отображений 1: 1 между клавишами клавиатуры и входами контроллера не всегда является хорошей идеей - если вообще возможно - поэтому иногда требуется больше времени, чтобы найти хорошее решение.
Когда вы разрабатываете, например, для Wii U, вы точно знаете, как ведет себя Wii U, потому что все Wii Us идентичны. Это не верно для ПК; у вас много разных видеокарт и процессоров, и иногда на некоторых из них что-то не работает. Требуется много тестов, чтобы обнаружить эти ошибки, и исправление их также требует времени.
Если вы никогда не использовали свой движок для создания версии для ПК, вам также необходимо соответствующим образом кодировать аппаратную абстракцию. Некоторые игры хотят поддерживать несколько версий DirectX и OpenGL для Linux / Mac, и все это требует времени для написания, если это не было сделано ранее.
На консолях игра не должна конкурировать с ОС за ресурсы и т. Д. - не так много всего происходит в фоновом режиме.
На ПК у вас работает ОС, у вас есть множество фоновых программ, и все это означает, что вы не получите такую большую долю, на которую надеялись. Это означает, что вам иногда нужно выполнить дополнительную оптимизацию, особенно для игроков на младших системах
С консолью у вас есть фиксированная цель, поэтому вы пишете шейдеры и т.д.
На ПК некоторые видеокарты поддерживают более продвинутые функции, и, возможно, вы захотите использовать для них лучший шейдер. Ну, это означает, что вам придется написать этот шейдер.
Консольные SDK могут иметь множество удобных функций, которые непросто отображаются на ПК - например, они могут предоставлять доступ к аппаратным таймерам или хорошим звуковым API.
Эти вещи обычно не доступны на ПК; вам нужно использовать другие способы выполнения этих вещей, и, возможно, это изменит то, как вы должны абстрагироваться от различий платформы.
Простая причина в том, что консоль имеет один и тот же набор оборудования, который одинаков для каждой консоли.
Все ваши XBox, PS3 и Wii имеют такое же оборудование, как и ваши соседи XBox, PS3 и Wii. Однако ваш компьютер имеет другой ЦП, другую видеокарту, другой объем ОЗУ, фактически всю конфигурацию и настройки операционной системы, установленные драйверы могут быть абсолютно уникальными, чем ни один другой человек в мире.
Это то, что затрудняет портирование на ПК. Вам необходимо учитывать все возможные компоненты оборудования в соответствии с минимальными системными требованиями и выше. Это сложный и сложный процесс для программирования и отладки. Разработчикам очень трудно знать каждую конфигурацию, для которой нужно программировать, и почти невозможно выполнить тестирование этих конфигураций.
Как только они разрабатывают его для ПК, разработчики проводят обширное тестирование, но оно также может зависеть от бета-тестирования от пользователей на срок от нескольких недель до нескольких месяцев. Этот аутсорсинг тестов с бета-плеерами до официального выпуска порта на ПК, как правило, объясняет разницу в датах выпуска между консолями и ПК.
Перенос кода на новую платформу занимает много времени. Создание наносекундного таймера для Xbox 360 (я никогда не разрабатывал в XNA) потребует иной реализации, чем тот же наносекундный таймер в Linux, Mac или Windows. Теперь представьте, что у вас есть сотни таких функций, которые нужно портировать, и тысячи, если двигатель достаточно массивный.
Для добавления этих различных реализаций для новых платформ может потребоваться месяц или два кода. Кроме того, вы не всегда можете использовать те же библиотеки на Xbox 360, что и на Windows, Playstation 3 или другой платформе. Это означает, что вам, возможно, придется использовать совершенно новую библиотеку, чтобы сделать то же самое, что вы делали в версии для Xbox 360.
В целом, такие вещи складываются в большое количество времени. Портирование на новую платформу редко бывает простым для больших приложений AAA.
Во многих случаях это почти не имеет отношения к тому, чтобы быть жестким .
Это просто не приоритет. Они крутятся, чтобы едва выйти из двери вовремя. Каждая минутная разница требует времени для учета. Если вы можете выпустить на нескольких консолях или ПК к крайнему сроку, сначала сделайте это, а затем оберните порты. Выпуск рано, заработать больше денег. Как правило, приставки лучше играли в коробочные игры последнего поколения, хотя они начали меняться - новые консоли могут изменить ситуацию.
Кроме того, в некоторых случаях производители консолей предоставляют преимущества для эксклюзивных выпусков, поэтому издатель получает скидку или некоторые из них, если они выпускают на определенной консоли сначала, а затем на других платформах. Ничего технического в этом нет.
Изначально игры сложнее делать на консоли, чем на ПК. Кроме того, у консолей очень разные спецификации и разное оборудование между nintendo, sony и microsoft, что не только приводит к разной производительности, но и к различным узким местам.
Обычно игра просто настраивает свой движок, чтобы максимизировать качество и производительность на каждой консоли.
При адаптации к ПК возникают другие проблемы. Консоли являются однородными, то есть все консоли имеют одинаковое оборудование (все PS3 имеют одинаковую производительность оборудования). Когда вы создаете свою игру для ПК, вы выбираете минимальную спецификацию, но вы также позволяете пользователю повышать качество для более мощных ПК. Игры, предназначенные для ПК, менее оптимизированы, но их легче создавать для программистов.
Программирование на консоли имеет одно преимущество: оно позволяет программистам максимизировать производительность, поэтому любая консольная игра всегда будет работать хорошо.
На ПК это хуже, потому что есть много оборудования, но предоставлено, это больше свободы, самая лучшая игра всегда будет на ПК, потому что ПК всегда на переднем крае, по цене.
Портировать игру с консоли на ПК может быть непросто, поскольку консоль рассчитана на производительность игры, а ПК нет, но в целом портировать игру с консоли на ПК гораздо проще, чем наоборот, потому что у консоли намного меньше памяти, что-то вроде в 2 или 4 раза меньше.
Изменение кода для адаптации к этому ограничению памяти в большинстве случаев всегда будет означать полное перепрограммирование.
Я не думаю, что сложно портировать игру с консоли на ПК, это просто вопрос API. Компаниям и программистам, работающим только с консолями, будет сложно переносить их на ПК, потому что они к этому не привыкли, а также потому, что они постоянно адаптируются к консольному API, так что их код часто отвечает ограничениям консольного компилятора, и не обязательно заботиться о ПК apis.
Конечно, двигатели могут быть запрограммированы на работу на всех консолях и ПК, как только это будет сделано, это будет проще, чем просто попросить ваших программистов перенести движок на ПК после того, как им сказали, что это никогда не планировалось в течение 3-4 лет.
Консоли TL; DR являются однородными и имеют последнее поколение консолей, ПК разнородны, а оборудование и API постоянно развиваются. Затраты распределяются между программированием и аппаратным обеспечением, что является компромиссом.
Хорошо бы разрешить всем аппаратным средствам работать все, но цены на консоли компенсируются, потому что компании-производители игр платят производителям консолей лицензию, поэтому они блокируют свое оборудование для запуска только тех компаний, которые платят. Это грязно.