Создание боевой системы для JRPG — опыт авторов Grimshade

Трудности с интерфейсами и честная сложность.

Grimshade — ролевая игра от российской студии Talerock. В ней игроку необходимо управлять командой разношёрстных героев (среди которых даже есть огромный барсук с винтовкой), стремящихся спасти фэнтезийное королевство Ри'Фа.

Несмотря на то, что игру разрабатывали в России, её пошаговая боевая система напоминает скорее о японских RPG, чем о западных. В своей колонке для DTF авторы Grimshade рассказали о тонкостях создания боёвки.

Создание боевой системы для JRPG — опыт авторов Grimshade

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

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

Прототип экрана боя
Прототип экрана боя

Много раз мы задумывались о том, чтобы всё-таки объединить поля и разрешить подходить к врагам (ох, сколько проблем это могло бы решить!). Однако каждый раз мы приходили к выводу, что это «не канон». Довольно забавно, что на Disciples, как на референс, мы совершенно не смотрели, и уже много позже увидели, насколько наша игра оказалась близка к ней.

Следующим важным решением был отказ от вертикального роста. Для многих из нас главным мотиватором и причиной это сделать был Винсент Валентайн из Final Fantasy VII. Было невероятно обидно, что такой шикарный дизайнерски и механически персонаж попадал в команду игрока так поздно, поэтому, чтобы его прокачать, надо было потратить кучу времени. Наверняка, это не единственный пример и нормальная практика для JRPG, но вспомнился нам именно он.

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

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

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

Создание боевой системы для JRPG — опыт авторов Grimshade

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

Есть ещё вариант с автолевелингом. Он не даёт игровой сложности проседать, но полностью убивает ощущение прогрессии. Какой смысл заниматься прокачкой, если весь мир только и ждёт, когда ты «поднимешь» очередной уровень?

Так или иначе, мы отказались от вертикального роста. Ну, почти. На самом деле в игре у каждого персонажа есть по одному навыку, который можно развивать. Кроме того, для всех героев предусмотрены «статовые» предметы экипировки, повышающие те или иные характеристики.

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

Создание боевой системы для JRPG — опыт авторов Grimshade

Выходит, что опыт от игры мы переносим с персонажей на самого игрока. Чем лучше ты понимаешь механики, поведение противников, умеешь рассчитывать ходы — тем лучше у тебя получается сражаться. И тем больше удовольствия ты получаешь от игры. Но весь опыт перечёркивается тем, что тебе тупо не повезло и твой «дамагер» в ключевой момент, имея шанс атаки 95%, всё равно промахнулся. Так бывает. Вероятность, бессердечная ты сука.

В тактических играх такие вещи, конечно, раздражают, и обычно после этого идёт загрузка. А если вся твоя тактика сводится к тому, что ты перезагружаешься до тех пор, пока тебе не повезёт, то возникает вопрос: это точно тактика? Так мы отказались от шансовых механик. Ну, почти.

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

Создание боевой системы для JRPG — опыт авторов Grimshade

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

Значит, нужна какая-то плата. Мана? Усталость? Да, но игрок всё равно большинство боёв будет начинать со своей «Большой Берты», а уже выдохшись (или для добивания слабеньких противников) доставать Дерринджер. Значит, кроме маны или усталости, нужно что-то ещё. Так появилась наша шкала времени.

И если мысль о том, что в игре есть некоторая длительность навыков довольно проста и не нова (например, была в «Героях 5»), то дальше начинаются нюансы. Все герои «живут» по некоторой шкале времени, и каждый раз, когда совершают какое-то действие, оказываются на новой точке на этой шкале. Но где «живут» статусы? Например, «отравление». По-хорошему, у статусов должно быть своё время действия, например, 20 условных единиц времени. Но когда они срабатывают?

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

Создание боевой системы для JRPG — опыт авторов Grimshade

Должны ли мы показать игроку, что и когда произойдёт: когда кто-то получит урон, и когда статус закончит действие; доживёт ли вон тот парень до своего хода? Конечно, ведь невозможно построить тактику и спланировать действия, если ты не понимаешь, что будет дальше. И тут начинается интерфейсный ад.

Куча маркеров на шкале времени, которые показывают, когда сработает тот или иной статус (кто-то подожжён и отравлен с небольшой разницей во времени — получай задвоенные маркеры). Бесконечная череда летающих чисел.

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

Что делать? Перевешивать срабатывания на начало хода персонажа? Хорошо, но тогда медленный герой может использовать медленный навык и вообще не заметить, что он был подожжён. А быстрый персонаж сгорит от своей поспешности. Буквально. Значит, длительность нужно перевешивать с единиц времени на количество срабатываний. Тогда и медленный, и быстрый герои получат одинаковое количество урона. И бафы усилят им одинаковое количество атак. На том и порешили.

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

Создание боевой системы для JRPG — опыт авторов Grimshade

Второй раз мы подумали о настольных играх, когда вводили «Уклонение». Отказавшись от шансовых механик, мы, по сути, лишили персонажей возможности избегать урона, и тогда бой превращался бы в простое сравнение: мой DPS против твоего здоровья. Не очень похоже на тактику.

Хорошо, значит, нужно добавить возможность защищаться со 100% вероятностью. Но не всегда же? Значит, нужно считать количество блоков и уворотов (изначально мы их прямо разделяли: есть атаки, которые невозможно заблокировать, но можно уклониться, и наоборот; от этого отказались — лишний параметр, лишний раз нужно следить за тем, что за атаки, лишние анимации).

Выдавать их один раз за бой — не лучшее решение. Всю первую часть боя никто никого пробить не может, а дальше начинается кровь, кишки и сравнение DPS vs. HP. Так появились раунды — отрезки времени, в которые танки могут снова получить свою защиту. И, конечно, появились навыки, которые «ходят мимо» этих жетонов уклонения. Зачем вообще придумывать правила, если не нарушаешь их хоть иногда?

Создание боевой системы для JRPG — опыт авторов Grimshade

Что же насчёт атак? С ближними всё в целом просто — персонажу нужно быть в первом ряду, и он сможет бить тех противников, которые стоят рядом. Как быть с выстрелами? Ну, вроде как игрок может применять их откуда угодно и по любому противнику, которого не загораживает никакое препятствие (или другой противник).

Честные рейкасты? Тогда игроку пришлось бы запоминать довольно много паттернов: из какой клетки куда можно прострелить при какой диспозиции (ведь нужно иметь возможность и защищаться от этого, прикрывать слабые задние ряды танками).

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

Создание боевой системы для JRPG — опыт авторов Grimshade

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

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

В итоге, взбодрили значимость первого ряда тем, что прикрытие дают не все, а только особые защитники. И только когда стоят в первом ряду. А заодно сделали так, что ближние атаки проносят урон в «Напряжение» (это та самая мана или усталость) всегда, в отличие от стрелковых. Появилось больше смысла стоять в первом ряду, но, честно говоря, этой частью мы жутко недовольны.

Во второй части игры мы планируем делать все анимации ближних атак с «накоплением». Если никого нет вблизи, герой прыгает, подскакивает или бежит к противнику вдали и бьёт, после чего отскакивает. Мы бы и в этой части это сделали (программисты даже всё создали для этого), но мы тупо не успевали переделать анимации и пересобрать ИИ, чтобы он мог этим вменяемо пользоваться. Вообще, конечно, нехватка времени — самый главный разрушитель веселья.

С ИИ тоже было немало споров. Самый жаркий о том, что искусственный интеллект, который играет максимально эффективно, не доставляет радости, а приносит одни только страдания. Выходит довольно грустная история — мы получаем удовольствие, когда нам искусно поддаются.

Но просто поддавки нас не устроят — обязательно нужно, чтобы противник изображал бурную деятельность и напряжение, создавал опасные моменты (на самом деле, нет, они должны только выглядеть опасными), но в конце обязательно проигрывал. Или игра должна бросать мне вызов? Я и так сражаюсь с ненастоящими противниками, может быть, они хотя бы попробуют сопротивляться мне в полную силу?

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

Создание боевой системы для JRPG — опыт авторов Grimshade

Весь ИИ мы настраивали под максимальную мерзопакостность. У вас кто-то остался без защиты? Напрасно вы так! Зазевались и у кого-то слишком мало здоровья? Можете с ним попрощаться. Наш ИИ очень пессимистичен. Он не верит в свою победу. Он знает, что вы будете загружаться, пока не победите его, и он обречен. Он будет всеми силами стараться «подгадить» вам: искать самого слабого, фокусировать урон, добивать раненых.

Но есть и плюс. Подобное поведение ИИ предсказуемо. А значит, у игрока есть способ изучать противника, предсказывать его действия и эффективно защищаться. В итоге, один и тот же бой можно проиграть в хламину или выиграть, не получив существенного урона. Разве не это отличительная черта тактической игры?

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

Создание боевой системы для JRPG — опыт авторов Grimshade

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

Это, кстати, в итоге создало проблему с финальным боссом. Его тоже балансировали относительно сетапа, когда игрок забил на все сайд-квесты, пробежал только основной и к боссу вышел с очень малым набором скиллов и предметов.

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

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

Если честно, нам стало очень страшно. Ведь нам нужно было достаточно дотошно рассказывать игроку о том, что и как у нас происходит. И стены текста в обучении — это совсем не то, что мы хотим видеть, когда нашли вечерок, чтобы посмотреть на новую игру. Причём, это первые часы, которые так важны!

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

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

5151
31 комментарий

Создание боевой системы для JRPG игра от российской студииОкей.

9
Ответить

Не, быть таким душным не окей.

13
Ответить

Справедливости ради, тут википедия подсказывает:

"Определение игр как «японских» не ограничивается страной выпуска игры: так, некоторые выпущенные в США и Европе компьютерные ролевые игры описывались как игры «в духе JRPG»[5] — например, Anachronox и Septerra Core, а японскими разработчиками выпускались и игры «западного образца», такие, как Dark Souls и Dragon's Dogma".

5
Ответить

Из разряда "DaRK SoULS iS aCtUaLLy a JrPG yOu GuYs"

1
Ответить

Худшее что есть в пошаговых играх это сидеть и ждать когда все мобы сделают свой ход. Помню в Лост Одесси это было прям до боли. На тебя надает свора жуков и ты сидишь и уныло ждешь пока каждый рыпнется. Не понимаю почему по-умолчанию в эти вещи не вставлена опция 2-4х скорости. Так вот по теме, почти все жрпг что я видел - пошаговые. Отсюда моя боль.

3
Ответить

Ох, помню как проходили бои в Дене (Fallout 2). Ждешь пока каждый наркоман, приняв дозу винта, убегает еле волоча ноги по 15 секунд за ход.

11
Ответить

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

5
Ответить