PC-порти консольних ігор часто виходять через місяць-два пізніше. Чому це?
Ігри написані мовами, які також складаються на ПК, тому логіка гри повинна складатись без проблем. Що тоді їх стримує? Це код візуалізації чи що?
PC-порти консольних ігор часто виходять через місяць-два пізніше. Чому це?
Ігри написані мовами, які також складаються на ПК, тому логіка гри повинна складатись без проблем. Що тоді їх стримує? Це код візуалізації чи що?
Відповіді:
Існує ряд причин, через які порт для ПК може зайняти деякий час. (Прошу вибачення, якщо мені здається, що я десь повторююсь; це написано на лету.)
Коли ви граєте на консолі, це лише одне обмеження щодо того, що ви можете робити, оскільки у кожного користувача є геймпад.
Просто створення відображень у форматі 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 постійно розвиваються. Витрати розподіляються між програмуванням та побудовою обладнання, що є компромісом.
Добре було б дозволити всім обладнанням запускати все, але ціни на консолі компенсуються, тому що ігрові компанії виплачують ліцензіям виробникам консолей, тому вони блокують своє обладнання для роботи лише ігрових компаній, які платять. Це безладно.