Начиная с Ultima Underworld и System Shock, Looking Glass Studios всегда стремилась создавать глубоко иммерсивные игры. Ее основатель Пол Нейрат с детства любил обследовать всякие здания, в том числе и те, где его быть не должно — но тяга к исследованиям была сильнее.
Как-то раз после урока плавания не то в 10, не то в 12 лет Нейрат заглянул в подвал оздоровительного клуба, дверь в который по счастливой случайности оказалась открыта. Оттуда можно было спуститься еще ниже — судя по количеству пыли, в помещение, где никто не бывал годами. Конечно, его это заинтриговало, но вскоре он услышал звук чужих шагов и перепугался, что его поймают. Он прятался в темном углу до тех пор, пока охранник не войдет и не осмотрится, а поняв, что никого здесь не найдет — не уйдет обратно.
Напряженное ожидание и страх быть пойманным — все эти ощущения он вспомнил при разработке концепта Thief — игры, которая могла и не случиться, ведь на протяжении почти всего времени разработки вражеский ИИ отказывался работать так, как нужно.
Установка контекста
Изначально стелс не был кор-механикой игры, но чем дольше команда думала над концепцией, тем больше убеждалась, что это то, что нужно. Вслед за этим очевидным решением стал выбор вора в качестве главного героя. Разработчики хотели воссоздать для игрока исключительный опыт, сфокусированный на роли. Все знают, чем занимаются воры. Игроки тоже это знают. Это создает мгновенный контекст, особенно важный, если вы задались целью создать инновационную игру. Из заданного контекста вы уже получаете задачи, которые нужно разрешить. Так, Thief подразумевала, что от игрока будет требоваться прятаться в тени и держаться подальше от света.
К моменту начала разработки Thief уже существовали такие стелс-игры, как Tenchu и Metal Gear Solid, но геймплей в них строился на том, чтобы игрок просто избегал попадания в конусы видимости ИИ противника. В Thief освещенность тоже имеет немаловажное значение, но это не единственный элемент сложной системы.
Создатели знали, что для реализации своей задумки захотят использовать звуковой ландшафт, в связи с чем от игрока потребуется передвигаться действительно тихо, чтобы избежать обнаружения охранниками, которые могут явиться на шум. Также они знали, что ИИ окажется достаточно сложным, чтобы охрана была начеку касательно происходящего вокруг и могла заподозрить что-то, услышав звук, исходящий от вас. Но затем, если вы не будете шуметь следующую минуту, просто решила бы, что это крыса.
Звук как элемент дизайна играл роль основной среды, через которую ИИ сообщали игроку свое местоположение и внутреннее состояние. Команда пыталась разработать ИИ с более широким диапазоном осведомленности, чем два типичных состояния ИИ в стелсе того времени: «не обращающий внимания» и «всеведущий». Но такой диапазон внутренних состояний оказался бы бессмысленным, если бы игрок не мог его считывать, так что ИИ был наделен широким спектром речи, чтобы давать подсказки игроку.
Чтобы звук в игре работал так, как задумано, нужно было реализовать звуковую систему, значительно более сложную по сравнению со многими другими играми. Для Thief дизайнеры создали вторичную «базу данных комнат», которая отражала взаимосвязь пространств на более высоком уровне, чем необработанная геометрия. Хотя она также использовалась для триггеров сценариев и оптимизации ИИ, основная роль этой базы данных заключалась в предоставлении достаточно простого представления мира, чтобы обеспечить реалистичное распространение звуков в пространстве в реальном времени. Без этого маловероятно, что звуковой дизайн бы работал и действительно позволял игроку и ИИ лучше воспринимать звуки, как они есть в реальной жизни, и лучше понимать местоположение своих противников в пространстве. Так что, если охранник оказывался поблизости, а звук шел не напрямую, а имел отражение от стен, он бы это понял. Многие не задумываются над этой разницей, но неосознанно ее замечают, ведь природа этого явления заложена у нас в мозгу: то, какими путями распространяется звук, дает нам представление о пространстве вокруг вас. Не обязательно об этом знать, чтобы полностью осознавать.
Проблема
Началась разработка игры. Она длилась уже полтора года, но стелс все еще не работал так, как должен был. Игрок не мог однозначно оценить свое состояние, не мог понять, видит ли его охранник, хорошо ли он спрятался. ИИ не мог эффективно улавливать необходимые сигналы, такие как пятно крови на земле. Все работало не так: порой можно было без проблем пройти у охранника перед носом, зато в другой сцене он обнаружит вас, насколько бы хорошо вы ни спрятались. Это не было тем опытом, которого хотели добиться создатели. По факту, можно было считать, что у них не было игры.
Итак, прошло полтора года, а кор игры так и не заработал. Усугублялась ситуация тем, что издатель игры, Eidos, тоже терял уверенность в успехе проекта — даже заходила речь о том, чтобы его отменять. Он давал студии полтора года, чтобы заставить стелс и геймплей работать. В противном случае это сулило бы Looking Glass Studios значительные сокращения. От этого стресс в команде только возрастал.
Решение проблемы
Создатели хотели создать иммерсивное, реалистичное с точки зрения логики освещение, чтобы, глядя в вашу сторону, пока вы находитесь в тени, охранники вас не увидели. А если вы в их поле зрения даже не попадаете, то и вовсе не заметили бы. В их распоряжении была карта уровня, световое окружение, преобразующееся в фидбек, который получает противник и отсюда анализирует, сколько на вас падает света, как много вы двигаетесь, насколько освещена каждая часть вашего тела, как близко вы находитесь — был целый набор факторов, которые разработчики пытались учесть, чтобы создать реалистичные и более понятные ощущения, и игрок почувствовал, что да, если его засекли, это имело смысл. Очень важно было нащупать это и правильно, в понятном виде донести как до ИИ противника, так и до игрока. Ведь если ты не понимаешь, находишься ли ты в тени и насколько она тебя скрывает — значит, игра не работает.
Однажды один из членов команды разработал концепцию light gem, или индикатора освещенности, располагавшегося внизу экрана. Это часть UI-интерфейса, которая становится светлее или темнее в зависимости от того, насколько игрока видно. Для шума ничего подобного разработано не было, но это все равно помогло. Глядя на этот индикатор, можно было быстро ориентироваться в обстановке.
Итак, детали наконец-то начали вставать на свои места, но картина все еще была неполной. В какой-то момент ведущий программист игры Том Леонард разработал новую схему, как ИИ противника должны вести себя в игровом окружении, и пропитчил эту идею остальным. Нужно было переписать всю систему ИИ, что выглядело довольно безумно на текущем этапе проекта. Но он объяснил свою точку зрения, и это оказалось довольно разумным.
Первоначальный ИИ для Thief был разработан другим программистом до того, как были полностью определены требования пересмотренного стелс-дизайна. После этого директор проекта и куратор системы покинули команду, а большая часть программистов была временно переведена на помощь в выпуске другой игры. Несколько месяцев разработка ИИ продолжалась без какого-либо надзора и четкого игрового дизайна. Вскоре ушел и последний программист, работавший над ним. В то время как основные структуры данных и алгоритмы поиска пути были довольно надежными, код, генерирующий базу данных поиска пути, работал совсем не так, как должен был. Процесс принятия решений ИИ был ориентирован на боевую систему, требующую минимума вмешательства со стороны геймдизайнера, а не на стелс, требующий гораздо больше настроек. Хуже того, процесс принятия решений на высоком уровне в ИИ отошел от дизайн-документации, а код был чрезвычайно хрупким.
Возможно, это казалось бы не столь уж серьезными проблемами, если бы не сроки: опасения касательно этой системы были приняты всерьез слишком поздно, и глубина проблемы довольно долго оставалась недооцененной. Все из-за нежелания отказаться от мысли, что, хотя система много глючит, она, вероятно, исправна. Но спустя несколько месяцев и множество бессонных ночей все-таки пришлось прийти к выводу, насколько сильно команда ошибалась.
В результате Леонард героически переписал четыре пятых кода системы ИИ практически с нуля. После двенадцати изнурительных недель, наконец, ИИ был готов к реальным плейтестам. И это сработало. Система звукового ландшафта составляла прекрасную комбинацию с новым ИИ. Наконец-то все собралось воедино.
Урок
Что можно из этого вынести? Ошибки неизбежны. Нужно позволить их себе совершать, пробовать новое. На вашем пути будет куча тупиковых ситуаций. Но вы учитесь — и делаете это постоянно. Нейрат уверен, что им многое удалось как раз благодаря этому опыту ошибок — и именно благодаря нему получилось сформировать представление о том, как должна выглядеть игра. Просто написать код — но гораздо сложнее уложить в голове, как все должно работать.