Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Настройка боя в RPG Maker MV

Настройка боя в RPG Maker MV 6 года 1 мес. назад #107039

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • За 2 место на конкурсе маппингаПроект месяца 3 местоПаладинУчительПоддержка ФондаОраторПрограммист RubyРазработчикДаритель Стимкея2 место
Вам нравятся правила какой-то конкретной боевой системы? Вы пацифистка и не приемлете битв? Не спешите отбрасывать стандартную боёвку RPG Maker MV! Она достаточно гибкая, и её можно настроить по-разному.

Боевую систему RPG Maker MV можно использовать для симуляции любых ситуаций, где две стороны поочерёдно используют умения, снижая свои и чужие очки с учётом характеристик.

Давайте рассмотрим это на примере! Урок состоит из двух частей: практической, в котором я приведу пример настройки боевой системы для того, чтобы сделать из неё что-то другое, и теоретической, в которой я подробнее объясню, как пишутся формулы урона для боевых умений.


1. Пример настройки: выпытываем чужие тайны

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

Помните: всё здесь описанное — только пример. Если вы придумали своё применение боевой системы — обязательно используйте его! Я лишь хочу показать, что боевая система не обязана быть для битв.

1.1. Заменяем характеристики

Итак, очки здоровья мы заменим «тайнами», сокращённо Т. Очки магии мы заменим «компроматом», сокращённо К. Очки техники мы использовать не будем.

Кроме того, в RPG Maker MV у всех персонажей есть 8 характеристик (параметров), каждая из которых определяется своим кодом. Характеристики — это числа, определяющие, насколько эффективны наши действия.

У некоторых из них есть предопределённый смысл, о котором надо помнить:
  • Макс. HP (mhp); определяет максимальное число очков первого типа (в стандартных настройках: HP, единицы жизни), после потери которых персонаж выбывает из битвы,
  • Макс. MP (mmp); определяет максимальное число очков первого типа (в стандартных настройках: MP, единицы магии),
  • Ловкость (agi); определяет, у кого больше шансов первым выполнить действие,
  • Удача (luk); немного сдвигает вероятность снизить чужие характеристики.

У четырёх из них нет никакого «встроенного» смысла и их можно менять, как угодно. Мы сами определяем, что они значат. Вот они:
  • Атака (atk),
  • Защита (def),
  • Маг. атака (mat),
  • М. защита (mdf).

Итак, придумаем соответствие стандартным характеристикам в «шпионском» антураже:
  • Макс. HP (mhp) — Макс. Т,
  • Макс. MP (mmp) — Макс. К,
  • Атака (atk) — Харизма,
  • Защита (def) — Концентрация,
  • Маг. атака (mat) — Физ. сила,
  • М. защита (mdf) — Уверенность,
  • Ловкость (agi) — Скорость,
  • Удача (luk) — Удача.

Теперь нужно изменить их в игре! Вот как это делается:

1. Откройте или создайте проект и откройте в нём окно базы данных. Для этого можно нажать F9, или на кнопку с шестерёнками на панели инструментов, или выбрать пункт меню Инструменты → База данных...

2. Перейдите на вкладку «Термины».

3. Замените соответствующие пункты в разделе «Основные характеристики»:
  • в поле «HP» введите «Тайны»,
  • в поле «MP» — «Компр.»,
  • в поле «HP (сокр.)» — «Т»,
  • в поле «MP (сокр.)» — «К».

4. Замените пункты в разделе «Характеристики»:
  • в поле «Атака» введите «Харизма»,
  • в поле «Защита» — «Концентрация»,
  • в поле «Маг. атака» — «Физ. сила»,
  • в поле «Маг. защита» — «Уверенность»,
  • в поле «Ловкость» — «Скорость».

Должно получиться вот так:



Мы не будем использовать очки TP, поэтому давайте отключим их: перейдите на вкладку «Система» и уберите пункт «Показывать TP в битве» в разделе «Опции».
Скриншот, где это настраивается [ Нажмите, чтобы развернуть ]



1.2. Задаём типы умений

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

Чтобы изменить типы умений, в базе данных перейдите на вкладку «Типы» и щёлкните в столбце «Типы умений» щёлкните по первому типа умений (по умолчанию это «Магия»). Под списком типов будет поле изменения типа. Щёлкните по нему и введите новое название «Умения».

