Динамічне виявлення у грі Modern Tactics

: динамічне виявлення в 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. Велике вам спасибі.)

У режиму заморозки були і більш дивні особливості. Я хронологічно розгляну основні ітерації і коротко розповім, що в них не працювало:

Виконати дію: у цій ітерації гравець міг виконати тільки одну дію після припинення гри. Це було призначене для того, щоб, наприклад, персонаж міг нахилитися, якщо перебував у темній області, або просто зняти охоронця дистанційної атакою, якщо його бачив лише один ворог.

Однак виникли проблеми. З'ясувалося, що така можливість дуже потужна для деяких персонажів (у яких були хороші дистанційні атаки) і майже непридатною для інших. До того ж дуже часто не було ніяких варіантів врятувати персонаж. Вас помітили в яскравій області і кілька охоронців? Значить, не пощастило, ви можете зробити одну дію і все одно потім померти. Коли спрацьовує така механіка страховки, гравець очікує, що вона буде корисна завжди, але у неї були слабкості. Тому ми відмовилися від неї і вирішили спробувати що-небудь інше…

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

Звичайно, ми вирішили на час проігнорувати ці питання і сфокусуватися на механіці:

При виявленні навколо персонажа з'являється коло, і гравець може натиснути в будь-якому місці кола, щоб переміщуватися в цю точку. Так він може або потрапити в темну область конуса видимості, де можна пригнутися, або навіть перейти в укриття. І, зрозуміло, гравці почали використовувати цю функцію, щоб переміщуватися прямо до охоронців і вбивати їх.

Тому ми замінили коло на конус, що дозволяє гравцям переміщуватися тільки ВІД ворога. І знову виникли проблеми. Він був марний навіть частіше, ніж попередня концепція (не знайшлося безпечної точки для телепортації? Бум, headshots.), а гравці бездумним кликаньем переміщували персонажів у випадкові місця. Крім того, відображення конуса заплутувало інтерфейс.

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

Фальшива перемотування
З якихось причин ми все ще вважали, що телепортація — це хороша ідея. Оскільки переміщення персонажа було дуже дивним і складним, ми хотіли спростити цей момент. При виявленні за персонажем виникала лінія, що показує, де він був раніше. Гравці могли переміщуватися в будь-яку точку лінії, як би «перемотуючи час» для цього персонажа.

І знову виникли проблеми. Зворотній зв'язок працювала не дуже добре, і гравці не розуміли, що їм потрібно зробити. Але я все-таки думаю, що через кілька ітерацій ми могли б удосконалити цю функцію. На жаль, була одна величезна проблема: якщо гравець вибирав персонажа, яким він не керував вже давно, то ця функція виглядала дуже потворно. Звичайно ж гравці не пам'ятали, де персонаж перебував до цього, і дивувалися, за яким принципом створена ця дивна лінія. Крім того, нею можна було шахраювати на снігових рівнях. Тут охоронці слідують за вами, бачачи ваші відбитки… Думаю, подальше легко уявити. Покажи свої відбитки ворогові, змусь рухатися за собою і телепортируйся за його спину. Все чесно.

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

І я ще не згадав про тих брудних трюках, які доводилося застосовувати, коли виявленими виявлялися кілька персонажів, або, гірше того, вони перебували на різних точках карти. Я досі згадую з неприязню це темне для нас час.

Новий підхід
Зрештою, ми усвідомили, що це не спрацює. Коли спускаєшся вниз по спіралі, краще відійти на крок в сторону, і подивитися на те, чого справді хочеш досягти. Ми почали з хороших ідей, і поступово опустилися вглиб. Ми постійно ґрунтувалися на попередній невдалій спробі, але не робили з неї висновків. Це не дозволяло нам підійти до проблеми зі свіжим поглядом, щоб придумати що-небудь просте і ясне. Не повторюйте наших помилок. Іноді варто зробити крок убік. У теорії всі ми це знали, але з якихось причин ми робили це недостатньо рано, і, мені здається, таке траплялося дуже часто.

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

Знову виникли деякі проблеми. Спочатку для тестування функції ми просто сповільнювали всю гру. Це давало гравцям більше часу відреагувати. Проблема полягала в тому, що вони сприймали функцію покарання і перешкоду. Їм здавалося, що їх уповільнюють, коли вони намагаються втекти від наближення жовтої лінії, і це було нечесно. Ми спробували виправити ситуацію, зробивши персонажів гравця більш швидкими, ніж інша частина гри, але проблема збереглася. До того ж з'явилися проблеми з анімаціями і відеоефектами.

Тому ми вирішили дотримуватися сповільненої зйомки, тому що проблеми такого типу виразно можна було вирішити. Крім того, такий підхід здавався нам найбільш простим і елегантним рішенням для всіх. Ще одним фактором був бюджет — настав момент, коли нам довелося на чомусь зупинитися.

В кінці вирішення цих проблем здалося дуже простим. В основному воно стосувалося тонкої настройки параметрів уповільнення ігри і зміни балансу швидкості заповнення конусів видимості жовтим, щоб спроба втекти від них в сповільненій зйомці приносила задоволення. Щоб усе спрацювало, нам навіть не довелося змушувати персонажів рухатися з різними швидкостями. Деяких гравців все ще розчаровує уповільнена зйомка, тому я думаю, що коли-небудь нам знову потрібно буде повернутися до її налаштування.

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

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

Я впевнений, що конусах видимості і моменті виявлення ще багато чого можна вдосконалити.

Для нових ігор я б із задоволенням експериментував над тим, щоб інтервал перед виявленням мав більш різноманітні наслідки (наприклад, включення тривоги), а не розглядав би тільки сам момент виявлення. Для цього є безліч можливостей, особливо при вивченні поведінки охоронців. Такі експерименти додадуть в гру новий вимір, що дозволяє гравцеві активно заважати настання катастрофічних наслідків.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.