Портування гри на PS5 та Xbox Series X: технічні роботи та основні нюанси

Всім привіт! Мене звати Влад, я обіймаю посаду Unreal Engine Developer в Pingle Game Studio. Як себе пам’ятаю, маніакально обожнюю відеоігри. Найбільше ціную вкладену душу і талант, коли комерційний проєкт, що був складений з нулів і одиниць, стає справжнім витвором мистецтва.

Граю лише на консолях і маю їх невелику колекцію, близько 10 одиниць. В цій статті хочу поговорити якраз про консолі і портування — один з головних напрямів роботи Pingle Game Studio.

Що таке портування

Вже понад 2 років активно крокує 9 покоління Next-Gen, що представлене у вигляді PS5 і Xbox Series X/S. Головна проблема цього покоління в тому, що гравець не помічає глобального стрибка в графіці, як це було при переході з 7-го покоління на 8-е. Ігри вже 8-го покоління виглядали кінематографічно. Відчуття, що межі графіки вже досягнуті, все більше не залишало гравців. А що буде далі? Де ж той самий обіцяний Next-Gen?

Для початку розберемося, а що саме змінилось? Головною особливістю нового покоління став стандарт в 60 fps, використання новомодних технологій, як трасування променів. Якщо у 8-му поколінні розробникам доводилось хитрувати для знайдення балансу між продуктивністю і якістю, то вже 9-е покоління відкрило великі можливості для польоту фантазії розробників, без сильної прив’язки до потужності платформи. В майбутньому, як це написано на коробці з приставкою, нам обіцяють стандарти 8к і 120 fps. На папері це все добре, а що відбувається насправді?

Вихід консолей 9-го покоління співпав зі світовим спалахом COVID-19. Він призвів до дефіциту напівпровідників на ринку, що, своєю чергою, сильно вдарило по швидкості виробництва партій новоспечених консолей. Компанії поки що не можуть у повному обсязі забезпечити гравців їх достатньою кількістю. Це означає, що всі нові тайтли виходять як на 9-е покоління, так і на 8-е — в економічних цілях видавців. Що це означає для розробників? Слава портуванню! :)

Сьогодні за допомогою портування ми намагаємось досягти того, аби одна гра була максимально схожа на всіх платформах. При цьому вичавити максимум з особливостей платформи, на яку портуємо.

До речі, так було не завжди. Наприклад, такі компанії, як Capcom чи Konami, свого часу наймали різні студії для портування — і отримували абсолютно різні версії гри. Наприклад, серія Contra в добу 16-бітних консолей. Також яскравий приклад — EA Games та улюблені ігри з Гаррі Поттером, «Філософський камінь» і «Таємна кімната». Ігри на PS1, PS2, Nintendo GameCube, Nintendo Game Boy і версію для ПК робили п’ять різних студій. В результаті, це було п’ять абсолютно різних ігор. Так виглядало портування двохтисячних.

Зараз, навпаки, видавці прагнуть, аби у гравця був один ігровий досвід. Всі хочуть кросплатформеності продукту. Все частіше можна зустріти кросзбереження, тобто можливості перенесення свого прогресу в грі з однієї платформи на іншу.

Якщо видавці будуть дотримуватися такого портування, ми прийдемо до того, що нам буде байдуже, на якій платформі грати.

Улюблене холіварне питання: так, а яка платформа цього покоління краща?

PS5 і Хвох сильно відрізняються технологічно. В інтернеті можна зустріти багато суперечок на цю тему. І дехто зводить це все в банальні порівняння терафлопсів між платформами. Насправді в усіх цих суперечках нехтують апаратними і backend-особливості технологій обох платформ. А вони дуже сильно відрізняються.

Як приклад, Microsoft використовує у своїх консолях технології DirectX для відеопрограмування, і Xbox Series X має невелику перевагу, оскільки її графічний процесор має потужність 12 TFLOPS у 52 CU. Sony ж в новому поколінні вирішила зробити головну ставку на високошвидкісний SSD — він працює за швидкістю до 5,5 ГБ/с на відміну від Xbox, який здатний підтримувати швидкість читання до 2,4 ГБ/с (або 4,8 ГБ/с без стиснення). Як наслідок, PlayStation краще вміє в технології стиснення через можливості швидше зчитувати дані та наявності на борту чипа-декодера Kraken. Тобто Xbox може отримати більше якості графіки. Та тільки чи має це значення, якщо швидкість опрацювання буде меншою, ніж у PlayStation? Зрозуміло, що велику роль також грає архітектура та оптимізація ігрового продукту як такого.

Втім, варто зазначити, що PS5 чудово працює зі стисненням прямо «з коробки». Тому з особливостей можна тільки підсвітити, що Sony надає чудові автоматизовані рішення для розробки.