Затем, чтобы убрать остальные типы умений, щёлкните по кнопке «Изменить количество» под списком «Типы умений». Введите 1, нажмите OK, и остальные типы умений удалятся. (При стандартных настройках удалится тип умений «Особый».)

Скриншот, где это настраивается [ Нажмите, чтобы развернуть ]


1.3. Создаём базовое атакующее умение

Базовое боевое умение — «Атака» — есть у всех игровых персонажей. Допустим, у нас это будет «Разговор». Атака — это такой вариант, который доступен всегда, самый простой. Чтобы люди им не злоупотребляли, давайте предположим, что обычный разговор без каких-то ухищрений малополезен: он отнимает ровно одну тайну.

Чтобы настроить умение «Атака», перейдите на вкладку «Умения» и в списке слева щёлкните по умению с номером 0001. Умение №1 особое — оно всегда вызывается при действии «Атака». Итак, настроим его таким образом:
  • в поле «Название» введите «Разговор»,
  • щёлкните по картинке возле поля «Иконка» и выберите подходящий значок (я ничего подходящего не нашёл, так что выбрал пустой),
  • в поле «Сообщение» введите « пытается в разговоре что-то выведать!» — обратите внимание, что сообщение должно начинаться с пробела; вторую строку оставьте пустой,
  • в разделе «Урон» введите тип «Повреждение HP» (мы заменили HP на тайны — то есть навык уменьшает количество нескрытых тайн),
  • там же введите в поле «Формула» число «1»; да, вот так просто: этот навык всегда будет отнимать одну тайну;
  • в поле «Вариантность» введите «0%» — результат не должен меняться;
  • в поле «Критический» введите «нет» — для этого навыка не нужны критические удары.

Большинство стандартных настроек нам подойдут:
  • В поле «Тип навыка» оставьте «Нет», так как это умение будет вызываться особенным образом (через пункт меню «Атака»), а не из меню умений «Умения».
  • В поле «Область действия» оставьте «Противник»,
  • В поле «Доступность» оставьте «Экран битвы» (чтобы умение было недоступно вне боя),
  • В поле «Расход MP» и «Расход TP» оставьте нули,
  • В разделе «Вызов» оставьте скорость 0 (т.е. это значит, что на подготовку к действию не тратится время), успех 100%, 0 повторений, тип удара выберите любой (у нас не будет разделения на магические и физические атаки), анимацию выберите любую,
  • В особенностях будет наложение состояние «Обычная атака» — это техническое состояние, которое нужно для применения особенностей из раздела «Атака» (таких как состояние, накладываемое при атаке). Если вы не используете особенности из раздела «Атака», оно ни на что не повлияет.
  • В разделе «Урон» будет элемент «Обычное оружие». Это значит, что элемент берётся из особенностей, из раздела «Атака».
  • Поля «Требуемое оружие» оставьте пустыми,
  • В примечании можно написать что угодно.

В результате навык должен выглядеть вот так:



Кроме того, нужно поменять пункт меню в битве. Это делается на вкладке «Термины», в разделе «Команды» (слева снизу). Перейдите туда и замените пункт «Атака» на «Разговор»:




1.4. Создаём базовое защитное умение

Защитное умение используется, когда человек выбирает вариант «Защита».

По умолчанию оно добавляет состояние «Защита» на 1 ход. Состояние «Защита» можно настроить на вкладке «Состояния», по умолчанию оно добавляет спец-поведение «Защита». Это спец-поведение делит получаемый урон вдвое (и ещё на спец-параметр «Эффективность защиты», но по умолчанию он равен 100%).

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

Только давайте переименуем его в «Увиливание». Переименовывать его, как и Атаку, надо на вкладке «Термины», в разделе «Команды»:




1.5. Создаём дополнительные умения

Давайте создадим каких-нибудь более интересных умений! Я покажу пример, а дальше вы можете использовать те же принципы.

Давайте создадим умение «Лесть». На вкладке «Умения» в базе данных перейдите на третье (или любое ненужное) умение. (Если у вас нет ненужных умений, щёлкните по кнопке «Изменить максимум...» под списком умений и увеличьте количество доступных умений.)

На то, сколько тайн можно выведать разговором, будет влиять харизма выведывающих (atk) и концентрация тех, у кого выведывают (def). Поэтому давайте напишем такую формулу: a.atk * 2 - b.def. Позже мы рассмотрим, как настраивать формулы урона.

Также выберите тип навыка (наш единственный, «Умения»), область действия «Противник» (чтобы умение применялось на противников) и доступность «Экран битвы».

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


1.6. Заменяем сообщения

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

Чтобы изменить сообщение, дважды щёлкните по нему и измените текст.

Во многих сообщениях есть параметры наподобие %1, %2, %3. Они заменяются на какие-то значения в игре, поэтому их лучше сохранить.


1.7. Настраиваем героинь и героев

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

А. Откройте вкладку «Персонажи» или «Классы», выберите нужного персонажа или нужный класс.
Б. Справа в поле «Особенности» щёлкните по пустому месту в конце списка. Откроется окно добавления особенности.
В. В окне добавления особенности перейдите на вкладку «Навык».
Г. Выберите пункт «Добавить тип».
Д. Выберите тип «Умения» и нажмите ОК, чтобы добавить особенность.

После этого выбранная героиня или все персонажи с выбранным классом сможет использовать умения с нашим типом (а он у нас единственный, «Умения»).

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

Добавление умения через особенности делается так же, как и добавление типа умений. Следуйте инструкции сверху, но в пункте Г выберите вариант «Добавить навык», а в пункте Д — нужный навык.

Чтобы настроить изучение навыков на определённом уровне, перейдите на вкладку «Классы» в базе данных и щёлкните по пустому месту в конце списка «Изучение умений».

Кроме того, нужно задать героям и героиням их характеристики (параметры). Они определяются классом, то есть нужно настроить параметры в классе (вкладка «Классы») и выбрать для героинь и героев нужный класс (на вкладке «Герои»). Параметры задаются кривыми параметров: кривые определяют число на разных уровнях. Обычно при росте уровня растёт и параметр (хотя никто не мешает сделать наоборот!) Вот как выглядят кривые:



Чтобы изменить их, дважды щёлкните по нужной кривой, и выберите пункт «Создать кривую». Введите значение на первом и последнем (99) уровне и введите способ изменения. Помните соответствия параметров, которые мы придумали выше — отталкивайтесь от них.

Кроме того, когда вы редактируете классы, имеет смысл изменить название класса.

1.8. Настраиваем противников

Противники настраиваются на вкладке «Противники». В отличие от героев, у них нет уровня. Поэтому у них все характеристики статичны: у них фиксированный набор навыков и фиксированные параметры.

1.9. Осторожно, смысл!

Вы можете адаптировать боевую систему RPG Maker MV для самых разных вещей:
  • разного рода соревнований (спортивных, кулинарных и т.п.),
  • обсуждение законопроектов в парламенте,
  • ответов на уроках, как в игре Klavdia, и не только.

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

Например, можно сделать игру, где боевая система будет представлять споры. Однако что она скажет игрокам? «Споры — это битва, где нужно победить, где нужно идти до конца». Но насколько это полезная идея? Некоторые люди в спорах пытаются помирить участников и снизить градус агрессии. Это, кажется, гораздо лучший подход. Однако боевая система RPG Maker MV его не покажет. Т.е. если мы используем боевую систему MV для демонстрации споров, мы можем передать опасные идеи.

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



2. Теория: как писать формулы урона

Формулы урона — одна из самых сложных вещей в настройке умений. Ведь, по сути, это кусочек программирования: формулы в RPG Maker MV пишутся на языке JavaScript. К счастью, не нужно знать весь JavaScript, чтобы написать хорошую формулу.

Хотя формулы пишутся в разделе «урон», они не всегда обозначают урон: если умение восстанавливает здоровье, то формула определяет, сколько здоровья будет восстановлено.

2.1. Правила написания формул: операторы

Когда мы определяем формулу, мы задаём левую часть выражения «урон равен».

Например, если написать «1», то урон будет равен 1. Константа (просто число) — это самый простой вид формул. Константы могут быть дробными, тогда они пишутся через точку (не запятую). Например, три десятых — это 0.3 (правда, мейкер не использует дробные единицы здоровья).

[ВНИМАНИЕ, ЗАСАДА! Перед числами нельзя писать 0! 010 — это восемь, а не десять. Причины этой засады исторические, лучше просто не пишите нулей перед числами.]

Кроме того, в формулах можно использовать различные заданные заранее переменные. Например, a.atk — это атака того или той, кто применяет умение. b.def – это защита той или того, на кого умение направлено.

