Игровой разработчик из Канады Оббе Вермей — технический директор нескольких игр серии Grand Theft Auto, включая GTA III, Vice City и San Andreas. В личном микроблоге Вермей иногда делится байками про разработку этой трилогии. Недавно он пояснил, как и почему работает популярный у спидранеров метод очищения трафика на дорогах.
Ровно 20 лет назад, 26 октября 2004 года, на игровой приставке PlayStation 2 вышла игра Grand Theft Auto: San Andreas. Порт на Windows и Xbox выпустят лишь к лету 2005. Отчасти из-за эсклюзивности San Andreas стала самой продаваемой игрой на PlayStation 2 в истории: только на этой приставке было продано 17,33 млн копий.
Хотя сюжетно они связаны на уровне камео персонажей, GTA III, GTA: Vice City и GTA: San Andreas обычно объединяют в трилогию. Все три вышли на PlayStation 2 — игровой приставке с ничтожными по современным меркам 32 МиБ ОЗУ и 4 МиБ видеопамяти. Суммарная вычислительная мощность PlayStation 2 не превышала 6,2 гигафлопса. Сегодня даже на смартфонах производительность видеоускорителя измеряется в сотнях гигафлопс.
Стоит также учитывать, что на тот момент игровая разработка выглядела иначе. Патчей первого дня не существовало. Более того, продукт нужно было отдавать в печать за несколько недель до появления дисков на полках магазинов. Выход проекта на «золото» означал, что игра действительно готова.
При этом в эту эпоху геймдева команды разработчиков оставались небольшими. К примеру, всю карту GTA III создали всего 4 художника. Над GTA IV трудились 1,5 тыс. человек, в то время как к San Andreas приложили руку около сотни. Сверхурочно перерабатывали редко. Чаще всего сотрудники Rockstar проводили на работе не больше 40 часов в неделю.
Команда разработчиков GTA 3, фотография 2000 или 2001 года. ObbeVermeij
Такое возможно, поскольку двадцать лет назад требования к графической составляющей были заметно меньше. Это сегодня у любого здания в игре обязательны рельефные детали в виде балконов, окон и даже различных занавесок на каждом из них. В шестом поколении игровых приставок допустимо выглядели фасады зданий, состоящие из плоских поверхностей с натянутой текстурой.
Однако индустрия развивалась. GTA: Vice City после GTA III казалась повтором, рескином с заменой ассетов, код игры отличался слабо. San Andreas решили сделать куда более амбициозным проектом с множеством новых фич и отвели на разработку два года. На этот раз пытались изобразить уже не один крупный североамериканский мегаполис, а целый штат США из трёх городов. Внутри Rockstar North собирались создать три различных карты, между которыми игра переключалась бы при необходимости.
Как известно, весь штат Сан-Андреас существует в одном пространстве, которое игровой приставке помогает подгружать алгоритм стриминга ассетов с диска DVD с игрой. Незадолго до того, как художники сели создавать три карты, в Rockstar North прошло совещание, где было решено уместить весь штат на одной карте.
Штат Сан-Андреас умещается на карте 6×6 км
Один из присутствовавших на этой встрече — Оббе Вермей [Obbe Vermeij]. Это логично: в качестве технического директора его имя значится в титрах восьми игр Grand Theft Auto, в том числе San Andreas. Вермей пришёл в Rockstar North в 1995 году, когда это была ещё отдельная компания DMA Design, и проработал там до 2008 года. В прошлом году игроразработчик завёл блог insiderockstarnorth.blogspot.com, где вспоминал истории тех лет. Позднее Оббе блог удалил, сфокусировав внимание на микроблоге в X.
Вермей регулярно рассказывает про историю разработки GTA и поясняет, почему решили сделать так, а не иначе. К примеру, три города на одной карте уместили просто потому, что хотелось добираться везде на машине.
Недавно Оббе рассказал, как реализован спаун автомобилей в этих первых трёхмерных Grand Theft Auto.
Ограничения ресурсов приставки PlayStation 2 значительно повлияли на эффектность симуляции. В играх GTA город «живёт» в небольшом радиусе от игрока. Иногда движение приходится намеренно замедлять, чтобы успеть прогрузить игровой мир с медленного оптического носителя.
Демонстрация зоны замедления, которую поставили для оптимизации стриминга игровых ассетов. weaita_7
Если игрок покидает локацию, ресурсы высвобождаются. В том числе деспаунятся машины, исчезают пешеходы, оружие не сохраняется. Модели машин в гаражах выгружаются из памяти, когда дверь гаража закрывается.
Чтобы избежать фрагментации, в памяти организован пулинг отдельно для пешеходов и отдельно для машин. Хотя в каждой из игр порядка 80 моделей транспортных средств, одновременно возможно загрузить около 7. Этот бюджет быстро расходуется, если нужны автомобили экстренных служб: вертолёты, грузовики и легковушки правоохранительных служб, машины скорой помощи и пожарных. Легко представить, что если игрок кого-то сбил, откачивать труп приедет карета скорой помощи, при внимании полиции память «отъест» вертолёт и несколько машин преследования, а на одном из транспортных средств игрок передвигается сам. В итоге может получиться, что в пуле памяти для транспорта места осталось на 1–2 модели обычных автомобилей.
Поэтому для игры были крайне важны алгоритмы случайного спауна и деспауна транспортных средств.
Часть транспорта требуется по миссии и спаунится вручную с флагом, который не даёт уничтожать объект. По окончании миссии этот флаг снимается, и объекты деспаунятся по обычным правилам. Левел-дизайнеры иногда добавляли «генераторы машин», которые размещают статичный транспорт, например припаркованный автомобиль персонажа у его дома. В остальных случаях транспорт на дорогах генерируется случайно.
Оббе по памяти приводит конкретный алгоритм появления и уничтожения автомобилей в GTA III, Vice City и San Andreas:
- Для видимой области: автомобили появляются на расстоянии ≈70 метров от игрока и деспаунятся в ≈90 метрах.
- Для области вне поля зрения камеры: появляются в ≈15 метрах от игрока и исчезают в ≈25 метрах.
На изображении ниже эти радиусы схематично изображены зелёным (спаун) и красным (деспаун) цветами. Здания в проверку на видимость не включены, поэтому так часты выезжающие на перекрёстках автомобили. Транспорт полиции спаунится другими методами.
Автомобили издают шум. Если объект удалить, звук резко прекратится. Вермей не смог ответить на вопрос, почему игрок не замечал ничего необычного. Звуком занимался другой отдел, Оббе беспокоиться об этом не приходилось.
Obbevermeij
В комментарии под твитами Вермея пришёл бывший директор по звуку Rockstar Колин Андерсон и рассказал, что для этого задействовали функции аудиодвижка Wild Metal Country. Резко прекратившиеся звуки обнаруживаются и попросту повторяются с затуханием. Также исчезновение объекта маскируется громкими звуками окружающей среды.
Автомобили спаунятся в случайных узлах графа дорог, алгоритм лишь проверяет дальность от игрока и близость других машин. Иногда эта проверка проваливается, поэтому получается необычно плотный трафик или неожиданно пустынные улицы. Этих узлов много — типичный поворот для гладкости может состоять из пяти.
Вообще, движение тоже завязано на граф дорог. Обычные автомобили передвигаются бесцельно, случайно поворачивая на перекрёстках. Полиция и персонажи из миссий находят путь по алгоритму, похожему на A*. Оббе собирался оптимизировать алгоритм до полноценного A*, но узлов было мало, поэтому поиск работал достаточно быстро и так.
Вермей отрицает, что автомобили спаунятся намеренно прямо перед игроком.
Удалённые на 20 и более метров от игрока автомобили физику обрабатывают по упрощённым алгоритмам. Такие упрощения допускают, к примеру, что машина может проехать сквозь стены. При приближении к игроку включается полноценная физика. Визуально это заметно по лёгкому подрагиванию внезапно включившейся подвески. При удалении от игрока обратно в упрощённый режим обработки физики автомобили не переключаются.
«Автомобильный» алгоритм для спауна людей не используется, но правила их появления похожи. Пешеходы возникают и исчезают на значительно более близких дистанциях, чем транспорт.
Этот же код спауна автомобилей с незначительными улучшениями перекочевал в GTA IV. Полный список изменений Вермей не приводит, но указывает, что дистанции заметно подняли и добавили спаун автомобилей, которые ждут на перекрёстке.
Незакрытый баг с деспауном хорошо помогает спидранерам. Для его использования они дёргают камеру вверх-вниз, добиваясь пустоты на дороге впереди.
Стрим спидранера Joshimuz
Оббе утверждает, что «подарок» спидранерам он исправил, добавив двухсекундную задержку проверки условий деспауна для автомобилей за пределами обзора игрока. Вероятно, впервые эта проверка появилась лишь в первом представителе HD-эры Grand Theft Auto — GTA IV.