Також не рідкою є ситуація, коли одна й та сама графічна складова поводить себе по-різному. Чи, наприклад, на одній з платформ може вилізти артефакт графіки, а на іншій — ні. Працює цілий відділ тестувальників, і вони день у день у поті чола пробігають гру знову і знову, вишукують відмінності від оригіналу проєкту і його розходження на різних платформах. Часом доводиться приймати доволі цікаві рішення, навіть урізати графіку, аби версії на різних платформах не відрізнялись.

Основні моменти портування на PS5 та Xbox

Дуже люблю слідкувати за роздумами блогерів на тему того, а чим там взагалі займаються розробники на тих портах, якщо ентузіасти беруть, і вже за тиждень після релізу викладають покращені графічні версії у мережу :)

Все це, звісно, весело. Але такі «поробки» далекі від збалансованого використання ресурсів платформи. А якщо і працюють стабільно, то на завищених системних вимогах.

Так, а чим займаються розробники? Загалом, існує два види портування ігор.

Апгрейд: гра минулого покоління хоче отримати високополігональні моделі, новомодні ефекти, вищу роздільну здатність і підвищену частоту кадрів.

Також існує Даунгрейд: гра нового покоління виходить на платформі минулого покоління або в портативі (Привіт, Nintendo SWITCH). Якщо в першому випадку розробники працюють над додатковими фічами, то тут навпаки гру доводиться якомога більше спрощувати і полегшувати. Наприклад змінювати розміри текстур, технічно змінювати 3D моделі, урізати анімації, знижувати якість звуку і шукати серед цього всього баланс для стабільної частоти кадрів.

Як відбувається портування

При портуванні проєкту на етапі оцінки йде розділення на дві категорії.

Технічні роботи: сюди входить перехід на більш сучасну версію рушія, оновлення інструментарію платформи. Як правило, вже на цьому етапі виникають труднощі.

Впровадження особливостей платформи: головне з цього — управління і підтримка геймпада.

Інші приклади: система Activity, Haptic Feedback, управління і вібрація на PS5, швидкі завантаження, cloud-зберігання на Хbох Series. Також цікавим кейсом стає можливість перенесення збережень між поколіннями.

Наприклад, для гри The Eternal Cylinder ми імплементували Haptic Feedback. На кожну дію: персонажа вдарили або він потрапив на специфічний ґрунт чи йде гігантська істота — контролер відгукується вібрацією. Схожу технологію використовують в Nintendo Switch, але Haptic Feedback в Dualsense тактильно приємніший. Від звичайної вібрації Haptic Feedback відрізняється тим, що може бути точковим і передавати більше ступенів тактильної віддачі з меншим кроком.

Також ми імплементували Adaptive Triggers — це специфічні оновлені тригери PS5 Dualsense.

Наприклад, персонаж в цій грі вміє всмоктувати воду, а потім нею плюватися в інших істот. На затисканні тригера персонаж всмоктує воду, і чим більше всмоктується води, тим важче затискати тригер. І навпаки, коли персонаж плюється водою, то чим більше води він виплюнув, тим легше натискання на тригер.

Зміна графіки: як правило, це поліпшення якості текстур, анімацій, додавання чи покращення існуючих ефектів, реалізація трасування променів, загальне поліпшення якості графіки.

Новою особливістю для цього покоління є додавання налаштувань графіки в опції гри.

Якщо раніше гравець в налаштуваннях бачив мінімальну кількість налаштувань, то зараз, оскільки можливостей для реалізації стало більше, розробник дає гравцеві можливість обрати між режимами Продуктивність/Якість.

«Продуктивністю» називають режим, в якому гра працює при 60 кадрах і більше, з підтримкою 4К, але при цьому має заниженні параметри загальної якості (дальність огляду, роздільна здатність текстур тощо).

Протилежним є режим «Якість», з яким зображення виводиться з максимальними ефектами. При цьому гра втрачає в частоті кадрів, знаходиться в межах 30. Зазвичай саме в цей режим вбудовують підтримку технології трасування променів.

Реальні кейси, з якими зіштовхнулась наша команда під час портування

Тут хочу обговорити декілька складних моментів, з якими ми зіштовхнулися в процесі портування гри The Eternal Cylinder.

Перший кейс: Unreal Engine та зовнішні бібліотеки

Нещодавно ми завершили роботу над проєктом The Eternal Cylinder, на якому я займав позицію Project Lead Developer.

Першочергова задача ще до старту портування — це оцінка проєкту. Як ми з’ясували вже під час роботи над Циліндром, наша оцінка була не зовсім реалістичною.

Ми думали, що гра зроблена на стандартному рушії UE. Але виявилось, що команда оригінальної розробки використовувала зовнішні бібліотеки — і це був наш найскладніший кейс.

