Только что закончил дизайнить очередной уровень нашего ретро-шутера Slipgate. Вместо ожидаемых 10-15 часов, на этот уровень ушло порядка 30. Сижу и думаю - и куда такая прорва времени-то девалась? А ответ вот он, на скриншоте.
Отдаём дань уважаения игре детства. Но стоило ли это того?
Изначально уровень вообще планировался как пара комнаток, предваряющих уже готовый кусок с мощным замесом. Это самое начало игры, где игрок знакомится с управлением и основными механиками. Сразу бросать в незнакомого человека толстые пачки врагов как-то некрасиво - надо дать немного приноровиться и побродить по местности.
Уровень детализации в игре мы стараемся держать где-то между Quake 2 и Half-Life 1. И смотрится достаточно стильно, и наш движок не захлёбывается. Он всё-таки у нас старенький (BIMA - наследник легендарного FPS Creator). Хоть и с 2005-го года он окреп и поумнел, но много объектов ему обрабатывать тяжело.
Аутентичность - сложная штука, и потому мы ограничены потреблением памяти движка в 1.85 Гб на уровень. Каждый дополнительный объект откусывает свою малую долю. Особенно это заметно, когда он уникальный - то есть встречается на уровне только один раз. Не удаётся сэкономить толику памяти при повторном его использовании - движок создаёт сущность для каждого типа объектов, потом её клонирует на каждое применение. Иметь больше сотни-полутора уникальных объектов на уровне - уже тяжело.
Пример: для детализации геометрии в области, где встретил свою гибель боец с дробовиком, использовано 20 объектов (из них 12 уникальных, но с потенциалом повторного использования). Приемлемо. Перфекционисты, простите за стыки потолочной решётки!
И вот, при проектировании уровня мне в порыве вдохновения пришла замечательная мысль - а ведь первая комнатка отдалённо смахивает на входную группу из Марс-Сити в Doom 3! Почему бы не отдать дань уважения, сделав её похожей, как небольшую отсылку?
Довольно быстро получилось подобрать ассеты, и собрать то, что видно на первом скриншоте. Показал - всем понравилось, сказали "малаца, продолжай в том же духе". И я продолжил.
Во-первых, детализация уже пробила потолок и ушла в заоблачные выси. Небольшая комнатка содержит 75 объектов, из них 55 уникальных. Да таких, которые особо никуда больше не воткнёшь. Половина бюджета объектов на уровень уже съедена, а мы только начали!
Для сравнения - целый уровень, собранный из ~100 уникальных объектов
Во-вторых, в дело вступила такая разновидность feature creep, как ползучая детализация. И сейчас расскажу об этой проблема подробнее.
Вспомните старые игры из числа хорошо сохранившихся. Когда стиль оформления игры таков, что уровень намеренно (или по возможностям железа) не наполняется мелкими деталями - то одинаково "голые стены" повсюду выглядят достаточно органично. Мозг игрока принимает допущение "нам не показывают всех деталей потому, что это не важно".
Quake 2 как пример подхода "бедно, но чисто"
Посмотрите на скрин. Никто же не задаётся вопросами типа "а почему лестница без перил?", "а почему кран-балка без крана?" и даже "а как персонал пользуется аптечкой, закинутой на самый верх коробки?". Это условности, с которыми "упрощённый" стиль помогает нам смириться. Не про то игра.
А теперь посмотрите на скриншот из Quake 4 для сравнения, не акцентируя внимание на качестве моделей и рендера.
Обратите внимание на кабели, трубы, экранчики, перила, выступающую из стен машинерию. Вот она - детализация окружения до отметки "реалистично"!
Ну а теперь представьте, что мы из этого помещения вышли в дверь, и вдруг обнаружили склад в оформлении предыдущего скриншота. Что мы ощутим?
Мозг невольно подметит такие мелочи, как отсутствие электрических кабелей у механизмов, исчезновение перил у лестниц и отсутствие иных мелочей, которых мы ожидаем от реалистичного окружения. Погружение будет разрушено, мы ощутим недоделанность и "театральность" игрового мира.
И с того момента, как у нас на уровне появилась первая реалистичная комната - мы стали её заложником. Теперь прочие части уровня обязаны соответствовать.
Мы смотрим новыми глазами на уровень, и видим, что не все части соответствуют высоко заданной планке. По всему уровню начинается опухание детализации - напихивание помещений деталями, которые изначально не задумывались при проектировании. Их мы потом долго и мучительно полируем, чтобы они не мешали геймплею, не перетягивали внимание игрока и просто хорошо смотрелись.
И чем более детальным становится стиль уровня - тем больше помещений начинают требовать переделки. На это тратятся время и силы, но становится не лучше - становится хуже.
Если изначально в каморке охранника стоял стул и стол с терминалом доступа - то ползучая детализация сначала потребует добавить провод от компьютера к стене, потом настенную розетку, потом бумаги, кружки, тумбочку, потёртости на полу, потом сама планировка комнаты станет смотреться неуместно (ну кто по 12 часов просидит в комнатке метр на метр без окон?), потом голые железные стены станут давить... А ведь изначально это должен был быть закуток, куда игрок на 5 секунд заходит нажать кнопку.
Реалистичное окружение в Return to Castle Wolfenstein. Минимумом объектов достигнут максимальный эффект. Браво.
И этот процесс крайне сложно остановить - вырезать лишние и любовно добавленные детали очень обидно. А ползучая детализация продолжает распространяться, требуя всё новых и новых жертв. И рано или поздно что-то кончается - или бюджет, или время, или возможности движка.
В нашем случае я сумел ограничить процесс при помощи длинного разветвлённого коридора. Пустоватые коридоры сами по себе не так уж плохи в своей транзитной функции, и сглаживают переход. А после пары схваток - уже и внимание игрока рассеялось, и деталей можно ему отсыпать поменьше...
В целом, получилось как-то так. Это ещё не финальная версия - с кучей шероховатостей, без озвучки действий героем, с плейсхолдером на месте части монстров и музыки. Но основная часть уже готова:
И всё равно количество уникальных объектов у нас достигло 150-200, а к работе над уровнем я возвращался в течение трёх недель. Это не смертельно, но много. Постараемся больше так не делать, чтобы ползучая детализация не сожрала проект с потрохами.
Спасибо за внимание, и простите если пост кривой - моя первая тематическая публикация на Пикабу 🙂
Подпишитесь на Телеграмм-канал игры: https://t.me/SlipgateDevlog