- PVSM.RU - https://www.pvsm.ru -

Почему в Grand Theft Auto: San Andreas самолёты падают с неба

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 1

Оббе Вермей [Obbe Vermeij] — один из программистов GTA 3, Vice City и San Andreas. Оббе ушёл из Rockstar после GTA IV и давно занимается другими проектами. В последние месяцы он начал вести блог insiderockstarnorth.blogspot.com [1], но в ноябре прошлого года закрыл [2] его, поскольку бывшим коллегам мемуары не понравились. Тем не менее в личном микроблоге [3] Оббе иногда делится байками про разработку игр из своей карьеры.

На этот раз Вермей рассказал [4], почему так часто падают самолёты в San Andreas.

Из одного названия серии игр Grand Theft Auto легко понять как основную деятельность, так и сеттинг. Дело в том, что «grand theft auto» обозначает угон (или попытку угона) автомобиля. При этом сам термин используется в североамериканском семействе диалектов английского языка. Тем не менее GTA зародилась в Шотландии, а не США.

Компания DMA Design открылась в 1987 году. На тот момент основатели студии уже разработали [5] несколько мелких игр в компьютерном клубе города Данди и искали издателя. Изначальное временное название компании Acme [6] уже было занято, поэтому пришлось искать новое. Имя выбрали [7] по сокращению термина direct memory access (прямой доступ к памяти), хотя позднее будут говорить, что DMA ничего не означает.

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 2
Разработчики офиса в Данди, начало девяностых. Scotsman [8]

Следующие несколько лет DMA Design связаны [9] с успехом динамической головоломки Lemmings и её сиквелов. За счёт прибыли от игры DMA разрослась и перешла на сотрудничество с крупным японским производителем игр Nintendo.

4 апреля 1995 года в Данди начинают разработку будущей игры Race'n'Chase. А если верить ревизиям диздока от 22 марта 1995 года [10], первые попытки очертить рамки проекта были готовы уже 25 января на основании обсуждений, проведённых с 23 января.

Концепт предлагал создать продукт, как говорят сейчас, с открытым миром, где игрок может путешествовать на автомобилях по городу и выполнять различные задачи, связанные с криминальной деятельностью. Уже в набросках GTA предусмотрен мультиплеер, сетевой (ПК) или на одном устройстве (игровые приставки), где игроки берут на себя разные роли.

Описано было всё: от языков программирования до оценки системных требований. Издать игру предлагалось на DOS, Windows 95, Sony Playstation, Sega Saturn и Nintendo 64. Диздок заканчивается сроками: релиз намечен на 1 июля 1996 года, а движок должен быть готов к 3 июля 1995 года.

Концепт будущей GTA успел [11] претерпеть несколько итераций изменений.

Для начала написали техническую демку. Как и предлагал диздок, это был вид сверху на объёмный мир. Поскольку 3D-ускорителей в среднестатистическом игровом ПК не будет ещё лет пять, отрисовка шла усилиями исключительно центрального процессора компьютера. Приходилось идти на различные ухищрения а-ля движок Doom. Их недостатки заключались в отсутствии возможности наклонить камеру, их неоспоримое преимущество — игра выдавала неплохое число кадров в секунду.

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 3
Мокап Race'n'Chase. mikedailly [12]

Затем из этой демки попытались состряпать игру. Разработчики перебирали темы из диздока и изобретали что-то новое: гоночный симулятор, который стал доставкой пиццы, затем игрока и вовсе сделали копом. Лишь после пришли к решению, что играть нужно за преступника.

В августе 1995 года в DMA принимают [13] на работу нидерландца по имени Оббе Вермей. Он работал над Space Station Silicon Valley для Nintendo 64 на позиции программиста. Оббе мог лишь наблюдать со стороны, как команда GTA переживала из-за технических ограничений целевых платформ и попыток пересмотреть проект. К примеру, у PlayStation было всего 2 МиБ ОЗУ, куда меньше, чем встречалось на ПК, поэтому количество цветов в игре сократили с 256 до 16. Художники испытали бурю нецензурных эмоций, когда увидели результат сжатия.

Кстати, Вермей — хороший программист, но не всегда он был прав относительно геймдизайна. К примеру, когда Оббе пригласили в команду GTA 3, он предлагал [14] сделать её игрой с видом сверху — так же, как у предшественников. Вермей написал соответствующий режим камеры и просил сделать его режимом по умолчанию.

Выход Grand Theft Auto в 1997 году принёс финансовый успех. Компанию DMA Design приобрела Gremlin Interactive, последнюю позднее, после выхода GTA 2, поглотила Infogrames. При этом саму DMA продали Take-Two Interactive, которая уже владела BMG Interactive, издателем и владельцем прав на GTA.

Все эти реструктуризации затронули [15] не только права, но и организацию компании. DMA Design открыла новый офис в Эдинбурге, куда командам законченных на тот момент игр Body Harvest и Space Station Silicon Valley предложили переехать из офиса в Данди. Большинство из них действительно уехали в столицу Шотландии, и через несколько месяцев офис в Данди закрыли полностью.

Какое-то время команды сидели без дела. От офиса издателя в Нью-Йорке указаний не поступало, поэтому сотрудники занимались собственными проектами. Кстати, именно так в бывшей команде Body Harvest зародилась идея будущей Manhunt. В это время команда GTA 2 исследовала возможность сделать GTA 2.5, игру с изометрической проекцией.

GTA 2.5 никогда не увидела свет: началась работа над GTA 3.

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 4 [16]
Команда разработчиков GTA 3, фотография 2000 или 2001 года. ObbeVermeij [17]

Слабая вовлечённость менеджеров Rockstar из Нью-Йорка сохранялась [18] на протяжении всего периода создания Grand Theft Auto 3. Разработка шла быстро, поскольку никаких экспериментов с концепцией не требовалось, а сотрудники были опытные, как минимум с одной продающейся игрой за плечами — необычно хорошо для молодой гейм-индустрии той эпохи. Как утверждает Вермей, также значительно помогло, что из Нью-Йорка не мешали микроменджментом.

GTA 3 разрабатывали в первую очередь для PlayStation 2. Из-за технической схожести три игры — GTA 3, Vice City и San Andreas — иногда называют трилогией, пусть и сюжетно они связаны слабо, на уровне камео персонажей.

Технические ограничения заметно влияли на качество геймплея. Как говорит [19] Вермей, именно из-за этого автомобили на дорогах так часто повторяются: хотя всего в игре около 80 транспортных средств, объём памяти приставки умещал порядка 7. Впрочем, хватило ресурсов реализовать сменяемую погоду, хотя и примитивно: игра последовательно перебирала [20] небольшую (около 40 строк) таблицу состояний.

Также Оббе вспоминает [21] об огромном числе багов на протяжении разработки. Трудно было отыскать миссию, которую получалось пройти без падения игры, а частота кадров в секунду обычно проседала ниже 10. Лишь за 5 месяцев до релиза в GTA 3 стало можно сносно играть.

А ещё карта была буквально усеяна дырами. Дело в том, что обработка столкновений работает отдельно от отрисовки: у здания, состоящего из 10 тыс. треугольников, могла быть всего тысяча полигонов для обработки столкновений. Так приходилось делать потому, что обработка столкновений — медленная операция. Для исправления этой ситуации даже создали специальный вид оружия, который стрелял телами-рэгдоллами.

Оружием решали и другие проблемы. Однажды Вермей получил [22] от художников текстуру луны. Программист приделал светило в игру, убедившись, чтобы в суточном цикле луну было видно ночью. Через несколько дней у стола программиста столпились четыре художника и попросили поменять размер нового объекта. Однако они не смогли выбрать, какого размера должна быть луна в небе. Два из них предлагали поменьше, чтобы было реалистично, ещё два хотели крупнее, чтобы получилось красиво.

Этот спор четырёх дизайнеров продлился какое-то время. Оббе предложил компромисс: запрограммировать текстуру так, чтобы размер менялся в игре, а художники пусть сами выберут такую, какую захотят. Поскольку на тот момент Вермей возился со снайперской винтовкой, он сделал так, чтобы по выстрелу из прицела в луну размер светила менялся на один из трёх вариантов.

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 5
ObbeVermeij [23]

Художники не вернулись и не сообщили, какой размер правильный, поэтому это временное решение так и ушло в релиз. Хотя для San Andreas у луны кто-то дописал [24] фазы, код изменения размера авторства Оббе остался на месте.

Ни одна из игр «трилогии» не поддерживает сетевую игру без модов. На код сетевой игры для GTA 3 Оббе потратил [25] месяц, но мультиплеер работал с ошибками. Поскольку времени на исправления не оставалось, от сетевой игры отказались. Во время разработки Vice City на сетевую игру выделили сразу двух программистов, но и в этом случае времени не хватило — игра появилась на прилавках магазинов 29 октября 2002 года, всего через год после GTA 3 (вышла 23 октября 2001). Когда дело дошло до San Andreas, смысла в сетевой игре для стареющего поколения игровых приставок было мало, поэтому ограничились небольшим коопом.

При разработке Vice City команда сильно устала [14] от любых GTA и даже хотела [26] переключиться на зомби-шутер в сеттинге Шотландии или шпионский боевик. Технически Vice City от GTA 3 отличалась слабо и местами выглядела как «рескин», замена графической составляющей. Поэтому на Grand Theft Auto: San Andreas выделили сразу 2 года разработки и много внимания уделяли новым фичам.

Карта штата San Andreas упакована тремя крупными городами с аэропортами и кольцевой сетью железных дорог, мелкими поселениями, лесами и огромной горой, на которой легко потеряться. Персонаж игрока научился плавать и пользоваться парашютом, в игру добавили элементы ролевой игры с прокачкой, едой и симуляцией свиданий. Доходило до того, что некоторые новинки реализовывали не из желания иметь новую игровую механику, а чтобы было. К числу подобных фич, о которых сами разработчики отзывались прохладно, относится [14] стелс. Другие фичи просто не закончили: значение удачи на ставки в казино никак не влияет [27].

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 6
Штат Сан-Андреас

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

Впрочем, проблемы геймдизайнеров меркнут на фоне технических задач, которые выдвигал стриминг ресурсов. Дело в том, что у PlayStation 2 лишь 32 МиБ ОЗУ и 4 МиБ видеопамяти. В этот объём нужно уместить симуляцию города с пешеходами и транспортными средствами.

Наивный подход без стриминга предполагает, что весь город будет помещён в память при загрузке игры. В начале разработки GTA 3 так и сделали [28]. Художники уменьшили размер текстур и повторяли их. Получилось однотипно и некрасиво. Поэтому для GTA 3 написали стриминг ресурсов.

Игровой мир существует и отрисовывается только в определённом радиусе вокруг игрока. По мере передвижения персонажа игрока объекты мира подгружаются в память с компакт-диска, а здания вдали выгружаются из памяти. Вообще, стримятся не только здания, но и модели автомобилей, людей, звуки и музыка. Но основную проблему представляла загрузка мира — она не всегда поспевала за передвижением игрока.

Чтобы помочь прогрузке нужных районов вовремя, дорожки на компакт-диске оптимизировали специальным образом. Даже это не спасало. Скорость обращения к данным вынудила переделать целый район Либерти-Сити и повысить сопротивление воздуха на некоторых дорогах на незаметные 5–10 %.

Случайное падение самолёта

Со стримингом связана другая проблема San Andreas. Одна из новых фич для создания эффекта погружения — малая авиация, которая иногда рассекает над игроком. Технически это выглядит так: игра создаёт небольшой самолёт, который куда-то летит по своим делам.

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

Вермей объясняет [4], что код проверки бросает несколько лучей из силуэта самолёта по направлению движения и ищет столкновения. Подобная операция вычислительно ресурсоёмкая, поэтому Оббе запрограммировал лишь минимально нужное количество проверок — лучи из фюзеляжа и кончиков крыльев.

В процессе разработки San Andreas было задокументировано [21] 70 тыс. багов. Это — один из нерешённых. В релизной версии самолёты иногда падают с неба или даже сталкиваются с самим игроком. Событие настолько частое, что у спидранеров это известное нежелательное явление.

Подборка падений из стримов спидранера Joshimuz

Физическая модель самолётов не отличается [29] в зависимости от того, кто ими управляет: игрок или NPC. Часть падений случается из-за недостаточной скорости на момент спауна. Как утверждает Вермей, самолёт создаётся, но летит слишком медленно, чтобы оставаться в воздухе, и в итоге разбивается.

В остальных случаях Оббе винит стриминг. Часть мира может быть не прогружена, в том числе в памяти может не оказаться карты столкновений некоторых объектов. Из-за этого проверка проваливается, и самолёт спаунится с траекторией, обрекающей на гибель.

Почему в Grand Theft Auto: San Andreas самолёты падают с неба - 7

Наконец, как считают [30] в микроблогах, сам код Оббе может содержать ошибку. Как утверждает [31] известный модер Silent, в коде функции проверки вместо posX и posY должно быть GetSectorX(posX) и GetSectorY(posY).

Автор:
atomlib

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/oshibki/390851

Ссылки в тексте:

[1] insiderockstarnorth.blogspot.com: https://insiderockstarnorth.blogspot.com/

[2] закрыл: https://twitter.com/ObbeVermeij/status/1727731811541745848

[3] личном микроблоге: https://twitter.com/ObbeVermeij

[4] рассказал: https://twitter.com/ObbeVermeij/status/1775240936710082956

[5] разработали: http://www.javalemmings.com/DMA/DMA1_2.htm

[6] Acme: https://ru.wikipedia.org/wiki/Acme_Corporation

[7] выбрали: http://www.javalemmings.com/DMA/DMA1_4.htm

[8] Scotsman: https://www.scotsman.com/news/people/we-were-basically-the-big-bang-theory-but-30-years-ago-the-dundee-developers-who-became-scottish-video-game-legends-with-lemmings-3147464

[9] связаны: http://www.javalemmings.com/DMA/Lem_5.htm

[10] диздока от 22 марта 1995 года: https://www.gamedevs.org/uploads/grand-theft-auto.pdf

[11] успел: https://web.archive.org/web/20231122210836/https://insiderockstarnorth.blogspot.com/2023/11/the-development-of-gta-gta-2-1994-1999.html

[12] mikedailly: https://web.archive.org/web/20140319180754/https://www.flickr.com/photos/mikedailly/1398675192/in/set-72157602022230830/

[13] принимают: https://www.linkedin.com/in/obbe-vermeij-4926b51/

[14] предлагал: https://web.archive.org/web/20231122211725/https://insiderockstarnorth.blogspot.com/2023/11/development-of-san-andreas-2003-2004.html

[15] затронули: https://web.archive.org/web/20231122210912/https://insiderockstarnorth.blogspot.com/2023/11/1999-beginnings-of-gta3.html

[16] Image: https://habrastorage.org/webt/fv/vd/vn/fvvdvnxhobcqkli179mqrfknvam.jpeg

[17] ObbeVermeij: https://twitter.com/ObbeVermeij/status/1732561521496953154

[18] сохранялась: https://web.archive.org/web/20231122210829/https://insiderockstarnorth.blogspot.com/2023/11/development-of-gta3-1999-2001.html

[19] говорит: https://web.archive.org/web/20231122210752/https://insiderockstarnorth.blogspot.com/2023/11/why-so-many-cars-of-same-type.html

[20] перебирала: https://web.archive.org/web/20231122210725/https://insiderockstarnorth.blogspot.com/2023/11/how-does-weather-work.html

[21] вспоминает: https://web.archive.org/web/20231122210740/https://insiderockstarnorth.blogspot.com/2023/11/bugs-bugs-bugs.html

[22] получил: https://web.archive.org/web/20231122133831/https://insiderockstarnorth.blogspot.com/2023/11/why-does-moon-change-size-when-you.html

[23] ObbeVermeij: https://twitter.com/ObbeVermeij/status/1757572432863384046

[24] дописал: https://twitter.com/ObbeVermeij/status/1757578540508234226

[25] потратил: https://web.archive.org/web/20231122210856/https://insiderockstarnorth.blogspot.com/2023/11/network-game-in-gta3.html

[26] хотела: https://web.archive.org/web/20231122133927/https://insiderockstarnorth.blogspot.com/2023/11/distractions-agent-z.html

[27] не влияет: https://twitter.com/ObbeVermeij/status/1775705336160063500

[28] сделали: https://web.archive.org/web/20231122113817/https://insiderockstarnorth.blogspot.com/2023/11/streaming.html

[29] не отличается: https://twitter.com/ObbeVermeij/status/1775627259740672134

[30] считают: https://twitter.com/__silent_/status/1775231200925249765

[31] утверждает: https://twitter.com/__silent_/status/1775232833050550433

[32] Источник: https://habr.com/ru/articles/805375/?utm_source=habrahabr&utm_medium=rss&utm_campaign=805375