Обычно все свойства применяющего умения начинаются с a., а все свойства того, на кого направлено умение, начинаются с b. Как правило, у них одни и те же свойства (если есть a.def — защита применяющего умение, то есть и b.def — защита того, на кого применяется умение). Я буду называть их атакующей (a) и защищающийся стороне (b), но это не всегда верно: например, для умения «Лечение» b соответствует пациенту, а не защищающемуся.

Если написать в формуле «a.atk», то урон будет равен силе атаке атакующего.

Константы и переменные можно сочетать с помощью операторов:
  • + сложение,
  • - вычитание,
  • * умножение (в отличие от математики, этот знак нельзя пропускать),
  • / деление,
  • % остаток от деления,

Сначала выполняются умножения, деления и остатки; потом — сложения и вычитания. Например, формула «10+2*a.atk» значит «сумма 10 и удвоенной атаки нападающего».

Как и в математике, порядок выполнения действий можно поменять скобками.

2.2. Основные характеристики

После a. и b. можно использовать код одной из основных характеристик:
  • a.mhp, b.mhp — макс. HP (a.mhp — атакующего, b.mhp — защищающегося),
  • a.mmp, b.mmp — макс. MP,
  • a.atk, b.atk — атака,
  • a.def, b.def — защита,
  • a.luk, b.luk — магическая атака,
  • a.mdf, b.mdf — магическая защита,
  • a.agi, b.agi – ловкость,
  • a.luk, b.luk — удача.
  • a.hp, b.hp — текущие очки жизни (HP),
  • a.mp, b.mp — текущие очки магии (MP),
  • a.tp, b.tp — текущие очки техники (TP),
  • a.level, b.level — текущий уровень.

Вот несколько примеров:
  • a.atk - b.def (урон будет равен атаке нападающего минус защите защищающегося),
  • b.mhp / 2 (урон будет равен половине максимального здоровья противника — то есть две атаки подряд его гарантированно убьют),
  • a.level * 50 (урон будет равен 50 на первом уровне, 100 на втором, 150 на третьем и т.д.),
  • (a.level % 2) * 100 + 50 (урон будет равен 150 на нечётных уровнях, когда остаток от деления уровня на 2 будет равен 1; и будет равен 50 на чётных уровнях).

2.3. Доп-параметры и спец-параметры

Доп-параметры, настраиваемые через особенности, имеют своё назначение. Но и их можно использовать в формулах урона. Учтите, что они будут в дробях, а не в процентах. То есть если вы задали шанс попадания равным 95%, то в формуле он будет равен 0.95. Это позволяет легко умножать доп-параметры на другие величины. Всего есть такие параметры:
  • a.hit, b.hit — шанс попадания,
  • a.eva, b.eva — шанс уклонения,
  • a.cri, b.cri — шанс критического попадания,
  • a.cev, b.cev — шанс критического уклонения,
  • a.mev, b.mev — шанс магического уклонения,
  • a.mrf, b.mrf — магическое отражение,
  • a.cnt, b.cnt — контратака,
  • a.hrg, b.hrg — регенерация HP,
  • a.mrg, b.mrg — регенерация MP,
  • a.trg, b.trg — регенерация TP.

Так же можно использовать в формулах и спец-параметры (они тоже будут в дробях):
  • a.tgr, b.tgr — шанс стать целью,
  • a.grd, b.grd — эффективность защиты,
  • a.rec, b.rec — эффект восстановления,
  • a.pha, b.pha — фармакология,
  • a.mcr, b.mcr — стоимость MP (это значение — коэффициент, на который умножается стоимость заклинаний у персонажа, а не сама стоимость),
  • a.tcr, b.tcr — скорость зарядки TP,
  • a.pdr, b.pdr — получение физического урона,
  • a.mdr, b.mdr — получение магического урона,
  • a.fdr, b.fdr — повреждение от поверхности,
  • a.exr, b.exr — опыт (это значение — коэффициент, на которой умножается опыт в битвах, а не само число опыта).

Например, a.mat * a.pha нанесёт урон, равный магической атаке нападающего, умноженной на коэффициент знания фармакологии (это может иметь смысл, например, для заклинания «Распылить яд»).

2.4. Переменные

В формулах урона можно учитывать значение переменной. Для этого можно написать $gameVariables.value(1), где вместо 1 поставить номер нужной переменной.

Например, формула урона $gameVariables.value(22) нанесёт такой урон, какой записан в переменной 22.

А ещё можно учитывать, сколько золота у партии, используя в формуле $gameParty.gold()


2.5. Проверка условий

В формулах можно использовать условия. Для этого мы пишем так:

условие ? если_да : если_нет

При этом:
  • вместо условие надо написать заданное по специальным правилам выражение (об этом ниже),
  • вместо если_да надо написать формулу, которая используется, если условие выполняется,
  • вместо если_нет надо написать формулу, которая используется, если условие не выполняется.

Условия можно сделать из переменных и констант с помощью таких операторов:
  • == проверка на равенство (a.mat == b.mdf — если маг. атака нападающего и маг. защита защищающегося равны),
  • != проверка на неравенство,
  • > больше (b.mdf > a.mat — если магическая защита защищающегося больше, чем маг. атака нападающего),
  • < меньше,
  • >= больше или равно,
  • <= меньше или равно.

[Осторожно, ЗАСАДА! Обратите внимание, что равенство проверяется двумя знаками ==. Одинарный знак равно значит вообще не то, и его не надо использовать в условиях.]

Кроме того, в условиях можно проверить значение переключателя: такое условие выглядит $gameSwitches.value(2) (вместо 2 надо поставить номер переключателя; условие будет верно, если переключатель включён, и неверно, если переключатель выключен).

Вот несколько примеров:
  • a.mat > b.mdf ? 100 : 50 (навык нанесёт 100 урона, если магическая атака нападающего больше маг. защиты защищающегося, или 50, если меньше или равна),
  • $gameSwitches.value(432) ? 10 : 110 — навык нанесёт 10 урона, если переключатель 432 выключен, или 110, если включён.
  • 10 + ($gameSwitches.value(432) ? 0 : 100) — то же самое, что прошлое, но записано по-другому.

2.6. Составные условия

Условия можно сочетать с помощью таких операторов:
  • && — и (составное условие будет верно, если оба условия верны),
  • || — или (составное условие будет верно, если любое из условий верно)

Например: $gameSwitches.value(432) && $gameSwitches.value(433) ? 10 : 110 — навык нанесёт 110 урона, если два переключателя, 432 и 433, включены; или 10, если любой из них выключен.


2.7. Математические функции

В формулах урона можно использовать математические функции. Например, Math.log($gameVariables(123)) вернёт натуральный логарифм числа, которое хранится в переменной №123.

Особенно интересны функции округления:
  • Math.round(x) округляет x до ближайшего целого числа по привычным математическим правилам,
  • Math.floor(x) округляет x вниз, отбрасывая дробную часть,
  • Math.ceil(x) округляет x вверх (если дробная часть есть, число округляется вверх).

Полный список функций можно посмотреть на сайте MDN.


2.8. Побочные эффекты

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

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

Побочные эффекты задаются перед формулой и отделяются точкой с запятой:

побочный; побочный; формула

Например, формула «a.addState(1); 1000» наносит 1000 урона и при этом отправляет в нокаут того, кто использует умение (добавляет атакующему состояние №1, нокаут).

Возможных побочных эффектов очень много, но вот некоторые:
  • a.addState(1), b.addState(1) — добавляет состояние №1,
  • a.removeState(1), b.removeState(1) — убирает состояние №1,
  • a.gainHp(10), b.gainHp(10) — добавляет 10 очков жизни (HP),
  • a.gainHp(-10), b.gainHp(-10) — отнимает 10 очков жизни (HP),
  • a.gainMp(10), b.gainMp(10) — добавляет 10 очков магии (MP),
  • a.gainMp(-10), b.gainMp(-10) — отнимает 10 очков магии (MP),
  • a.gainTp(10), b.gainTp(10) — добавляет 10 очков техники (TP),
  • a.gainTp(-10), b.gainTp(-10) — отнимает 10 очков техники (TP),
  • $gameParty.gainGold(10); — добавляет партии 10 золотых,
  • $gameParty.gainGold(-10); — отнимает партии 10 золотых.


Резюме

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

Если что-то непонятно, задавайте вопросы, я с радостью отвечу.

Если описанного здесь вам недостаточно для того, что вы задумали, не стесняйтесь спрашивать! Вы можете создать тему со своим вопросом в разделе «Помощь».
Последнее редактирование: 6 года 1 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, Джекил, idavollr, NettySvit, yuryol, tvorimvsevmeste, Cabbit, Mur, VarVarKa, Noon и еще 15 пользователей
Время создания страницы: 0.255 секунд