Виды подгрузки локаций в экшенах
В этой статье будет рассказано о загрузке и выгрузке областей в линейных однопользователь
Введение
Работая над уровнем, дизайнерам и художникам необходимо учитывать, что их игровые ресурсы должны одновременно помещаться в памяти. Тогда как старые игры времён Wolfenstein 3-D и Doom загружали уровень целиком, демонстрируя загрузочный экран, во времена Half-Life началась тенденция подгружать их небольшими кусочками – таким образом в них можно вместить больше деталей, вместе с этим создавая у игроков ощущение непрерывного приключения.
В Half-Life перемещение из одной области в другую сопровождалось секундной задержкой и надписью «Loading». Игроков об этом не предупреждали, однако дизайнеры Valve грамотно размещали такие переходы в спокойных моментах между перестрелками и в местах, где темп игрока снижался естественным образом. Позже компьютеры стали быстрее и загрузки сократились до практически мгновенных.
В наши дни в блокбастерах вроде Gears of War и Uncharted переходы стали по-настоящему бесшовными. После длительной первоначальной загрузки новой главы в абсолютно другой локации (с другой графикой) – иногда во время пререндеренного ролика – используются зоны подгрузки, этакие «буферы», позволяющие на ходу выгружать и подгружать соседние куски уровня. Поскольку большая часть глобальной графики загружена заранее, а окружение почти не меняется, общие ассеты в соседних областях значительно ускоряют такую загрузку в сравнении с изначальной загрузкой уровня.
По большому счёту, эти игры убирают экраны/полоски загрузки, наблюдаемые в слишком обширных уровнях Half-Life, Portal 2 или Fallout 4, и игрок просто проводит время загрузки в игре. При должном творческом подходе он и вовсе ничего не заметит. Отведённое на загрузку время можно даже сделать по-своему интересным – в Last of Us для этого введены головоломки и эпизоды общения между персонажами.
Схематичное представление
Большинство экшенов соединяют несколько крупных областей небольшими промежуточными зонами подгрузки:
Зона A – обширное пространство со множеством сражений, зона C – ещё одно такое же пространство. Игроки в зоне подгрузки B не могут видеть обе больших области одновременно. Именно здесь из памяти удаляется зона A и загружается B. Выгружаемая область не должна попадать в поле зрения игрока, так что если игра не предполагает обратного движения, лучше гарантировать, что он не сможет вернуться. Сразу после выгрузки зоны A может загружаться B. Новая область должна успеть загрузиться к моменту прихода игрока, поэтому перед ней стоит разместить преграду, блокирующую быстрое продвижение.
Проще всего представить зону подгрузки в виде воздушного шлюза – за игроком закрывается «дверь», подгружается новая область, открывается «дверь» спереди. В идеале всё не должно напоминать настоящий шлюз, в таких зонах лучше размещать головоломки и повествовательны
Выгрузка и преграды на обратном пути
Преграды на обратном пути мешают возвращению к выгружаемой области. Это та дверь, что закрывается за игроком – во многих случаях навсегда. Не обязательно реализовывать её в виде настоящей двери. Это может быть обрушившийся потолок, блокирующий путь назад, или провал, упав в который, игрок не может подняться обратно, или односторонний портал, закрывающийся после использования. После входа в зону подгрузки преграды обычно размещаются за поворотом, чтобы игрок наверняка не увидел выгружаемую зону A.
В современных экшенах за такие моменты главным образом отвечают одноразовые анимации. Только подумайте, сколько проходов открывал ваш персонаж, только чтобы увидеть, как они рушатся за его спиной. С той стороны в это время пропадает игровой мир, освобождая место в памяти для следующей крупной области. В кооперативных играх такие анимации помогают собраться вместе – иначе второй игрок мог бы оставаться позади, падая сквозь выгружаемую графику!
Кат-сцена тоже может служить неплохой преградой, если она не выглядит вырванной из контекста и/или сюжета и, конечно, если она укладывается в бюджет разработки!
Одноразовые спуски/падения выступают отличной преградой, сохраняющей плавность игрового процесса. Достаточно сохранять в памяти участок уровня с поворотом сразу перед спуском, и, когда игрок окажется внизу без возможности подняться, предыдущая область уже может выгружаться. Единственный недостаток таких моментов – их бросающаяся в глаза искусственность, за исключением случаев, когда они поддерживаются стилистикой мира и окружением (особенно пригодятся здесь разрушенные постройки и естественные склоны). К тому же, в кооперативе игроков приходится телепортировать друг к другу, чтобы последний не оставался в выгружаемой зоне.
Замедление игрока в зоне подгрузки
Поскольку зоны подгрузки расположены между двумя крупными областями, они сами по себе способствуют небольшому отдыху от непрерывного экшена. Нам необходимо успеть загрузить зону B, так что продвижение игрока нужно замедлить. Возможно, напрямую – как в моментах со злосчастной принудительной ходьбой в Gears of War – или же косвенно, переключив внимание на головоломки. В любом случае это эффективнее и интереснее обычного длинного пути, требующего, скажем, 30-секундной пробежки.
Внезапные стычки с одним-двумя противниками – отличная уловка для замедления игрока. К тому же, это не даёт игроку расслабляться и варьирует темп, не зацикливаясь на однообразной схеме «бой-паззл-бой».
Время могут выиграть интерактивные объекты, вроде медленно поворачивающихся вентилей в Killzone 2 и Gears of War, или особенности окружения, когда нужно прыгать или ждать, пока напарник спустит лестницу (ещё это неплохая преграда перед новой областью).
Можно объединять указанные приёмы, так чтобы это вписывалось в дух игры – например, как в первой Gears of War, когда дрон запирает игрока в комнате и тому приходится отбиваться от толпы врагов.
Batman: Arkham Asylum отлично справляется с «мягким» замедлением игрока при помощи отлично обыгранных джокерских подколок или исследованием окружения, к которому располагают загадки Загадочника, особенные для каждой локации, или же сбором уймы коллекционных предметов.
Выход из зоны подгрузки
Вход в новую область тоже может быть заблокирован необходимостью выполнения определённых условий – убийством всех врагов или завершением подгрузки. Опять же, вход не обязан быть дверью или её подобием, это лишь препятствие, до определённого времени блокирующее путь.
Многие игры, от серии Call of Duty до Killzone 2 и The Last of Us, доверяют открытие входа дружественным персонажам: они делают прорези в сетке, распахивают двери, поднимают деревянные балки. Новые волны врагов тоже способны открывать проходы – более того, благодаря пальбе и шуму они манят игроков за собой, как морковка на палочке, в сторону новоявленного пути. В экшенах полно отличных примеров появления врагов, когда они выжигают двери лазером или же монстр пробивается сквозь стену. Это не просто круто выглядит – зачастую такой эффектный вход для противника оборачивается чётко обозначенным выходом для игрока.
Преграды на входе используются не во всех играх, ведь время загрузки можно высчитать довольно точно, в крайнем случае вынужденная пауза составит лишь долю секунды. Однако, поставленный барьер будет служить гарантией того, что новая область наверняка прогрузилась – ведь иначе игроки с поцарапанным диском или повреждёнными файлами могут в лучшем случае увидеть непрогруженный мир, а в худшем застрять на месте или провалиться в никуда (хотя царапины или повреждённые файлы в принципе могут привести к более серьёзным проблемам).
Главная проблема таких мест – их сложно вписать в окружение уровня и стилистику игры; двери и узкие коридоры не смогут спасать вас вечно. Другой проблемой является повторяемость – если открытие двери сопровождается особой анимацией, потребуется очень много разных анимаций!
Здесь поможет одна хитрость, если преграду на входе видно только в самом конце зоны подгрузки – можно заранее выполнить проверку на завершение загрузки новой области. Если зона C успешно загружена, проход можно открывать до приближения игрока – это избавит от очередной однообразной анимации, а в случае быстрого движения игрока преграда исправно сработает.
Есть интересный пример преграды на входе в тюремный блок из Batman: Arkham Asylum – камера безопасности сканирует Бэтмена перед тем, как открыть дверь. Учитывая повторное использование локаций область за дверью может и не успеть прогрузиться. В таком случае анимация сканирования будет продолжаться, пока новая зона не будет загружена. Это отличный компромисс, идеально вписывающийся во вселенную игры, а на лишние секунды сканирования игроки, возможно, и не обратят внимания.
Можно вспомнить и Mass Effect, где перемещение игрока по Цитадели замедляется поездками на лифте, во время которых персонажи обсуждают что-нибудь интересное или слушают новостные сводки. Любопытно, что длительность подгрузок в этом случае только на руку – таким образом создается иллюзия одной огромной станции вместо множества разрозненных локации. С другой же стороны, этот прием предельно очевиден, так что злоупотреблять им не стоит.
Заключение
В большинстве экшенов всегда выгоднее держать игрока погружённым в игровой мир, чем демонстрировать загрузочный экран. Если у разработчиков получается чем-нибудь его занять, грамотно использовать естественную смену темпа повествования или просто с умом распределять ассеты, делая окружение интересным, зоны подгрузки смогут стать естественной частью игры, а не обычными пустыми коридорами, что выглядят неуместными даже для непосвящённых.
Оригинал – “Creative Airlocking: streaming in action games” на MapCore.org.