Творці зав’язали майже весь функціонал гри на плагіні SkookumScript. Зрозуміти продукти третього розробника в принципі складно. Але це ще був не кінець. Вже в процесі ми дізнались, що розробники SkookumScript перестали підтримувати свій плагін декілька років тому.

Звісно, ми намагались його обійти, але це було неможливо.

В результаті нам довелось повністю переписати більшу частину інструментарію гри.

Нам пощастило, що бібліотеки SkookumScript лежать у відкритому доступі. Ми їх завантажили і адаптували під версію рушія 4.27.

Не впевнений, що у такому вигляді можна було створити новий контент. Але для нашої цілі — переносу гри на нову платформу — цього вистачило.

Другий кейс: фізика гри

Дана гра активно використовує технологію Destructible: коли циліндр наїжджає на об’єкти, вони красиво розпадаються на маленькі елементи, ті своєю чергою фізично правильно розлітаються в сторони. Задумка має доволі гарний вигляд в оригіналі та взагалі є чудовою ідеєю.

Але, як виявилось, використовувалася технологія Apex Destructible, вже застаріла для нової версії рушія. Ми зіштовхнулись з новою проблемою: ключова ідея красивого руйнування, яка саме і продає цю гру — у нас просто не буде працювати, як потрібно.

Це був складний виклик, що зумовив пошук нестандартних рішень. Ми вирішили змусити UE працювати зі старим Apex Destructible. В результаті у нас вийшов такий собі «зомбі», в якому все наліплено і прикручено з різних версій, аби гра змогла працювати.

Третій кейс: модифікація лендскейпів

Третій момент, на якому можна зупинити увагу, — модифікації лендскейпів. Це технологія UE: можливість малювати ландшафт в реальному часі. З його допомогою можна зняти висоти з мапи, будь то Google Maps чи поверхня Місяця, перенести їх в рушій, і система сама за висотами малює красивий ландшафт. Персонаж може бігти сотні кілометрів вперед і ландшафт буде продовжувати завантажуватись.

Технологія цікава, Epic Games активно її розвиває. Але, звісно, в нашому випадку все виявилось не просто. По-перше, ми працювали з однією з перших версій даної технології. По-друге, в нашій версії була перезаписана технологія рендерингу. Все разом призвело до такого класного багу, який ми в команді прозвали «літаючі яйця». В грі на деяких деревах висять золоті ягоди яйцеподібної форми. Але через баг вони літали всюди. Кожен день починався з питання: «Що там у тебе з яйцями? Висять?». Ми шукали рішення, як повернути яйця на місце, приблизно місяць — і повернули.

До речі, це також був доволі цікавий момент. Як виявилось, при переході зі старої версії рушія змінилась система ієрархії компонентів. Стара ієрархія неадекватно прочиталась новим рушієм. Через це збились координати предметів у просторі.

Тепер ми навчились: при переході на нову версію рушія потрібно заново зберегти всі асети і перевірити ієрархію.

Четвертий кейс: Ray tracing

Останній кейс і складний момент роботи над цим проєктом — Ray tracing (його ми мали додати за контрактом). Наш Technical Artist зібрав велику презентацію на багато сторінок з переліком місць, де можна реалізувати Ray Tracing. Але ми не змогли всі їх втілити. Чому так сталось? Для того, аби гра могла працювати з такою важкою для продуктивності технологією, потрібно з самого початку задумувати проєкт під неї, а не додавати все в процесі.

Коли вже була виконана достатньо велика частина роботи, стало зрозуміло, що хоча художньо картинка стала кращою, на жаль, вау-ефект був відсутній. Користувач зі своєю дорогою приставкою міг запитати: «А чим це відрізняється від минулого покоління? І чому воно працює гірше?». А воно і справді працювало гірше... Не тому, що ми зламали гру, а тому, що Ray Tracing — дуже великовагова технологія. В такому вигляді здавати проєкт не можна було.

Тоді ми прийняли рішення більш детально пройтись по художній частині і позначити предмети, на яких дійсно має сенс реалізовувати Ray Tracing. Це трава, деякі створіння, персонажі. Потім виникла нова проблема: різко впала продуктивність гри. Тоді ми вирішили випускати гру з двома видами налаштувань Продуктивність/Якість, про які вже було сказано вище в статті.


Наприкінці хочеться додати, що портування — це не просто перенос одного формату гри в інший, а складний багаторівневий процес. За ним стоїть ціла команда розробників, геймдизайнерів, художників і інших професіоналів. Ця робота цікава і не рутинна. Кожен порт є унікальним і інколи приносить неочікувані виклики навіть для досвідчених спеціалістів.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини.

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі