Нещодавно я разом з дизайнерами Майком Барклі (Mike Barclay) і Семом Хауелсом (Sam Howels) виступав на GDC Europe 2016 з доповіддю "Створення конфлікту: дизайн бою для екшн-ігор рівня AAA ". Сама доповідь доступна тільки для учасників GDC Vault, так що я вирішив поділитися своєю частиною в статті.
Я розгляну наш підхід до геометрії рівня у зв'язку з тим, як оточення передає його складність для гравця. Ми знаємо, що стандартним і найпростішим способом зміни складності є додавання і поєднання різних типів ворогів. Це зміни на макрорівні: чим більше, тим складніше, і це помітно для гравця. Але як щодо мікрозбільшення складності замість великих змін? Як можна збалансувати складність, не покладаючись на кількість противників або типи персонажів? До того ж іноді наратив може накладати обмеження на певні типи персонажів.
Вирішити цю проблему можна за допомогою оточення, що впливає на поведінку AI і на способи бою гравця з противниками. Цей варіант хороший тим, що складність зростає з підвищенням навички гравця і дозволяє слідувати за ним. Так ми зможемо гарантувати, що рівні залишаться цікавими і не втратять новизни до появи нових типів персонажів.
Ця мета досягається повторенням мантри «форма слідує за функцією»: форма будівлі або об'єкта повинна в першу чергу використовуватися за її призначенням. У нашому випадку геометрична схема рівня повинна підтримувати поведінку AI і впливати на нього. При цьому різні схеми призводять до різних результатів. У цій статті ми розглянемо такі запитання:
- Як можна створити оточення, що стимулює або обмежує рух, і як рух впливає на складність.
- Як маніпуляція укриттями може впливати на складність без штучної зміни поведінки AI.
- Як геометрія арени може впливати на розташування ворога, і що це означає для рівня складності.
Як можна створити середовище, що стимулює або обмежує рух, і як рух впливає на складність
По-перше, задамося питанням: навіщо нам може знадобитися впливати на рух ворогів? Якщо коротко, то «в рухомого ворога складніше потрапити». У нашому випадку набагато простіше потрапити по статичному ворогу, ніж по бігаючому в сцені. Обмеження руху ворогів корисне для створення більш легких боїв. Наприклад, на початку гри, коли гравець звикає до ігрової механіки. З іншого боку, якщо противники багато пересуваються, це значить, складність для гравця підвищується, що корисно, якщо по наративу він повинен бути перевантажений.
Так чому б не обмежити AI штучно, щоб вороги не рухалися? Краще не робити цього, щоб не отримати дивну поведінку, що відрізняється від того, яку вже вивчив гравець. Важливо не зруйнувати патерни поведінки AI, щоб гравцеві було легше прораховувати їх і планувати свої дії.
Наприклад, ви створили охоронювану зону, наповнену ворогами. Скажімо, вони охороняють вихід, або ви не хочете, щоб гравець міг піти без бою. Якщо не дозволити їм виходити із зони, то ви ризикуєте ускладнити розуміння гравцем бойової ситуації. Наприклад, у гравця є механіка «йди туди» (гравець кидком каменю або іншого предмета може змусити ворога піти досліджувати потрібне місце), або NPC можуть дослідити області, в яких вони бачили ворога. Якщо AI не реагує очікуваним способом, то це руйнує патерн геймплея (і використання самої механіки).
У цій ситуації гравець може відчувати себе ошуканим. У граничних випадках можуть виникнути ситуації, коли AI не здатний тікати від гранат або небезпечних зон, що руйнує ілюзію штучного «інтелекту».
Як же можна обмежити або стимулювати рух за допомогою оточення? Нам потрібно налаштувати оточення таким чином, щоб вони підтримували використовувані класи персонажів AI. Наприклад, штурмовики в Killzone, які перебувають у стані бою, рухаються між позиціями укриття і вибирають інші позиції тільки в межах максимально встановленої відстані. Також вони намагаються зберігати певну дистанцію до гравця, щоб мати можливість бою на середніх відстанях. Це відповідає типу їхнього класу, на відміну від ворога з дробовиком (ближнього бою) або далекобійного снайпера. Вони вступають в рукопашну, тільки якщо гравець підійде до них досить близько, в іншому випадку вони завжди намагаються відійти для бою на середній дальності, якщо це можливо. Тому якщо ви хочете, щоб вороги переміщалися плавно, то розташуйте укриття в області їх руху.
Якщо ви хочете обмежити рух, не розміщуйте ніяких укриттів. Тоді штурмовики будуть змушені займати одну область укриттів. Однак, в разі наближення гравця на відстань рукопашної атаки або кидку гранати вони будуть реагувати звичайним чином, відповідно до їх стандартної поведінки. Тому вони не зруйнують жодних набоїв поведінки. Схема рівня і розташування укриттів залежатимуть від метрик AI у вашій грі.
Ще один спосіб обмеження переміщення і просування, як для гравця, так і для ворогів - використання «нейтральної зони». Це відкритий простір без укриттів, який небезпечно перетинати гравцеві і ворогам, тому що вони будуть повністю відкритою і легкою мішенню.
Психологічно це застерігає гравців від переміщення, поки область не буде зачищена і безпечна. При використанні класів AI, що ховаються за укриттями, їх нейтральні зони знаходяться далеко від дистанцій переходу до укриттів. Це спосіб запобігання швидкого руху гравця за рівнем без штучного обмеження і помітного утримування. Наприклад, в першому бою ввідної місії Killzone Mercenary первинна мета гравця - труба в кінці зони, по якій можна піднятися. Щоб гравець не міг пробігти туди безпосередньо, я розмістив невелику нейтральну зону між гравцем і фронтом ворогів. Глибина цієї області була більшою, ніж відстань, на якій штурмовик шукає нову позицію для укриття. Це заохочувало гравця залишатися на початковій позиції укриттів, поки вороги не будуть переможені. Це гарантувало, що в кінці бою гравець буде дивитися в бік труби за позиціями ворогів. Труба була наступною частиною навчання.
Рух штурмовиків було обмежено, щоб не дати їм переміщатися флангами, що забезпечувало для гравця просту битву на початку гри. Якби ми дозволили їм обходити по флангах і ховатися в межах визначеної в метриках відстані руху, це б стимулювало штурмовиків рухатися більше (і в них було б складніше потрапити в порівнянні зі статичними цілями). До того ж вони змогли б зайняти більш вигідні позиції, з яких потенційно могли неприємно здивувати гравця раптовою атакою. Якщо вороги наближаються до гравця, передбачається, що їх точність і шкоди збільшуються (зрозуміло, це залежить від зброї).
Ворог, що заходить на гравця з флангу, більш складний, ніж залишається на одній позиції. Ще більш складний випадок - обстріл гравця поздовжнім вогнем. «Поздовжній вогонь» - це військовий термін, що означає заходження на противника з флангів, так що у нього не залишається укриттів збоку, через що він стає відкритим і вразливим. Якщо гравець піддається поздовжньому вогню, це змушує його покинути поточну позицію і знайти більш безпечну, з якої він зможе захищатися. Гравці часто рвуться до нової позиції без необхідного попереднього планування, тому така ситуація може викликати у них паніку. Зустрічний вогонь в поєднанні з відкритістю стають для гравця дуже складним випробуванням. Варто стимулювати гравця рухатися далі, щоб він не проводив весь бій на одній позиції, так як це може наскучити. Зміна ролей робить цей випадок більш легким для гравця: він має можливість заходу з флангів, звідки зможе обстрілювати ворога поздовжнім вогнем. Це простий випадок, що приносить гравцеві задоволення, якщо вдасться відрізати ворогів, які не мають можливості захищатися.
Поздовжній вогонь
Як маніпуляція укриттями може впливати на складність без штучної зміни поведінки AI
Одним з фундаментальних принципів при створенні укриттів є принцип «знання - сила». Якщо ви як гравець знаєте про переміщення і становище ворога, то у вас є перевага. Наприклад, низькі укриття дозволяють гравцеві відстежувати ворогів на рівні, тому що вони зазвичай переміщаються між острівцями укриттів в повний зріст.
В одному з початкових епізодів Gears of War вороги вбігають на арену з боку, де їм доводиться минути навмисно низьке укриття. Це дозволяє гравцеві відстежувати їх всіх, поки вони перетинають зону, щоб досягти своїх позицій укриття. Гравець знає, де опиняться всі вороги, і може стратегічно планувати атаку: «знання - сила».
Ховаючись за низькими укриттями, вороги зазвичай знаходяться на такій висоті, що гравець може бачити їхні макушки, коли вони пересуваються. Це означає, що коли вороги переміщаються до нової позиції, як і раніше перебуваючи за укриттям, гравець здатний побачити їх і відстежити їх переміщення. Таким чином можна уникнути ситуації, в якій гравець не знає положення ворогів і може бути обійдений з флангів або захоплений зненацька атакою. Коли гравець ховається за низьким укриттям, у вигляді від першої і від третьої особи він може спостерігати поверх укриття і відстежувати ворога. При цьому він знаходиться в безпечній і, якщо це враховується правилами гри, прихованої позиції.
У ворогів, які перебувають за низьким укриттям, складніше потрапити, тому що коли вони атакують зазвичай відкрита менша частина тіла. Коли вони визирають через укриття, ведуть вогонь наосліп або встають в повний зріст, щоб зробити більш точний постріл, вони відкривають тільки половину тіла. Нижня половина закрита укриттям. Плюс тут в тому, що такий бій для гравця не надто складний: йому видно голову противника, влучення в яку традиційно вважається вбивством з одного пострілу.
З іншого боку, високе укриття повністю приховує ворогів від гравця - він не бачить навіть їхніх голів. Це означає, що гравець повинен або переміститися в іншу точку, щоб зайти на них з більш хорошого кута, або дочекатися, поки противник висунеться через укриття, щоб вистрілити в гравця. Це, по суті, більш ризиково, тому що гравець повинен відкритися сам, щоб вистрілити у ворога, коли ворог стріляє в нього. Однак, на відміну від випадку з низьким укриттям, коли ворог висовується збоку від високого укриття, він відкривається у весь зріст. Він також може повністю вийти через укриття, відкрившись повністю. Так в нього простіше потрапити, ніж прицілюючись в голову. Баланс тут в тому, що хоча ворог прихований, коли він не стріляє, при атаці він повністю відкритий і являє собою більшу ціль. Високе укриття також корисне для типів ворогів, які не використовують укриття: вони можуть безпечно для себе переміщатися за ними і гравець може втратити їх.
Ці принципи також відносяться до гравця і його розташування. Наприклад, зубці замкової стіни забезпечують низьке укриття поруч з високим укриттям, створюючи набагато більш захищену схему укриття для гравця. Йому не доводиться ні виходити через високе укриття, повністю відкриваючись, ні користуватися тільки низьким укриттям, яке захищає не так сильно, особливо в шутерах від першої особи.
Ступінь відкритості ворога за укриттям залежить від висоти знаходження гравця. При бою зверху ворог більш відкритий, що дозволяє легше потрапити в нього. Крім того, ворогові, який стріляє вгору, відкрита менша частина тіла гравця. З цієї високої позиції гравець також може бачити і краще розуміти планування арени. Якщо гравець бачить більше, у нього є перевага в бою: ми повертаємося до принципу «знання - сила».
Як геометрія арени може впливати на розташування ворога, і що це означає для рівня складності
Один з фундаментальних принципів позиціонування ворогів - «в те, що не видно, не можна потрапити». Тому в іграх відсутність видимості ворогів означає, що гравець не може стріляти в них, а значить, і перемогти їх.
Наявність перешкод видимості на арені не тільки означає, що гравцеві буде потрібно більше зусиль для відстеження ворогів. Вони можуть повністю перешкоджати відстеженню. Ворогам буде легше підібратися ближче до гравця (і він представляє для них більш легку мішень), або переміститися в більш вигідні позиції, роблячись більш складними цілями для гравця (наприклад, обійшовши його з флангу).
Після мисливської засідки в Пітсбурзі в The Last of Us ворог біжить справа наліво вздовж входу в магазин. Ворог належить до класу ворогів ближнього бою і озброєний дерев'яною палицею. Він намагається підібратися до гравця, щоб вдарити. Високе укриття з лівого боку, що складається з автомобіля і колон, разом з перешкодами видимості вздовж вікон заважають гравцеві відстежувати противника, що дозволяє тому наблизитися до гравця і вдарити з флангу.
Коли гравець зайнятий відстрілом ворогів, яких він бачить через низьке укриття, навіть за наявності радара (яке в грі замінено на механіку «прислуховування», що розкриває позиції ворогів) перешкоди видимості не дозволяють йому стріляти по ворогах, щоб не дозволити їм підібратися ближче.
Якщо перешкоди видимості направляють ворогів у «пляшкове горлечко», то це простий випадок для визначення позиції. Уявіть один коридор, навіть якщо в ньому використовується більш складний тип укриттів: високе укриття поєднується з низьким укриттям, відкриваючи мінімальну площу тіла ворога. Відносно «переміщення мети» це буде все одно досить простий випадок. Так відбувається тому, що гравець бачить все безпосередньо перед собою і йому не потрібно сильно переміщати камеру, щоб перемогти ворогів.
При розробці Killzone Mercenary ми створювали арени, а не робили його «коридорним» шутером. Тому нам довелося додати вогневі проходи. Уявіть ситуацію з ворогами, розділеними таким чином, що вогневі проходи знаходяться на відстані більше ширини екрану. Розділяти ворогів може стіна в центрі (перешкода видимості) або наявність точок спауну за кожними з дверей (як у прикладі нижче). З такою ситуацією набагато складніше впоратися, тому що гравець повинен поділяти свою увагу і врівноважувати його між двома боями. Це дозволяє «невидимому» ворогові робити що завгодно, наприклад, безперешкодно стріляти в гравця, або непомітно для нього переміщатися вперед. Вороги можуть навіть повністю змінити позицію: повернувшись знову, гравець може побачити, що вони пропали. Втративши фокусування на ворозі, гравець може почати стріляти в порожній простір, в той час як вороги змінили позиції і безперешкодно стріляють в нього.
Крім того, вороги за межами екрану особливо складні, якщо знаходяться вище гравця. А якою буде найскладніша ситуація? Якщо ви хочете справжніх труднощів, спауньте ворогів за спиною гравця! Але використовуйте цей трюк помірно, інакше він може здаватися нечесним. Врахуйте - чим далі розставлені вогневі проходи, тим вища складність.
Висновок. Приклад з сірою ареною.
Підбиваючи підсумок, давайте розглянемо приклад налаштування простої арени бою із застосуванням розглянутих вище принципів.
Припустимо, за сюжетом гравець повинен полювати на ворожий загін, отримати перевагу над ним і зробити раптовий напад. У цьому випадку можна використовувати такі фактори:
- Обмежити можливості переміщення ворогів, щоб вони рухалися менше і в них було легше потрапити.
- Створити навколо області з ворогами нейтральну зону, що перешкоджає їх руху.
- Дозволити гравцеві вести поздовжній вогонь.
- Використовувати невеликі вогневі проходи, що дозволяють гравцеві відстежувати всіх ворогів і прицілюватися в них, не втрачаючи їх з уваги.
- Розташувати ворогів нижче гравця, щоб він міг стріляти вниз і вороги були більше відкриті.
- Розташувати перешкоди видимості на користь гравця, щоб він міг «зникати», ховаючись з поля зору ворогів.
- Створити лише одну точку спауну ззаду (в поле зору), де можна відстежувати ворогів, що потрапляють на арену.
У такому підході зручно те, що інвертування прийомів спрощення гри ускладнює її для гравця. Наприклад, складним випадком буде наступна ситуація:
- Наявність безлічі можливостей переміщення ворога. При цьому в нього складніше потрапити.
- Використання нейтральної зони навколо гравця, що перешкоджає його руху.
- Можливість ворожого поздовжнього вогню, що змушує гравця переміститися в нейтральну зону.
- Наявність декількох точок спауну ворогів на протилежних сторонах карти. Точки не знаходяться в межах ширини екрана.
- Кілька вогневих проходів, які змушують гравця балансувати точки фокусування.
- Перевага ворога перед гравцем у висоті.
- Перешкоди видимості розташовані таким чином, що заважають бачити ворога і дозволяють йому зникати з поля зору.