Секрет у коді, людина-кінь в Assassin’s Creed та сонце нижче нуля в Metro. Незвичайні проблеми, які виникають під час розробки ігор
Креативність допомагає розв’язати будь-яку задачу. Саме такий висновок напрошується з другого випуску нашої рубрики, в якій ми розповідаємо про незвичайні проблеми відеоігрової розробки, та не менш оригінальні шляхи їх вирішення.
Нам вдалося зібрати п’ять історій від фахівців із західних студій. Вони працювали над такими відомими проєктами, як Mega Man та Assassin’s Creed. А доповнили їх проблемами, з якими стикалися українські фахівці. Четверо розробників з People Can Fly, GSC Game World, The Farm 51 та Ubioft поділилися своїми цікавими випадками, пов’язаними з незвичайними виробничими викликами.
Звуковий баг на старті у Mega Man Legacy Collection
У 2015 році студія Digital Eclipse у співпраці з Capcom створила Mega Man Legacy Collection. Збірка вийшла на всіх актуальних на той момент платформах, включно з 3DS. І саме версія для консолі Nintendo змусила розробників добряче помізкувати.
Під час виробництва в проєкті знайшли дивний звуковий баг. Через помилку перший звук або сильно спотворювався, або належно не відтворювався. І не мало значення, яким був цей звук. Баг все одно лишався без змін.
Кіт Кайзершот, програміст з Digital Eclipse, написав звуковий шар, який базувався на аудіо API для 3DS. Система відтворення мала підтримувати постійний стримінг для фонової музики, звукової емуляції NES та деяких одноразових звуків, як от появу назви чи інтерфейсу.

В так званих звукових «каналах» 3DS реалізована структура даних, яка містить спеціальні прапорці для визначення поточного стану. Один з них демонстрував, чи активний зараз канал. Згідно з офіційною документацією Nintendo, за це відповідали команди true та false на прапорці.
«Я зіткнувся з кількома помилками, для яких я так і не знайшов першопричину через брак часу. В основному — 9 з 10 разів, коли ви запускали гру, звук жала, який супроводжує логотип Digital Eclipse, якимось чином збоїв. Він заїкався або просто не відтворювався. Це був перший звук, який ви чули в грі, і я виявив, що це завжди впливало на найперший відтворений звук. Наступні звуки були в нормі», — розповів Кайзершот.
Коли програміст почав шукати причину проблеми, то звернув увагу на прапорець активного стану. Він показував true, навіть коли «канал» не застосовувався. Баг псував початкові враження, тому його обов’язково потрібно було виправити. Програмного рішення Кайзершот не знайшов, тому застосував креатив. Він додав секунду тиші, яка програвалася перед логотипом. Завдяки цьому ніхто не помітив помилки.
Запасна пам’ять, яка врятувала проєкт
На одному з форумів розробник під псевдонімом Retric розповів повчальну історію. В нульових він працював над неназваною грою. Тоді команда стикнулася з серйозною проблемою: проєкт перевищував ліміт пам’яті на 1,5 Мбайт.
Знайти рішення взявся найдосвідченіший програміст в колективі, який працював в геймдеві ще у «старі-добрі часи». Він покликав Retric у свій кабінет, щоб нібито разом з’ясувати, як виправити ситуацію. Розробник очікував на чергову виснажливу спробу вивільнити пам’ять, проте все вийшло інакше.
Програміст відкрив вихідний код та вказав на рядок static char buffer[1024*1024*2]. Він запитав: «Бачиш це?» А тоді фахівець взяв та й видалив запис. Retric з жахом дивився на колегу, який за мить пояснив свій вчинок. З’ясувалося, що програміст відклав 2 Мбайт пам’яті на початку розробки.
В процесі виробництва не завжди вдається урізати контент, не виходячи за межі бюджету пам’яті. Через це багато проєктів були близькі до провалу. Програміст знав про таку проблему, тому звик резервувати блок пам’яті на початку розробки. Його досвід, зрештою, врятував команду та проєкт.
Як модель людини перетворили на коня в Assassin’s Creed.
Колишній розробник Ubisoft Чарльз Рендалл розповів про одразу дві хитрощі, на які пішла команда при створенні першої частини Assassin’s Creed. Вони були продиктовані обмеженнями бюджету. Фахівцям просто не вистачало коштів на реалізацію своїх задумів, тому довелося імпровізувати.
Перша з них пов’язана з конем. Створення окремого скелету для їздової тварини вимагало додаткових коштів. Розробники їх не мали, тому вирішили адаптувати людський скелет. Вони розтягнули його та трансформували, щоб максимально наблизити до форми коня. Зрештою, підміни ніхто й не помітив.

«Вип’ємо за дивовижних аніматорів і риґерів, яким вдалося зробити цього хлопця схожим на коня», — написав Рендалл у себе в Twitter.
Друге рішення схоже на перше і теж пов’язане з моделями. За сюжетом Assassin’s Creed асасин Малік втрачає руку. Робити для нього кастомний скелет було надто дорого. Саме тому розробники завернули кінцівку всередину. Якщо відв’язати камеру в грі та заглянути в модель, то в районі біцепса вдасться помітити «крихітну маленьку подряпану руку».
Рятівна димова завіса в Nitrobike
У
Оформлення локацій спростили, частину елементів оточення зробили візуально закритими, а надто динамічні об’єкти прибрали. Це покращило ситуацію з продуктивністю, проте один з рівнів, стилізований під кіно, лишився проблемним. Його дизайн не поєднувався з оклюзією.
Локація складалася з двох великих кімнат без жодних оклюзійних перешкод. Приміщення з’єднували двоє отворів, один з яких був розташований посередині стіни. За словами Босвелла, через такий дизайн не було жодної можливості розташувати оклюзійні полігони, щоб розмежувати кімнати. Вирізати якісь елементи й таким чином заблокувати приміщення одне від одного теж не вдавалося. Це миттєво зіпсувало б весь характер та ідею рівня.

Однак Босвеллу потрібно було додати оклюзійний полігон, щоб закрити середні двері. Елегантним рішенням стала так звана «стіна диму», створена на основі частинок. Стилістично вона вписувалася в локацію і дозволяла проїхати в інше приміщення. А паралельно стіна закривала іншу частину рівня для гравців.
На прохання Босвелла, один з художників створив емітер у вигляді диму. Його розмістили по обидві сторони отвору, і це дозволило позбутися останньої проблеми з продуктивністю.
Збільшення обсягу Wallace & Gromit за допомогою музики
Анонімний розробник розповів історію, яка трапилася під час створення ексклюзивної гри для Xbox Live Acrade. За неперевіреною інформацією з Twitter, це була Wallace & Gromit — пригода в форматі епізодичного інтерактивного кіно від Telltale Games.
На Xbox 360 проєкт мав працювати з карти пам’яті. Гра загалом займала 240 Мбайт, тому цілком могла вміститися на носій об’ємом 256 Мбайт. Проте розробники стикнулися з неочікуваною помилкою. Під час запуску проєкту з такої карти періодично відбувалися зависання системи. Вони були непослідовними, тому фахівцям не вдавалося знайти причину багу впродовж довгого часу.

Паралельно гра тестувалася на картах пам’яті об’ємом 512 Мбайт. На них проєкт запускався і працював без проблем. Розробники вирішили не мізкувати над тим, як пристосувати проєкт під карти на 256 Мбайт. Натомість вони додали файл з музикою об’ємом 20 Мбайт, щоб розмір досягнув 260 Мбайт. Таким способом вони виправдали застосування карт на 512 Мбайт.
У наступному блоці будуть коментарі від українських фахівців. Розробники з різних команд розповіли про цікаві проблеми, які виникали за час їхньої кар’єри.
«Ми заскриптували значну частину гри за допомогою панелі налагодження». Денис Медяник, колишній AI Designer у People Can Fly
Колись я працював над проєктом на Unity. На той момент, наскільки я знаю, в рушієві не існувало жодних інструментів для скриптингу, які б могли б конкурувати з Blueprints в Unreal Engine чи Flowgraph в CryEngine.
Наш проєкт містив досить простий інструмент, зроблений нашими програмістами, для налагодження подій у грі. Він міг виводити текст на екран, коли щось зачіпало тригер, і фактично складався з однієї умови та дії — спрацювання тригера та виведення тексту на екран відповідно.
В процесі розробки ми постійно додавали нові умови та екшени в систему, хоча й не планували робити це на початку. Поступово інструмент обріс всілякими можливостями: завдавати шкоди, перемикати різні ігрові стани та сповільнювати час. Дії виконувалися послідовно, що ускладнювало реалізацію розгалужень у логіці скрипта. Проте з часом була додана можливість запуску інших скриптів всередині поточного, що відкрило простір для створення простих циклів.
І якось так сталося, що майже вся гра була заскриптована за допомогою цього інструмента. Це стосується заставок, деяких битв з босом, більшості подій під час гри та навіть частини поведінки противників. Тобто ми, за великим рахунком, заскриптували значний шмат гри за допомогою панелі налагодження.
Для мене, як для дизайнера, це був дуже важливий досвід. До цього я працював дизайнером декілька років, але всюди робота зводилася до створення документації. Я уявляв, що на AAA-проєктах дизайнер проводить цілий день, пишучи документацію та тестуючи гру. А тоді я вперше побачив, що дизайнер може безпосередньо займатися розробкою гри — налаштовувати скрипти рівнів або створювати прості прототипи нових механік.
«Задали координати сонця нижче нуля». Олександр Гончарук, Game Designer/Level Designer в Ubisoft Ukraine Studios
Якось під час роботи над локацією «Венеція» в Metro: Last Light" ми стикнулися з проблемою — на поверхні води під певним ракурсом відігравали сонячні відблиски. Для води використовували той же шейдер, що і для поверхні. У властивостях матеріалу води прописували, яке небо відображати — з цим ми впорались швидко, замінивши небо на щось дуже темне, — а також положення сонця, якраз для більш реалістичного відображення вже згаданих відблисків.

Просити переписувати шейдер, щоб була можливість вимикати сонце, не дуже хотілося, тому задали координати сонця нижче нуля, щоб опустити його під воду. Гравець у нас пірнати не вмів, тому такого налаштування на той момент вистачило. До речі, відображення від освітленої води на стелі та стінах тоді було несправжнім. На стелю і стіни направляли джерела світла, які проєктували певну анімацію, щоб отримати ефект каустики.
«Перевірте, чи гра добре забалансована, і є відчутна різниця при прогресії гравця». Єгор Остапенко, Game Designer у GSC Game World
Одним із напрямків діяльності в аутсорсі є оцінка вже виданих продуктів або тих, які знаходяться на етапі «мягкого запуску» чи лише готуються до нього. Основна мета — проаналізувати гру та дати рекомендації щодо її покращення. У цьому конкретному випадку розглядалися ігри для мобільних платформ.
Такими послугами користуються як великі, так і значно менші студії. Нижче я зібрав проблеми, які найчастіше виникали, та надані рекомендації щодо їх вирішення.
Перша проблема. Занадто багато часу приділяється вступній або навчальній частині гри, під час якої користувач фактично не має ніякого контролю над тим, що відбувається. Він може просто не дочекатися безпосередньо ігроладу й закинути гру.
Рекомендація. Вчити гравця в контексті ігрового процесу, обравши для цього максимально цікаву частину певної ігроладної петлі в грі. Тобто подавати навчання поступово, коли це необхідно
Друга проблема. Наявність недоліків у UI та локалізації, відсутність підтримки нативного функціонала платформ
Рекомендація. Не поспішати з релізом і навіть з м’яким запуском. Потрібно виділити ресурси QA, які зможуть відстежити хоча б найбільш очевидні недоліки, що, своєю чергою, забезпечить позитивніше сприйняття продукту аудиторією
Третя проблема. Незручності або відсутність достатньої тактильності при грі на певному пристрої.
Рекомендація. Необхідно перевіряти ігролад на різних пристроях (смартфонах/планшетах), щоб впевнитися у достатньому рівні комфорту для користувачів. Особливо це стосується операцій, які потребують дуже точних натискань на важливі елементи інтерфейсу гри.
Четверта проблема. В певний момент гравці перестають повертатися в гру через відсутність нового контенту. А часто реалізовувати його немає змоги.
Перша рекомендація. Впровадити щоденні бонуси, які будуть видаватися на початку кожної ігрової сесії раз на 24 години.
Друга рекомендація. Впровадити щоденні нагороди, частину з яких можна здобути лише за виконання певних дій протягом доби.
Третя рекомендація. Додати соціальні взаємодії між гравцями: чати, рейтинги лідерства, список друзів тощо. А ще — нагороди, які видаються за спільні зусилля всієї аудиторії.
Четверта рекомендація. Додати прості мініігри, які дозволять заробляти невелику кількість ігрової валюти, Гарний приклад — це «полювання» на бандитів у місті, як у The Simpsons: Tapped Out.
П’ята проблема. У гри багато встановлень, але дуже мало гравців повертаються після першого запуску.
Перша рекомендація. Впевнитися в тому, що у схожих успішних іграх вікове обмеження збігається з вашим. Якщо ні, то це привід внести зміни в контент.
Друга рекомендація. Перевірити інтерфейс, який повинен бути зрозумілим та не перевантаженим елементами.
Третя рекомендація. Переконатися, що візуально гра витримана в єдиному стилі, привабливому для вашої цільової аудиторії
Четверта рекомендація. Впевнитися, що сетинг гри не має розбіжностей і є послідовним. Тобто ніщо не повинно виривати гравців зі стану «потоку».
П’ята рекомендація. Перевірити, чи гра добре забалансована, і є відчутна різниця при прогресії гравця. Наприклад, «меч 5» значно сильніший за «меч 1», тобто цінність «меча 5» очевидна.
Шоста рекомендація. Впевнитися в тому, що в грі є елемент, який спроможний встановити емоційний зв’язок з гравцем. До прикладу, харизматичний персонаж у навчанні, захопливий наратив.
Сьома рекомендація. Додати сповіщення, які нагадуватимуть гравцям про певні події в грі, коли вони вийшли з неї. Головне — дотримуватися золотої середини й не перетворювати це на спам.
«Ця розмова загнала керівника у фрустрацію, бо той не зміг описати словами те, що хотів отримати». Віталій Іщенко, Concept Artist у The Farm 51
Була кумедна ситуація, про яку я з дружиною часто згадую. В якомусь сенсі вона стала показовою. Тоді ми обоє працювали художниками на одній фірмі. Директор компанії поставив дружині задачу намалювати персонажа за образом Мадса Міккельсена з фільму «Полярний».
В результаті короткої дискусії задача почала звучати як: «Поймі „Полярного“, ти должна єго понять». Проте фільму дружина не бачила, тому ми попросили описати персонажа за визначеними параметрами. Ця розмова загнала керівника у фрустрацію, бо той не зміг сформувати словами те, що хотів отримати 🙂.
Мадс Міккельсен у фільмі «Полярний»
Ми підозрювали, що, швидше за все, суть полягає в харизмі актора. І коли дружина попросила описати персонажа словами, то директор, звісно ж, не зміг, бо відчуття базувалося на харизмі актора. Та й загалом люди, які не пов’язані з професією художника, не надто гарно роблять описи.
А враховуючи, що зовнішність актора не можна було використовувати, то задача стала алогічною. Ця вимога, «поймі Полярного», стала для нас характерною. Вона описує ситуації, коли замовник ставить алогічну задачу, яку нереально виконати, і сам її насправді не може зрозуміти.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів