Как стать автором
Обновить

Динамическое обнаружение в игре Shadow Tactics

Время на прочтение12 мин
Количество просмотров12K
Автор оригинала: Moritz Wagner

Что: динамическое обнаружение в Shadow Tactics


В Shadow Tactics игроки управляют отрядом персонажей, каждый из которых имеет свою специализацию (в отряде может быть до пяти персонажей). Их задача — прокрасться по огромному уровню, заполненному врагами, и незаметно убить жертву. Каждый уровень — это головоломка со множеством решений. Один из самых важных инструментов игрока — способность отображать область видимости врага в форме конусов, которые мы называем конусами видимости (Viewcones). У конусов видимости есть области разного цвета, определяющие поведение врагов.

image
Рисунок 1: конус видимости Shadow Tactics.

Для тех, кому интересно, как это реализовано технически, я процитирую нашего ведущего технического инженера Фридера Мильке (Frieder Mielke), человека, создавшего всю систему: «Основной принцип, используемый в вычислениях конусов видимости — это использование карт теней. Сначала мы рендерим текстуру глубины из положения глаз выбранного персонажа. Затем при рендеринге основной камеры мы на основании ранее созданной текстуры глубин генерируем маску, содержащую информацию для разных областей видимости (например, „полная видимость“, „полностью скрытая“, „невидимая, когда персонаж ползёт“ и „за пределами видимости“). С помощью этой маски в последнем проходе мы можем раскрасить конус видимости. В этом проходе используется буфер шаблонов (stencil buffer) для исключения объектов, которые не нужно рендерить, и добавления информации об источниках освещения».

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

Кто: Мориц Вагнер (Moritz Wagner), ведущий дизайнер Mimimi Productions


Меня зовут Мориц, я ведущий дизайнер Mimimi Productions. Я работаю в компании с самого начала, когда наша студия возникла при изучении гейм-дизайна в мюнхенской Media Design Hochschule. В третьем семестре мы начали разрабатывать ранние прототипы нашей первой большой игры The Last Tinker: City of Colors, которую выпустили после основания Mimimi в 2011 году. Кроме неё, мы работали над несколькими мобильными играми.

Сейчас в студии работает 16 человек, и наш последний проект — это Shadow Tactics: Blades of the Shogun, тактическая стелс-игра в реальном времени (real time tactical stealth game, RTT) с изометрическим видом в стиле серий Commandos и Desperados.

Зачем?


Как и многие разработчики, мы определились с парой столпов дизайна для Shadow Tactics. Оба столпа связаны и с использованием конусов видимости.

  • Сохранение базового игрового цикла: геймплей Commandos сегодня так же интересен, как и 16 лет назад. Критически важно, чтобы в не зависимости от принятых решений базовый игровой цикл оставался неизменным. Shadow Tactics должна доставлять то же удовольствие (то есть невероятные мучения, сменяющиеся удовлетворением), что и старые игры.
  • Повышенное удобство использования: хотя геймплей старых игр всё ещё интересен, интерфейс с точки зрения удобства уже устарел (сюрприз!). Управление неповоротливо, часто недостаточно обратной связи, а важная информация доносится до игрока нечётко. Shadow Tactics должна походить на современную версию старых RTT-игр.

Базовые принципы конусов видимости


Поскольку конус видимости отображает зрение врага, он используется для определения пространства уровня, в котором игрок может перемещаться и осуществлять взаимодействия. Расстановка врагов создаёт следующие типы пространства:

  • Нет конусов видимости: как нетрудно догадаться, в таких областях игроки могут делать практически всё что угодно. Обычно именно здесь охранники встречают свою преждевременную смерть. Игроки могут или создавать такие области сами, отвлекая врагов, или заманивать в них противников. Особо безрассудные охранники даже могут проходить по ним самостоятельно.
  • Тёмно-зелёный конус видимости: чтобы персонажей не здесь обнаружили, они должны ползать. Любое действие, при котором персонажи должны встать, приведёт к проблемам. Такие области легко миновать, но убийство охранников обычно невозможно без отвлечения других охранников.
  • Ярко-зелёный конус видимости: в такие области вход воспрещён. При низкой сложности игры игроки могут быстро пробежать через них, оставшись незамеченными, но в них почти невозможно выполнять какие-либо действия, не попав в беду.
  • Пунктирный конус видимости: используется для кустов или высокой травы. Здесь лежащие или ползущие персонажи игрока всегда невидимы, если враги не войдут в кусты (они всегда заранее предупреждают об этом голосом и делают это только, когда их заманивают, или когда они ищут персонажа). Мы решили, что такие типы укрытий никогда не раскрывали всего своего потенциала в старых играх. Поэтому мы добавили их для создания контраста между ощущениями безопасности внутри кустов и риска при нахождении в других областях.

Конус видимости — самый важный фактор создания взаимодействий с врагами в Shadow Tactics. Некоторые охранники двигаются по патрульным маршрутам, то есть пространства постоянно меняют своё состояние. Это довольно просто, но я хотел рассказать об этом в первую очередь.

Как выглядят конусы видимости


Нет никаких градиентов или другого оформления, самое важное — контрастные края и чётко обозначенные области.

Размер конуса видимости влияет на погружение в игру, сложность и дизайн уровней.

Сама по себе эта функция может создавать ситуации, разрушающие ощущение погружённости в игру. Они часто встречаются в стелс-играх, и поэтому игроки частично смиряются с ними. Но всё равно важно не перегибать палку. Хотя глядя на конус видимости и понятно, почему враг не замечает персонажа, ползущего в трёх метрах от него, всё равно такая ситуация выглядит неестественной и глупой. Все мы встречались с этим в играх.

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

image
Рисунок 2: на ночных уровнях параметры конуса видимости изменяются. Конусы становятся меньше, тёмно-зелёная область очень большая, но освещение всегда создаёт ярко-зелёную область видимости.

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

Здесь внимательный читатель может спросить: «Но Мориц, ты ведь сказал, что никакого оформления в конусах видимости нет. Что же это за странный узор на тёмно-зелёной части?» Я объясню: его добавили потому, что чёткий контраст между яркой и тёмной областью не был заметен, поэтому сложно было определить, что же это за цвет. Такое бывает на возвышенностях и в случаях, когда части конуса видимости перекрываются большими объектами или укрытиями.

image
Рисунок 3: на левой картинке я отключил узор. На нём видно, как сложно определить яркость конуса видимости. Когда узор включен (на картинке справа), всё становится очевидным.

Один конус, чтоб править всеми


Мы решили, что можно отображать одновременно только один конус, как и в старых RTT-играх.

С точки зрения дизайна на это есть две основные причины:

  • Информация: Shadow Tactics предоставляет почти полную информацию. В игре нет тумана войны, враги никогда не создаются случайно и их поведение всегда предсказуемо (пока они не начинают активно искать игрока). Игроки могут полностью анализировать ситуацию, если у них есть на это время. Ограничение в один конус видимости — это единственная полускрытая информация при решении головоломки. Заставляя игроков запоминать область видимости охранников, мы создаём напряжённость и делаем геймплей избегания конусов видимости более интригующим.
  • Наглядность: единственный конус видимости позволяет не запутаться в интерфейсе и повысить наглядность. Хотя для некоторых игроков огромные объёмы информации привычны, для большинства они будут слишком сложны. Кроме того, это выглядит неприятно на скриншотах и в видеороликах.

Даже ниндзя можно обнаружить


image
Рисунок 4: персонажа Хайято (Hayato) обнаружил один из первых охранников на первом уровне. Нуб!

Обработка момента обнаружения врагом персонажа игрока очень важна в любой стелс-игре. Мы много раз возвращались к этой части геймплея, я расскажу об этом процессе и о том, к чему мы пришли в конце. Эта часть посвящена не только самому конусу видимости, но и разным механикам и системам, которые использовались… а потом были вырезаны.

Сначала давайте посмотрим, что же происходит, когда персонаж игрока попадает в конус видимости и близок к обнаружению:

  • Звук: воспроизводится уникальный звуковой эффект. Он сообщает игроку, что его обнаружили.
  • Фокус: конус видимости врага фокусируется на персонаже и автоматически включается, даже если выбран другой конус. Это сразу говорит игроку, кто его обнаружил.
  • Замедленная съёмка: игра переходит в режим замедленной съёмки, чтобы позволить игроку лучше среагировать. Позже я расскажу об эволюции этой функции. Это был мучительный, полный ошибок процесс.
  • Жёлтый цвет: если конус видимости был зелёным, он начинает заполняться жёлтым, начиная от глаз врага. Как только жёлтая часть коснётся персонажа игрока, враг на самом деле обнаруживает его, начинает стрелять и включает тревогу. Если персонаж заходит в жёлтую часть, охранники обнаруживают его немедленно. Это схоже с функцией в Desperados, где конусы видимости постепенно становились жёлтыми, но перемещение жёлтой части к игроку позволило создать более чёткую обратную связь момента обнаружения угрозы. Это позволяет игроку лучше освоить работу функции и использовать её в свою пользу.

Медленный путь к замедленной съёмке


Пробы и ошибки — неотъемлемая часть этого жанра, поддерживаемая возможностью быстрого сохранения и загрузки в любой момент времени. Хоть и очевидно, что мы хотели сохранить этот аспект, мы опасались того, как отреагируют на него современные геймеры. Разумеется, те, кто играл в старые игры, не испытают проблем, но не испугает ли это новое поколение? Не посчитают ли критики это устаревшим?

Мы много раздумывали на эту тему и пришли к заключению, что оставим функции быстрого сохранения и загрузки частью игры. Но нам всё-таки стоит дать игрокам больше возможностей избегать обнаружения. Жёлтая часть конуса видимости тоже соответствовала этой философии и нам понравилось, как она работает.

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

Учитывая эти предпосылки, мы начали думать над разными функциями. Так началась одиссея в мир идей: у каждой из них были проблемы и через множество итераций мы их отсекали. Это был мучительный процесс, особенно для нашего программиста Филиппа Виттерсхагена (Philipp Wittershagen), которому приходилось их реализовывать. Думаю, у него всё ещё бывают кошмары.

Режим заморозки


Это адское порождение должно было использовать силы ниндзя и предотвращать обнаружение, чтобы игрокам приходилось реже использовать быструю загрузку. Вот как он работал: как только персонажа игрока достигала жёлтая часть конуса видимости, игра приостанавливалась и перемещала фокус на персонажа. Это уже было большой проблемой: приостановка игры в стрессовый момент убивает потоковое состояние и ощущается скверно. Пауза всегда включается неожиданно и сбивает игроков с толку. Кроме того, если после паузы игра ожидала команд игрока, то он отдавал их случайно, потому что большинство лихорадочно начинало щёлкать мышью, пытаясь убежать. (За эту привычку лихорадочного кликанья я виню в основном Diablo и MOBA. Большое вам спасибо.)

У режима заморозки были и более странные особенности. Я хронологически рассмотрю основные итерации и вкратце расскажу, что в них не работало:

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

Однако возникли проблемы. Выяснилось, что такая возможность слишком мощна для некоторых персонажей (у которых были хорошие дистанционные атаки) и почти бесполезна для остальных. К тому же очень часто не было никаких вариантов спасти персонаж. Вас заметили в яркой области и охранников несколько? Значит, не повезло, вы можете сделать одно действие и всё равно потом умереть. Когда срабатывает такая механика страховки, игрок ожидает, что она будет полезна всегда, но у неё были слабости. Поэтому мы отказались от неё и решили попробовать что-нибудь другое…

