«Грязные» приёмы разработчиков игр

Невидимые белки и контроллер, который на самом деле не разряжался.

Разработчики игр поделились с порталом Gamasutra историями о самых «грязных» приёмах, к которым им доводилось прибегать. В их рассказах немало интересного — иногда в борьбе с неуловимыми багами и сжатыми сроками приходится по полной задействовать креативное мышление.

Фальшивая батарея

Игра Super Time Force использовала почти всю доступную память Xbox 360. Из-за функции перемотки времени игре приходилось сохранять информацию обо всех внутриигровых объектах — врагах, пулях, платформах, взрывах, — в каждый отдельный момент времени.

«Грязные» приёмы разработчиков игр

Выяснилось, что если игрок будет достаточно быстро нажимать на все кнопки контроллера в течение определённого времени, память будет исчерпана. Как вспоминает Кеннет Йонг, работавший над Super Time Force, разработчики решили ничего не исправлять, и применили хитрость: теперь игра отслеживала «хаотичное» нажатие кнопок и притворялась, что он нечаянно нажал на кнопку перемотки времени. Ничего не подозревающий игрок отправлялся назад во времени, а игра могла начать запоминать его действия заново.

Но вскоре разработчики столкнулись с новым багом — на одном из уровней было такое большое количество объектов, что при определённом количестве произведённых игроком выстрелов и взрывов память всё равно заканчивалась. С этой проблемой разобрались ещё более простым способом— когда память приближалась к лимиту, игра вставала на паузу, а на экране появлялась надпись «низкий заряд батареи». Затем игра перенаправляла игрока на экран выбора уровней.

«Грязные» приёмы разработчиков игр

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

Кеннет Йонг, технический директор Capy Games

Невидимые белки

Геймдизайнер Артур Бруно вспоминает о проблеме, с которой он столкнулся при создании Titan Quest. Система игры не позволяла устанавливать задержку для действия — если какой-то триггер активировался, то действие должно было произойти немедленно, а не через пять или десять секунд.

«Грязные» приёмы разработчиков игр

С этой проблемой разработчикам помог справиться тестер, подключившийся к процессу на финальной стадии разработки. Он догадался, что существует способ обойти это ограничение — длительность анимации.

В качестве таймеров изобретательный тестер использовал белок. Он создал множество невидимых белок и расставил их по уровням — длительность их анимации позволяла рассчитывать задержку действия. На следующий проект его взяли уже в должности геймдизайнера.

«Грязные» приёмы разработчиков игр

Немного тишины

Кит Кайзершот, работавший над Mega Man Legacy Collection для 3DS, столкнулся с загадочным багом. При запуске игры первый звук, который слышал игрок, непременно искажался до неузнаваемости — вне зависимости от того, что это был за звук. Разработчики бились над этой проблемой очень долго и подходили к ней с самых разных сторон — не помогало ничего. Было очевидно, что в таком виде игру нельзя было выпускать. Кит, по его словам, «едва не сошёл с ума».

В конце концов Кит просто добавил в начало секунду тишины. Всё заработало.

«Грязные» приёмы разработчиков игр

Включите счётчик

Мартин Тёртон работал над версией гоночной игры для PS2 и PSP. В какой-то момент департамент контроля качества пожаловался на то, что машина реагировала на действия водителя немного по-другому — не так, как в других версиях игры. Разработчики долго пытались понять, в чём дело, но не преуспели. Им пришлось пригласить в офис тестера из департамента контроля качества — тот поиграл и неожиданно заявил, что этой проблемы он больше не замечает, хотя в той версии, в которую он играл раньше, она точно была.

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

«Грязные» приёмы разработчиков игр

Выяснилось, что всё дело в счётчике FPS, который в версии для разработчиков располагался в углу экрана, а в финальной версии — отсутствовал. Со счётчиком кадров машина управлялась отлично, без счётчика — хуже.

Разработчики не могли поверить своим глазам, но всё было именно так. Они снова углубились в код в попытке обнаружить ошибку — но ничего не нашли. В самый последний момент, накануне дедлайна, было решено проверить — влияет ли расположение счётчика на экране на игровой процесс? Выяснилось, что нет, не влияет — главное, чтобы он просто был. В результате разработчики просто передвинули счётчик за край экрана — в таком виде игра и поступила в продажу.

Спасительная кнопка

В одной из игр для Android от студии Karaokulta тестеры нашли серьёзную проблему — после одной из катсцен игра вылетала. Геймдизайнер Марлон Рувалкаба Муноз рассказывает, что команда разработчиков потратила неделю, пытаясь понять, в чём причина — но всё было тщетно. Зато экспериментальным путём выяснилось, что если во время катсцены нажать на кнопку «назад», то вылета не произойдёт.

«Грязные» приёмы разработчиков игр

Время поджимало, и в качестве временной меры было принято решение добавить в катсцену невидимую кнопку «назад», которая нажималась сама собой по таймеру. Спустя шесть месяцев после релиза эта кнопка всё ещё там.

Мир остатков мостов

Рассказывая о работе над игрой Grim Dawn, Артур Бруно вспоминает, как на начальном этапе разработки, когда в команде ещё не было художника, он пользовался услугами фрилансеров, тратя личные сбережения. В частности, он заказал для игры модель деревянного моста с длинными досками, закруглёнными балками и железными шипами.

«Грязные» приёмы разработчиков игр

Вскоре понадобились новые элементы окружения — но художника и моделера в команде всё ещё не было, личных сбережений Артура уже не хватало, а его собственные навыки оставляли желать лучшего. В результате Бруно принял оригинальное решение — он разобрал мост на составные части и построил из них целый мир. Другие мосты, деревянные настилы, террасы, изгороди, виселицы, столы, знаки, крыши домов, кучи мусора — всё это было сделано из того самого моста. После успеха на Kickstarter многие из этих элементов удалось заменить на оригинальные, но большая часть, по словам Артура, всё ещё ведёт происхождение от того самого моста, заказанного у фрилансера.

248248
87 комментариев

Классный материал, спасибо. Да, самые злые баги это когда "что-то не так", но никаких ошибок. Зато когда найдешь и пофиксишь - программистский оргазм.

35
Ответить
95
Ответить

Не соглашусь, самые злые - это когда "все так" но 3 раза в месяц, в дни, между которыми нет на первый взгляд никакой связи, все летит к хренам на 10% машин и работает у остальных.

21
Ответить

Звучит как передача костылей от более опытных товарищей, к неопытным. Про белок смешно. Надеюсь что правда )

9
Ответить

В вов невидимые кролики за заклинания отвечают, например. Так что распространённая практика. https://dtf.ru/3831-razrabotchik-world-of-warcraft-rasskazal-ob-ispolzovanii-v-igre-nevidimyh-krolikov

6
Ответить

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

Жука уменьшали, выставляли ему радиус восприятия побольше и сажали на вейпоинт с зацикленным расписанием, которое и проверяло условия срабатывания триггера. В отличии от нормального триггера, жука можно было динамически добавлять, удалять и перемещать по миру. Единственным недостатком было то, что он периодически пищал, сводя игроков с ума, потому что увидеть его они не могли :) Но и с этим справились, просто создав молчаливую модель жука, к слову даже это было гораздо проще, чем создать один триггер по-настоящему.

5
Ответить

С белками жестко конечно. Про мегамен непонятно, как они не могли отследить этот звук и исправить проблему. Если на чужом движке делали, то ладно, но если на своем...

3
Ответить