Телепортация в пределах кругов: возникла идея, что крутые персонажи-ниндзя могут телепортироваться с помощью дымовых гранат, чтобы избежать обнаружения. Тут уже возникли вопросы со стилем: зачем самурай Муген будет использовать дымовые гранаты и телепортацию? И почему все эти персонажи применяют дымовые гранаты ТОЛЬКО при обнаружении и игрок не может использовать их в других случаях?

Конечно, мы решили на время проигнорировать эти вопросы и сфокусироваться на механике:

При обнаружении вокруг персонажа появляется круг, и игрок может нажать в любом месте круга, чтобы телепортироваться в эту точку. Так он может или попасть в тёмную область конуса видимости, где можно пригнуться, или даже переместиться в укрытие. И, разумеется, игроки начали использовать эту функцию, чтобы телепортироваться прямо к охранникам и убивать их.

Поэтому мы заменили круг на конус, позволяющий игрокам телепортироваться только ОТ врага. И снова возникли проблемы. Он был бесполезен даже чаще, чем предыдущая концепция (не нашлось безопасной точки для телепортации? Бум, хедшот.), а игроки бездумным кликаньем телепортировали персонажей в случайные места. Кроме того, отображение конуса запутывало интерфейс.

image
Рисунок 5: режим заморозки: при обнаружении игрок может телепортировать персонажа в любую точку конуса (скриншот сделан в версии pre-alpha).

Фальшивая перемотка


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

И снова появились проблемы. Обратная связь работала не очень хорошо, и игроки не понимали, что им нужно сделать. Но я всё-таки думаю, что через несколько итераций мы могли бы усовершенствовать эту функцию. К сожалению, была одна огромная проблема: если игрок выбирал персонажа, которым он не управлял уже давно, то эта функция выглядела очень уродливо. Конечно же игроки не помнили, где персонаж находился до этого, и удивлялись, по какому принципу создана эта странная линия. Кроме того, ею можно было жульничать на снежных уровнях. Здесь охранники следуют за вами, видя ваши отпечатки… Думаю, дальнейшее легко представить. Покажи свои отпечатки врагу, заставь двигаться за собой и телепортируйся за его спину. Всё честно.

image
Рисунок 6: фальшивая перемотка: игроки могут телепортироваться в любую точку, в которой персонаж был раньше (скриншот alpha-версии).

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

Новый подход


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

Посмотрев на проблему под другим углом, наш креативный директор Доминик Абе (Dominik Abé) предложил простую функцию замедленной съёмки, которая включается, когда персонаж попадает в конус видимости и тот начинает заполняться жёлтым.

Опять возникли некоторые проблемы. Сначала для тестирования функции мы просто замедляли всю игру. Это давало игрокам больше времени отреагировать. Проблема заключалась в том, что они воспринимали функцию как наказание и помеху. Им казалось, что их замедляют, когда они пытаются убежать от приближающейся жёлтой линии, и это было нечестно. Мы попробовали исправить ситуацию, сделав персонажей игрока более быстрыми, чем остальная часть игры, но проблема сохранилась. К тому же появились проблемы с анимациями и видеоэффектами.

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

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

Заключение


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

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

Я уверен, что конусах видимости и моменте обнаружения ещё многое можно усовершенствовать.

Для новых игр я бы с удовольствием поэкспериментировал над тем, чтобы интервал перед обнаружением имел более разнообразные последствия (например, включение тревоги), а не рассматривал бы только сам момент обнаружения. Для этого есть множество возможностей, особенно при изучении поведения охранников. Такие эксперименты добавят в игру новое измерение, позволяющее игроку активно мешать наступлению катастрофических последствий.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 30: ↑28 и ↓2+26
Комментарии19

Публикации

Истории

Работа

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань