Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Классический арканоид для любителей ретро-игр. Защитите космический корабль с Печенькой (и не только) на борту, проходя уровни в арканоиде.

Арканоид Пикабу

Арканоид, Аркады, Веселая

Играть

Топ прошлой недели

  • CharlotteLink CharlotteLink 1 пост
  • Syslikagronom Syslikagronom 7 постов
  • BydniKydrashki BydniKydrashki 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

RPG Maker

С этим тегом используют

Gamedev RPG Инди игра Игры Компьютерные игры Инди JRPG Все
150 постов сначала свежее
37
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы⁠⁠

Как бы удивительно ни прозвучало, но мы с вами рассмотрели основные команды ивентов! Вы скажете, мол, Луар, но ведь там этих команд целый вагон – три страницы как-никак, неужели остальные бесполезны? Они, безусловно, полезны и регулярно используются, но функции большинства из оставшихся интуитивно понятны из названия. Да, есть еще несколько команд, требующих незначительных разъяснений, но мы коснемся этого в самом конце курса в одном общем уроке, а пока отвлечемся от кода и обратим свое внимание на Базу Данных.


Для тех, кто предпочитает отвлекаться глазами и ушами, запилено видео:

Мы уже рассматривали вкладку Тайлсеты, а теперь давайте пройдемся по остальным:


Персонажи

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

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


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


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


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


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


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


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


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


Здесь же можно выбрать класс персонажа. Мукер имеет систему классов из коробки, которую можно гибко изменять и настраивать под себя. Мы рассмотрим их позже.


Правее от класса задается минимальный и максимальный уровень, который доступен для вкачивания. Без плагинов максимально возможный уровень – 99. Плагины на увеличение этого числа есть.


Ниже мы видим поле «Описание» - сюда можно вбить краткую биографию персонажа. Или анекдот. Главное примерно уложиться в размер этого маленького окошка – больше просто не влезет в экран меню.

Или ничего не вбивать – функциональность этого поля такая же, как у «прозвища».

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост
RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

Ниже, в поле «Изображение», можно выбрать лицо персонажа, которое будет отображаться в меню, его чарсет и набор анимаций для битв (с ними позже разберемся)

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

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

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

В правом верхнем углу находится поле «Особенности» с большим количеством различных характеристик, которые идентичны таковым в разделе БД «Классы», поэтому мы их рассмотрим позже.


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


Классы

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

Классы – в мукере, набор характеристик, скиллов, параметров, а так же кривая прогрессии прокачки и кривые прокачки параметров. Применяется только к персонажам.


Список точно такой же, как и в Персонажах, расширяется до 1000 штук, название класса можно ввести или изменить в поле «Основные настройки».


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


Окно «Кривой опыта» имеет для удобства две вкладки:


До следующего уровня – количество опыта, необходимое для достижения следующего уровня


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

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост
RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

Окно имеет четыре ползунка, с помощью которых задается форма кривой опыта. Сама кривая показана полупрозрачным серым графиком на фоне числовых значений.


Ползунки задают данные для расчета кривой прогрессии опыта, которая вычисляется по сложной формуле:

[Базовое * [(уровень -1) ^ (0,9 + (ускорение1 / 250))] * уровень * (уровень + 1)] / [6 + [([уровень ^ 2] / 50) / ускорение2] + [ (уровень -1) * доп.значение]

Впрочем, обычному земному мукеристу эта формула, что козе логарифмы. Так же непонятно, неинтересно и неприменимо.Достаточно просто знать, что:


Базовое значение – собственно, задает базовое значение для вычислений. Может принимать значения от 10 до 50


Дополнительное значение – прибавляется к базовому и нужно для более тонкой настройки


Ускорение 1 – влияет на возрастание количества опыта, требуемого для получения следующего уровня


Ускорение 2 – делает то же самое, но больше влияет на поздние уровни.


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


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


Здесь нужно пояснить - несмотря на то, что данные параметры представлены, как максимальное здоровье, мана, атака, защита и т.д., нужно осознавать и помнить, что это все просто числовые значения. Никто не говорит, что параметр «Атака» обязан называться именно так (название можно изменить) и отвечать за атаку. Это просто один из параметров, значение которого можно использовать в формуле для расчета результата действия в бою. А так же извлекать его в переменную и уже с ней что-то делать.


Да, по дефолту, параметр Макс.НР отвечает за максимально возможное количество очков здоровья на каждом из уровней и вы можете использовать этот параметр именно так. Но при этом, Макс.НР – просто число в характеристиках и первая полоска персонажа. Что показывает эта полоска – решать вам. Изначально ХПшки, но это может быть не РПГ, верно? Может, вы делаете симулятор свиданий и никакие ХПшки в нем нафиг не нужны? Тогда это будет, например, привлекательность. И в формулах вы будете это значение использовать не на уменьшение, а не увеличение. Ну, это чисто как пример.


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


Как бы то ни было, но кривые прокачки параметров есть и при желании их можно настроить под себя. Окно настроек тут попроще, никаких сложных формул – вам предлагается просто вручную задать значение параметра для каждого уровня, либо выбрать из шаблонов A, B, C, D, E. Можно так же задать начальное и конечное значение, а потом ползунком регулировать темп роста параметра (кнопка «Создать кривую»).

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

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


Все настройки выражаются в выборе скилла из базы и уровня на котором он появится у персонажа.

RPG Maker MZ: урок №13. База Данных: Персонажи, Классы RPG Maker, Gamedev, Курс, Урок, Видео, Длиннопост

Ну и, наконец, «Особенности».


Здесь нам дается на выбор огромное количество различных настроек и параметров, которые мы может придать выбранному классу. Рассматривать их подробно – не хватит никакого урока, да и вы всегда можете прочитать краткое описание в справке, которая вызывается по F1. От себя считаю необходимым отметить следующие:


Шанс стать целью – определяет вероятность того, что враг будет выбирать представителя данного класса в качестве цели. Не путать с шансом на то, что по нему попадут.


Шанс попадания – меткость класса


Добавить тип навыка – добавляет пункт выбора навыка определенного типа в бою


Экипировка – разрешает/запрещает/блокирует слот определенного типа оружия/брони


Почему я указал именно эти 4 особенности? Потому, что все особенности по умолчанию отключены, либо имеют нулевое значение, если не указано иное! И таким образом, не указав «Шанс стать целью» мы получим ситуацию, в которой мобы НИКОГДА не атакуют представителя класса. Точно так же, как мы получаем абсолютно косой класс, забыв указать значение на «Шанс попадания». Без «Добавить тип навыка» мы лишимся всего, кроме стандартной простой атаки, а без разрешенной экипировки представитель класса не сможет ничего на себя надеть.


Все остальные Особенности – штука кастомная, кому-то нужная, а кому-то нет, там нужно смотреть по ситуации. Например, Шанс уклонения влияет на вероятность того, что противник промажет. Необязательная штука, но хотя бы небольшую вероятность иметь было бы неплохо, согласитесь? Равно, как и шанс крита.


Следует помнить, что все параметры класса не являются единственной составляющей в формулах боевки. Кроме того, следует так же помнить, что окно «Особенности» присутствует в разделе Персонажи, Классы, Оружие и Броня, причем если у одного персонажа будут указаны одинаковые Особенности в разных разделах, то их показатели суммируются!


Иначе говоря, если мы зададим Персонажу шанс уклонения 25%, его классу тоже 25%, то у него в игре уже будет 50%. А если добавить сюда броню на 25% уклонения и оружие с такими же 25% на уклонение, то получим неубиваемую имбу, так что это все нужно учитывать.


Ну, что? Не вывихнули мозг еще? В следующем уроке у нас Навыки – там формулы будут, точно вывихнем))

Показать полностью 10
[моё] RPG Maker Gamedev Курс Урок Видео Длиннопост
12
17
alx0yago
alx0yago
3 года назад
Лига Разработчиков Видеоигр

Гильдия героев (Guild of heroes of sword and wizardry). Демо 0.4.2⁠⁠

Выкладываю небольшой апдейт демо «Гильдии героев». Изменения такие:

1. Наконец-то подключён и работает плагин для предварительного отображения урона.

2. Сложная сложность сделана чуть менее сложной.

3. Теперь можно менять сложность игры при помощи значка гильдии (в инвентаре).


Ссылка на полную версию (около 400 Мб):

https://disk.yandex.ru/d/kSSKgMAkjEbwAg

https://drive.google.com/file/d/15A4-eweL6bX8FlQR2FiM9v7QMPo...


Для тех, у кого уже скачана предыдущая версия (отсюда: Гильдия героев (Guild of heroes of sword and wizardry). Демо 0.4), достаточно скачать и закинуть в папку с игрой (с заменой файлов) содержимое этого архива:

https://disk.yandex.ru/d/vV07nUKFthBtKw

https://drive.google.com/file/d/1GYpgDKPiDzUCCXMvOxE-wRzId1o...


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

Гильдия героев (Guild of heroes of sword and wizardry). Демо 0.4.2 Игры, Gamedev, JRPG, RPG, RPG Maker, Длиннопост

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

В стандартной РПГмейкерской боёвке нет возможности предварительно посмотреть, какой урон будет нанесён противнику. И, как ни удивительно, плагинов для этого полезного дела мне найти тоже не удалось, хотя казалось бы…

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

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

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

Затем много мороки вышло с популярными плагинами Янфлая, для боевой системы (YEP_BattleEngineCore, YEP_RowFormation, YEP_TargetCore и YEP_X_SelectionControl), которые, например, меняют порядок выбора врагов со стандартно по ID на визуальный: справа налево. Кроме того, они нужны для того, чтобы ограничивать выбор целей и сдвигать их в дальний ряд. В общем, это реально полезные функции, но с ними плагин для предпросмотра урона испытывал регулярное недоумение и путал врагов. К счастью, и это получилось преодолеть.

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

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

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

Ну, как-то так. Скачивайте игру, смотрите, как оно работает, и надеюсь, все усилия того стоили.

Показать полностью 1
[моё] Игры Gamedev JRPG RPG RPG Maker Длиннопост
2
50
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №12. Работа с изображениями⁠⁠

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


Разумеется, для ценителей есть и видео версия:

Поле «Изображение» находится на второй странице списка команд ивента и содержит в себе пять этих самых команд:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

«Показать изображение» - выводит на экран любую картинку в формате png (мукер работает только с такими) согласно координатам заданным в поле «Позиция». Координаты могут быть заданы как вручную, так и взяты из переменных. Координатная сетка задана в пикселях относительно выбранного размера окна игры, а не карты, где нулевой точкой будет верхний левый угол. Положительные значения оси Х расположены справа от нуля, а положительные Y – ниже нуля. Т.е., как и в случае с тайловой сеткой, мы имеем «перевернутую» ось Y.


Размер окна игры по умолчанию: 816x624 пикселей, что может быть изменено в Базе Данных, но мы позже до этого доберемся. В MV размер окна средствами движка не изменяется, но для этого существуют специальные плагины.


Сложна, нипанятна! Давайте на практике рассмотрим – будет понятнее.

У нас есть НПС и диалоги с ними. Допустим, мы желаем видеть не эти маленькие фейсы в окне сообщения, а полноценные изображения персонажей по пояс. Возьмем Любителя Опят, удалим его фейс из окна сообщения и перед командой вывода этого сообщения добавим команду «Показать изображение»:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Выбираем из списка «Изображение» нужную картинку, в данном случае это будет Actor1_7. Как мы видим, каждому изображению можно присвоить соответствующий номер, причем, чем больше число в номере, тем выше приоритет отображения картинки, т.е. картинка 2 будет показана поверх картинки 1, например.


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


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


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


Как же нам понять, какие координаты следует вводить, чтобы наша картинка оказалась, например, по центру экрана?


Есть два способа – дефолтный и лайвфпсчхакерский.


Дефолный представляет из себя геморрой с калькулятором.


Сперва выберем в поле «Позиция» вариант центр.

Мы знаем, что размер окна 816х624 пикселя. Делим ширину пополам и получаем 408 – это будет координата по Х.


С игреком сложнее. Если мы зададим координаты Y=624, то у нас нижняя половина чувака скроется за нижней границей экрана. Поэтому берем размеры картинки (330х350) и высоту делим на 2. Получаем 175 и из 624 отнимаем эти 175. Получаем Y=449

Итого Х = 408, а Y = 449. Вносим, сохраняем и проверяем.

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Так себе, да? Диалоговое окно хоть и имеет прозрачность, но все равно портит вид. Выход – картинку надо поднять еще выше. Как понять насколько выше? Можно, конечно, заскринить и тупо измерить в том же ФШ, но я и так скажу – примерно 170 пикселей. Как я определил? Да по тайлам. Сетка тайловая 48 пикселей, окно закрывает три с половиной тайла. Это примерно 170 пикселей и будет. 449-170=279


Давайте проверим штоле:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Уже лучшее, но я бы еще поднял пикселей на 5-8. Впрочем, это уже детали, нас данный геморройный метод интересует исключительно с академической точки зрения. Хотя бы потому, что таким извращением с высчитыванием координат никто не занимается.


Метод второй - лайфпсчнхак


Создаем в ФШ пустой лист размером 816х624. Делаем скриншот окна игры с открытым диалогом, например сочетанием Win+Shift+S или простым PrintScreen. Помещаем скрин на этот лист (Ctrl+V), только аккуратно, чтобы границы окна совпали с границами листа:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Теперь находим нашу картинку – Папка Проекта -> img -> pictures. Открываем в ФШ и перетаскиваем на первый лист.

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

А теперь просто скрываем нижний слой со скрином (нажать на иконку глаза в списке слоев, список вызывается нажатием на F7) и сохраняем в Папка Проекта-> img -> pictures, можно даже прямо с заменой исходного Actor1_7, только соседнюю вкладку с этой картинкой в ФШ закройте, а то он ругаться будет.

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

В итоге мы получаем лист размером с экран игры и теперь не нужно запариваться с координатами. Ставим в поле «Позиция» вариант «Верхний левый угол», а Х и Y у нас будут равны 0. И смотрим на результат:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


Ну, почти никогда.

Иногда нужно картинку сдвинуть. Например, персонаж появился по центру, сказал фразу, после чего красиво отъехал в левую сторону, уменьшился и на его месте появился уже другой.

Для этого нам потребуется команда «Переместить изображение».

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


Выбрали самый верхний инструмент (Перемещение) навели на линейку у левого рабочей области ФШ и потянули вправо с зажатой ЛКМ. Появившуюся направляющую тащим до края рисунка:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Кстати, если забыли, то линейки можно включить в настройках ФШ по сочетанию Ctrl+K.


Фотошоп нам подсказывает, что координата края рисунка по Х = 245 пикселей. А по Y нам не надо, там останется без изменений, так как мы планируем смещение по горизонтали.


Таким образом, мы понимаем, что конечная точка смещения будет находиться по Х= -245 (отрицательное, так как смещаем влево, относительно начала координат) и Y=0


Поле «Изменение скорости» предлагает нам на выбор 4 варианта перемещения – с ними тоже все просто и ясно по названиям.

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Поле «Продолжительность» задает время в кадрах, за которое должны произойти изменения. Я задам 30 кадров, так как полсекунды – вполне приемлемо, а вот секунда уже долго для диалога.

Вот такие настройки должны получиться в итоге.

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Теперь добавим ответ от лица героя.

Создаем сообщение, потом с помощью фотошопа делаем то же самое, что делали для изображения НПС, только с картинкой героя

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Тут можно сразу прикинуть координаты смещения. На этот раз после сообщения мы будем смещать его вправо и тут чуточку сложнее. Вычисляем с помощью направляющей координаты крайней правой точки рисунка – 556 будет, вычитаем это значение из ширины экрана 816-556=260. Смещаем вправо, поэтому Х=260.


Сохраняем все это дело и создаем необходимые команды в мукере. Должно получится следующее:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Будьте внимательны с номерами изображений! 1 – это у нас картинка с НПС, а 2 будет с героем. Номера действительны до тех пор, пока изображения не удалены с экрана. Если под одним и тем же номером попытаться отобразить две картинки, то последующая удалит предыдущую.


Проверяем, что получилось!

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Ну, так-то неплохо, но чего-то не хватает, верно? Не совсем понятно, кто из чуваков говорит. А уж если их диалог продолжится, то будет совсем плохо:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Что делать? На помощь придет команда «Оттенок изображения»

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


Не забудьте, что эта команда так же, работает с номерами изображений, как и предыдущие.

Вот такой код получился:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Т.е. НПС или герой произносят фразу, становится серым, оппонент становится обычным, произносит фразу, становится серым и так далее. Код выглядит сложно, но писать подобное просто – создаешь один шаблон, дальше копировать-вставить в нужных местах, главное с номерами картинок не ошибиться.

Смотрим на примере:

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Ну, что? Более-менее понятно? Даже более-менее работает. Осталось лишь удалить картинки с экрана, так как они остаются висеть до тех пор, пока не получат команду на удаление. Команда максимально простая и требует лишь ввод номера картинки, с ней вы разберетесь сами.


Также самим вам я предлагаю разобраться с полями «Масштаб» и «Смешивание» в окошках показа изображения и его перемещения. Со смешиванием мы уже сталкивались, вы помните, что непрозрачность в мукере задается по шкале от 0 до 255, где 0 – невидимость, а 255 – отсутствие прозрачности. Режимы смешивания – это режимы вывода изображения на экран с учетом того, что было нарисовано на нем до этого. Их проще попробовать, чем заочно понять.


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


Кроме того, не буду я пристально рассматривать команду «Поворот изображения», потому как нечего там рассматривать. Две настройки – выбор номера картинки и скорость вращения относительно выбранной точки начала координат (верх-лево или центр). Если честно, то не припомню разумного и оправданного использования этой фичи.


Ах, да, чуть не забыл про то маленькое ДЗ, которое я дал на прошлом уроке!)

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

RPG Maker MZ: урок №12. Работа с изображениями RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Хотел задать вам на этот урок HUD на картинках, чтобы количество собранных грибов отображалось на экране, но… боюсь, это будет слишком сложно. Сделаем попозже!


Сайгакора!

Показать полностью 21
[моё] RPG Maker Gamedev Урок Курс Видео Гифка Длиннопост
26
48
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа⁠⁠

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


Разумеется, для желающих есть и видео версия:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Теперь перейдем к сегодняшним темам, и начнем с команды «Показать Выбор».

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Извините за политическую шутку, но показалось уместным:)


Команда располагается в поле «Сообщение» прямо под командой «Показать сообщение» и вызывает вот такое окно:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Как мы видим, мукер предлагает нам максимум шесть вариантов, с возможностью вбить в его поле какой-то текст, который будет виден на экране игры.


Настройки справа:


Фон – то же самое, что и Фон у окна ввода сообщения, дает выбор между оконным режимом, уменьшенной освещенностью и прозрачностью


Положение окна (Справа, Середина, Слева) – определяет местоположение меню выбора на экране


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


При отмене – выбор варианта, который будет выбран при нажатии игроком клавиши Отмена. Можно отключить, путем выбора варианта «нет», либо создать отдельное ветвление, которое будет работать в случае нажатия кнопки «Отмена».


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

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Давайте сразу займемся самым сложным из НПС, которые у нас имеются – Любителем грибов.


Добавим в начальный диалог выбор для игрока, хочет ли он брать данный квест.

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

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Под сообщением ставим выбор с двумя вариантами:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

Нужно привыкать к тому, что НПС и герои – это просто графика на экране, а управляться она может откуда угодно.


Так, ну простой вариант выбора мы разобрали. А что если сделать длинный ветвистый диалог? Да, это возможно, но потребуется внимательность, так как лесенки из вложений дело опасное и трудночитаемое.


Обратимся к любителю мухоморов и запилим в его ивенте после первого сообщения диалог следующего вида:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


Третий вариант с отказом оставляем как есть, так как он у нас выбран в качестве варианта отказа от квеста.

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Теперь под вопросом НПС мы создадим еще один выбор:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


Поскольку RPG Maker создан не для запиливания новелл (в отличие от Visual Novel Maker от этой же компании), то функции прокрутки сообщений взад-вперед в нем по умолчанию нет. Функции нет, но необходимость есть. Реализовать такую возможность удается с помощью команды «Метка».


Команда расположена в поле «Управление процессом» и вызывает простенькое окно настроек с единственной возможностью – ввести имя метки.

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Для погроммистов и сочувствующих – метка, это что-то вроде Go To.


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


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


Внимание: в команде «Переход к метке» нужно вводить имя метки без ошибок и точно так же, как вводили при ее создании! Регистр имеет значение, т.е. мукер различает большие и маленькие буквы. Язык ввода имени метки значения не имеет.

Создадим метку перед сообщением о том, что НПС ест мухоморы и обратимся к ней при выборе варианта «Повтори, я не расслышал»

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Кстати, если кто-то из вас играл в Final Fantasy IX, то может помните момент, где нужно было 63 раза переспросить НПС таким вот образом, чтобы увидеть пасхалку?) Подумайте – как можно такое реализовать, а я на следующем уроке расскажу, если не забуду.


Ну и давайте применим еще одну простенькую команду, которую я в названии анонсировал – «Ввести число».


Расположена она в поле «Сообщение» под «Показать выбор»

Эта команда делает лишь то, что запрашивает у игрока какое-либо число и записывает его значение в переменную. Всё. Тоже мне команда, скажете вы! И толку от нее? От нее толку немного, но иногда можно его извлечь, например, делая кодовый дверной замок.


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


Окей, нет проблем, создадим яму!

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Графика подходящей ямы лежит у нас на вкладке D, которую мы создавали в первых уроках.


Рассмотрим код этого ивента:


Сперва идет сообщение о том, что эта яма делает. Затем выбор из двух видов грибов и варианта отмены. Далее просим игрока ввести число, длиною в один разряд – нам больше и не нужно. Потом у нас идет ветвление, где сравнивается значение переменной «Мухоморы» и переменной «На выброс» и, если Мухоморы больше или равны ей, то вычитаем значение «На выброс» из значения «Мухоморы». И выводим простенькое сообщение, мол, операция прошла успешно.


Вроде бы все просто, верно? Проверим, как это все работает:

RPG Maker MZ: урок №11. Выбор, Метка и Ввод числа RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Синьоронора!

Показать полностью 20
[моё] RPG Maker Gamedev Урок Курс Видео Гифка Длиннопост
28
64
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента⁠⁠

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


Для любителей видео уроков я сделяль… видео урок:

Многие уже заметили, что Переключатели можно использовать в качестве условия запуска страницы ивента, а так же в ветвлениях.

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Что же они из себя представляют?


Переключатель – в мукере, по сути, является переменной, которая способна хранить лишь два значения: ноль или единицу, и только их. В движке эти значения обозначаются, как ВКЛ и ВЫКЛ, соответственно.


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


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


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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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


Что нам это дает?

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


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

Возьмем ивент Любителя Опят и скопируем-вставим его страницу, получив таким образом дубликат. Содержимое страницы 1 удалим и вместо него добавим сообщение с выдачей квеста и команду на включение переключателя:

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Теперь, НПС будет различать, выдавал ли он этот квест ранее. Проверим:

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Работает. Первый раз НПС дает квест, а в последующие напоминает, что уже просил об этой услуге.


Но почему я сделал именно так, а не просто создал новую страницу, задав на ней первое сообщение и включение переключателя, а на первой не поставил его в условиях?


Дело в принципе приоритета выбора страниц при равных условиях. У нас есть две страницы одного ивента – одна вообще без условий, а вторая с переключателем. Если переключатель включен, то они вроде бы обе могут быть выполнены.


В Содержимом все выполняется подряд, если условия выполнены, это мы с вами уяснили, я надеюсь. Теперь придется понять и запомнить то, как мукер обрабатывает условия страниц.

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


Сложно? Попробую объяснить.

Если у нас есть страницы 1,2 и 3, то проверка условий будет осуществляться сперва у 3, потом у 2 и потом у 1. Проверка идет в этом обратном порядке до тех пор, пока движок не натыкается на страницу, которую может запустить. Короче, тут как в армии – при прочих равных исполняется тот приказ, который был отдан последним:)


Именно поэтому я и поставил страницу с условием второй, а не первой. Да, понимаю, это не интуитивно нифига, но что поделаешь – такое уж устройство у движка.


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


Переходим в ивент опят:

Принцип тот же самый – копируем-вставляем страницу,создав новую (я рекомендую это делать потому, что так вы не накосячите с графикой и прочими настройками страницы), первая страница у нас будет без условий, но с сообщением, мол, тут растут опята, но нам они не нужны:

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Теперь вне квеста сорвать опенок будет невозможно. Ерунда, но это лучше, чем было.Однако, квест все еще не доделан до конца. Мы его начали, но не поставили никаких условий для завершения. Собственно, никакого завершения тут и не будет – у НПС нет определенных требований, мы потом его изменим и допилим, когда до команды «Показать Выбор» дойдем.


А пока, давайте разберем завершение квеста на примере Ведьмы – ведь у нее есть четкое требование, она хочет ровно пять грибов.


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

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

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


Так, теперь у нас есть квест, возможность его взять, выполнить и завершить. Но он многоразовый! У нас нет варианта диалога на случай, если мы квест уже выполнили! Что делать? Заводить еще один переключатель типа «квест Грибы вып.»? Можно так, но можно проще – воспользуемся Локальным Переключателем.


Локальный переключатель – это точно такой же переключатель, но его действие ограничено рамками ивента, внутри которого он использован.


Локальные переключатели служат для ручного переключения страниц внутри ивента. Всего их 4 – A,B,C и D. Локальный переключатель А(например) использованный в одном ивенте, не имеет ничего общего с локальным переключателем А в ивенте другом.


Если вы заметили, то под локальные переключатели выделено отдельное поле в Условиях запуска страницы ивента.

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


Воспользуемся этой фичей и впихнем локалку сразу после выключения переключателя на сбор грибов:

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Теперь создаем страницу 3 (можно копированием, как и раньше), где пишем новое сообщение:

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Ну и остается нам немножко доработать Мухоморы и Опята. Если с Мухоморами все просто – ставим галочку и добавляем в условия переключатель Сбор Грибов, то у Опёнка, как мы видим, уже заюзано условие на сбор именно Опят.


Можно, конечно, включать переключатель Сбор Опят у ведьмы, но зачем? Это будет не совсем правильно – игрок же не общался с Любителем Опят. Поэтому просто скопируем страницу 2 ивента Опёнок и в копии поставим условием переключатель Сбор грибов.

RPG Maker MZ: урок №10. Переключатели, локальные переключатели и страницы ивента RPG Maker, Gamedev, Курс, Урок, Видео, Гифка, Длиннопост

Не забудьте повторить это все и для мухоморов тоже.

Ну, что же? Проверим) Ссылкой с таймкодом я вам результат скину, так как в гифку не влезает)


youtu.be/aB-3WoCpsYM?t=1101


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


Солёнора!

Показать полностью 14
[моё] RPG Maker Gamedev Курс Урок Видео Гифка Длиннопост
18
45
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение⁠⁠

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


Для тех, кому интереснее смотреть, чем читать, запилено соответствующее видео:

Итак, команда «Ветвление условий» находится в поле «Управление процессом».

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

В программировании его действие известно по базовому циклу If…Else…, что на человеческом языке выглядит как Если…То…


Если условие выполнено, То происходит следующее


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


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

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Давайте изменим код у НПС, что бы они действительно давали подобие квеста.

Из данных у нас имеются уже задействованные переменные, поэтому на них и будем опираться.


Открываем Любителя опят и выше команды сообщения задаем команду ветвления (напомню, что команда выше ставится двойным ЛКМ по текущей):

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

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


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


Жмем окей:

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Видите пустую строку после «Если: Опята = 0»? Сюда можно пихать любые команды, одну за одной. Все они будут по очереди выполнены в случае, если переменная «Опята» равно нулю.


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


Переменная равна нулю в том случае, если наш Игрок еще ничего не собрал, поэтому под «Если» мы запихнем сообщение:

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

А под «Иначе» перенесем уже имеющееся сообщение с выводом количества этих опят. Для этого просто нажмем ПКМ по строке с командой и выберем Вырезать. Затем под «Иначе» еще раз ПКМ и выберем Вставить. Ну, либо ctrl+X и Ctrl+V, если вам так привычнее.

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост
RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Можно было бы изменить подобным образом и остальных НПС, но мы пойдем дальше и Любитель мухоморов будет требовать не просто собрать ему мухоморов, но и определенное их количество.


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


Три «если», значит три условия. Значит три команды. Но их нельзя просто расположить подряд, так как у нас две имеют схожие условия и будут одинаково справедливы… в каком случае? Кто умный? Правильно – если переменная будет равна нулю. У нас условие на равенство нулю и на меньше трех – ноль тоже меньше трех. Поэтому, если мы просто кинем подряд три команды, то игра пройдется по ним (а мы помним, что все команды обрабатываются движком по очереди) и выполнит две, вместо одной. Технически это не приведет к серьезным последствиям, просто на экран выведется лишнее сообщение. Нам это не надо.


Что делать? Вложить одно ветвление в другое. Создаем ветвление на равенство нулю с веткой «Иначе» и сообщением:

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

А теперь в «Иначе» задаем еще одно ветвление на случай, если переменная меньше трех, ну и сообщение в него вкладываем тоже:

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост
RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

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


Думаете это сложно?) Для первого раза, безусловно, но по факту нужно просто привыкнуть. И не строить длинных вложений – можно в них потом себе шею свернуть. Я сворачивал, я знаю. Два-три максимум. Как же избежать множественных вложений, но и квесты делать? Займемся Любителем Грибов.


У нас есть ивент, который подсчитывает количество собранных грибов и сообщает об этом.

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

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


Если переменная равна нулю

Если переменная меньше пяти

Если переменная больше пяти

Если переменная равна пяти


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

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Заметьте, я задаю команды после действий с переменными, так как нам сперва нужно произвести подсчет, а уже потом использовать результат.


Я не создал ветвь «Иначе» в ветвлении на Все грибы < 5, а почему? Потому, что пришлось бы вкладывать в это «Иначе» ветвление на равенство и на число больше пяти. Это геморрой и говнокод (такое понятие даже в визуальном скриптинге есть, да).


Вместо этого мы просто под этой командой создаем новое ветвление на равенство пяти и ветвь «Иначе» для прочих результатов (ноль – есть, меньше пяти – есть, пять – есть, значит, все прочее точно будет больше пяти, надеюсь, понятна логика?):

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Самые внимательные и умные уже видят косяк в этом коде. Можете тоже поискать, если интересно.


Косяк заключается в том, что, как я уже отбил язык и клавиатуру говорить, команды Содержимого выполняются подряд, от начала и до конца. Допустим у нас 4 гриба. Как будет работать выполнение:


проверяем Если = 0 – не сработало

проверяем Иначе если < 5 – сработало, выводим текст

проверяем Если = 5 – не сработало

проверяем Иначе - сработало, выводим текст.


Четыре меньше пяти и не равно пяти. Обе команды будут выполнены. Но нам не надо обе, нам надо одну!


Нам поможет команда «Завершить выполнение». Она находится в поле «Управление процессом» и используется в ветвлениях постоянно. Команда прекращает выполнение команд ивента, как только движок ее увидит.

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

Куда нам нужно ее поставить? Ну, ясное дело, что не в конец – там и так все прекратится без команды. У нас есть условия, при которых нас не интересуют дальнейшие проверки.


Например, если выяснилось, что у Игрока ноль грибов – какой нам смысл в дальнейших проверках? Мы знаем, что там ноль, всё, достаточно. Или если там не ноль, но меньше пяти – какой смысл продолжать? Раз меньше пяти, то явно не пять и не больше же!


Вот после сообщений в этих двух условиях мы и поставим команду «Завершить выполнение».

RPG Maker MZ: урок №9. Ветвление условий и Завершить выполнение RPG Maker, Gamedev, Урок, Курс, Видео, Длиннопост

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


Ну, что? Тестируем, что ли?) Извините, но гифки такого объема записывать хлопотно, поэтому просто дам ссылку на конец видео урока с таймкодом:

youtu.be/vC0CgEog7ZE?t=1113

Показать полностью 15
[моё] RPG Maker Gamedev Урок Курс Видео Длиннопост
9
60
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №8. Переменные⁠⁠

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


Для тех, кому удобнее смотреть, нежели читать, есть и видео версия:

Что такое переменная?


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


В мукере почти то же самое – есть выделенная ячейка в памяти, в которую можно запихнуть множество различных данных. Она и называется переменной.


Нафига они вообще нужны? Допустим, у вас есть квест на сбор определенного количества предметов, которые нужно принести определенному НПС. Берем переменную и, как только находим предмет, увеличиваем ее значение на 1. Как только значение переменной достигнет нужного значения, квест будет выполнен. Это самый примитивный пример, разумеется в переменные используются для массы других дел, от реализации головоломок, до стелс-систем.


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

Создадим этих ребяток в виде обычных стоящих на месте ивентов с произвольной графикой. Команд пока никаких задавать не будем.

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Теперь зададим ивенту команду.


Команда для работы с переменными находится на той же странице команд ивента, что и «Показать сообщение», которое мы рассматривали прошлый раз, только чуть ниже – в поле «Внутренние данные», вторая кнопка сверху. Жмем ее и смотрим на открывшееся окно с очередным клондайком функционала:

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Здесь три поля –


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

«Операция» - позволяет выбрать действие, которое мы с упомянутым содержимым будем производить

«Операнд» - здесь выбираем то, что нам нужно использовать для изменений выбранной переменной.


В первом поле у нас два варианта выбора – мы можем работать с одной единственной переменной (вариант «Один»), либо использовать сразу несколько, идущих подряд (вариант «Диапазон»).


У больших пацанов из мира программирования принято перед использованием переменные создавать (они это называют – «объявлять»). Мукеристы от данной необходимости избавлены – движком по умолчанию зарезервировано для нас 5000 (пять тысяч) переменных под ID номерами от 0001 до 5000, соответственно. Нажмем на кнопку выбора справа от поля «Один» и убедимся в этом:

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Мы видим лишь 20 пустых ячеек, но на самом деле их 5000, как я и сказал, просто движок прячет от нас остальное, чтобы не загромождать. В левом нижнем углу есть кнопка «Изменить количество», которая работает точно так же, как и аналогичная в тайлсетах базы данных. Здесь можно задать количество переменных и максимальным будет именно пять тысяч.


Забегая вперед, скажу, что 5000 – это очень много, но если вдруг вам этого будет мало (с трудом представляю подобную ситуацию), то существует плагин, расширяющий такие вот базовые ограничения мукера до бесконечности.


Выбрав переменную (одиночный клик ЛКМ по строчке) мы можем ее как-нибудь обозвать, введя имя в поле «Наз…» внизу. Я настоятельно рекомендую давать переменным понятные имена, которые указывают на то, зачем она нужна и что в себе хранит.


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


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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Далее у нас выбор операции. Что мы должны сделать со значением данной переменной при нахождении мухомора? Правильно, увеличить на единицу. Т.е. выбираем плюс (+), а в поле «Операнд» задаем Постоянная 1.

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


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


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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Я использовал спец.команду для диалогов \V[n], которая нам сразу выведет значение переменной под номером 1(т.е. переменной «Мухоморы»), рассказав, сколько мы уже собрали.


Теперь на карте копируем ивент с помощью контекстного меню по ПКМ, либо сочетанием клавиш Ctrl+C и вставляем тем же методом, либо Ctrl+V, в другое место.

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Первый ивент назовем «Мухомор», а копированный превратим в Опенок.


Для это заменим название ивента, переменную в Содержимом и отредактируем сообщение. Редактирование команд ивента осуществляется путем их выбора кликом, а затем командой из контекстного меню по ПКМ, либо клавишей Пробел.


Не забудем также заменить графику на опята, они лежат слева от мухоморов на листе тайлов вкладки B.

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Не забудьте команду \V[1] заменить на \V[2] в выводимом сообщении.


Итак, грибы у нас готовы. Обратимся к НПС и начнем с любителя опят. Он будет у нас пока просто выдавать сообщение с похвалой и количеством собранных опят:


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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Давайте запустим проект и проверим, как оно работает!


Как мы видим, мухоморы и грибы собираются без проблем, причем их количество увеличивается к каждым обращением игрока к ивенту.

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Как эту ситуацию изменить? Есть два пути, первый – изменить оба ивента с грибами и добавить туда команду прибавлять единицу не только к переменной, отвечающей за количество данных грибов, но и к переменной «Всего грибов». Это самый примитивный вариант, он понятен, поэтому я даже демонстрировать его не буду.


Иногда редактировать кучу ивентов неудобно и проще произвести вычисления уже на месте, у нашего НПС. Добавим в его ивент еще две команды перед сообщением – ведь мы хотим произвести подсчет грибов перед тем, как сообщим их количество.


Все команды в Содержимом ивента выполняются движком последовательно, одна за другой. Чтобы добавить новую команду выше имеющейся, выбираем ту, над которой хотим добавить новую и делаем двойной клик ЛКМ по ней. Либо ПКМ и в контекстном меню выбираем «Новый».


Для начала нам нужно в переменную «Всего грибов» скопировать значение из «Мухоморы».

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Мы могли бы сразу прибавить Опята к Мухоморам и получить сумму, но тогда эта сумма будет записана в переменную «Мухоморы», а нам это не нужно, мы хотим эти данные сохранить отдельно, не затерев количество мухоморов!


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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Проверямба!

RPG Maker MZ: урок №8. Переменные RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Все работает. А куда оно, собственно, денется – мы сделали все правильно.


Таким же образом, мы можем производить действия вычитания, умножения и деления с самыми разными данными – случайными числами, количеством предметов в инвентаре, координатами, валютой, показателями НР и МР и т.д. Переменная может хранить очень много всего – достаточно посмотреть на пункты в окне работы с ней.


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


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


Т.е. к примеру, если вы разделите 6 на 4, то в переменную запишется 1, а не 1.5. И выдавать по запросу она будет именно единицу. Это нужно всегда помнить и учитывать.


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


Возможно я пропаду на пару-тройку дней, но не переживайте, это жизнь, в ней не всегда находится 4-5 свободных часов.


До новых встреч!

Показать полностью 18
[моё] RPG Maker Gamedev Урок Курс Видео Гифка Длиннопост
17
49
LuarZero
LuarZero
3 года назад
Лига Разработчиков Видеоигр

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты⁠⁠

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


Кстати, есть и видео версия:

https://youtu.be/CaM9_HFMcrE

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


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


Теперь посмотрим на правую часть окна редактора событий. В большом поле «Содержимое» будут отображаться все команды данного ивента. Дать команду просто – достаточно двойного клика ЛКМ по пустой строке и перед нами открывается окно с кучей кнопок, расположенных аж на трех страницах.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Нас интересует самая верхняя кнопка «Показать сообщение…», после нажатия на которую, открывается окно, для ввода текста, который мы хотим каким-либо образом вывести на экран. Рассмотрим это окно:

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Кликнув по полю «Лицо» мы можем выбрать фейс (если хотим этого), который будет отображаться слева от текста. Фейс нашей девки находится в файле Actor3.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Фейс – в мукере изображение с лицом персонажа, используемое для диалогов.

Фейссет – файл с набором фейсов из 8 штук.


Я уж не буду откладывать эту тему и сразу поясню, что все файлы фейссетов лежат в папке проекта по пути Папка проекта -> img -> faces. Они представляют из себя картинки в формате PNG размером 576х288 пикселей, которые движок разбивает на 8 частей, в каждую из которых можно поместить один отдельный фейс размером 144х144 пикселя. Файлы фейссетов, в отличие от чарсетов, не могут быть какого угодно размера и ограничены базовым.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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


Ниже поля «Лицо» есть поле с кривым именем «Название». На самом деле, сюда можно ввести имя персонажа и оно будет выводиться над сообщением отдельно. Назовем нашу девку Шляпницей и продолжим.


В RPG Maker MV и более ранних, поля для введения имени персонажа нет


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


Давайте поэкспериментируем:

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Я намеренно не перенес текст, что бы показать, как это будет выглядеть в игре. Вообще-то у нас имеется кнопка «предпросмотр», которая как бы призвана показывать внешний вид диалога в игре, чтобы нам каждый раз не запускать тест, но…

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

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

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Проблема заключается в используемых шрифтах и их размерах, они разные для поля ввода, окна предпросмотра и самой игры – в предпросмотре Verdana, а в игре и поле ввода M+1M Regular, но разного размера (ладно, кегля!).


Какой из этого выход? Их два. Первый самый простой – привыкнуть. Просто привыкнуть ориентироваться по полоске и помнить, что она не строгая и чуть-чуть левее, чем нужно. Так делают почти все.


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


Как менять шрифты?


Для того, что бы изменить шрифт, его надо сперва скачать. Даже если вы хотите использовать какой-нибудь Time New Roman, который по дефолту есть в числе системных, вас все равно потребуется файл с ним, чтобы вложить его в папку fonts, которая находится в папке проекта. Потому, как сам мукер – десктопное приложение, а игра – вэбовское.


Мукер поддерживает шрифты с расширением woff(по умолчанию) и ttf.

Допустим, мне лень заморачиваться и я хочу себе Comic Sans MS, вот такой я говноед. Для этого я забивают в гугле «Comic Sans MS.ttf» и перехожу по первой же ссылке: allshrift.ru/font/comic-sans-ms/


Скачиваю, распаковываю архив и закидываю шрифт в папку Папка проекта ->font

Заодно, жму ПКМ по файлу со шрифтом и устанавливаю его в систему (Комик там есть, но вдруг у вас другой? Лучше перебздеть, чем недобздеть).

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Далее нам нужна База Данных, где мы будем колдовать с вкладкой Система 2. Тут много разных настроек, но нас интересуют три строки в правой части окна:


Название файла основного шрифта – первая строка отвечает за шрифт в игре


Название файла основного шрифта – второй пункт с таким же названием (оно тупо не влезает из-за перевода) отвечает за шрифт цифр в игре


Резервные шрифты – указывает шрифты, установленные в системе, которые используются для

отображения символов, которых не найдется в шрифте первом. Ну, если не найдется.


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

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

В общем, кликаем на первую строку «Название файла…», удаляем то, что там есть и вставляем имя файла нашего нового шрифта вместе с расширением. Со второй строкой делаем то же самое, а вот в третью вбиваем уже название шрифта, а не файла.


Отыскать название можно в винде, вбив в поиске «шрифты» и открыв «Параметры шрифта» и там уже в поиске начать вбивать предполагаемое название.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Название – Comic Sans MS


Как мы видим, в строке «Резервные шрифты», кроме названия есть еще что-то после запятой. Это указано семейство шрифтов. Раньше стояло sens-serif, т.е. семейство без засечек. Теперь у нас будет семейство cursive, так как именно к нему относится наш шрифт.


Основные семейства(мало ли пригодится):

Serif – с засечками (засечки, это такие хреньки на концах букв, как у рыболовного крючка), типа Garamond, Georgia, New York, Times, Times New Roman

Sens-serif – без засечек, типа Arial, Geneva, Helvetica, Lucida Sans, Trebuchet, Verdana

Monospace – машинный шрифт, как у пишущей машинки, короче. Например – Courier, Courier New, Lucida Console, Monaco

Fantasy – художественные шрифты, типа Copperplate, Desdemona, Impact, Kino

Cursive – рукописные, типа Comic Sans MS, Lucida Handwriting, Zapf Chancery

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Ну, давайте смотреть на результат!

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Предпросмотр плюс-минус совпадает с полосой ограничения в редакторе и полностью совпадает с тем, что в игре! Мы победили проблему стандартных мукерских шрифтов, которые, если честно, всё равно говно и их по-хорошему менять стоило)


В RPG Maker MV и более ранних, данная проблема отсутствует, так как шрифт используется один для всего, а заменяется простой заменой файла в папке.


Уф. Казалось бы, такая ерунда, а не так-то просто делается! Ну, благо, достаточно эту процедуру провести один раз в начале разработки и потом забыть. Продолжаем изучать окно сообщения!


Слева от кнопки предпросмотра есть два переключателя режимов:


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

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Меню «Фон» нам предлагает три варианта отображения текста:


Обычный - в диалоговом окне, которое мы уже видели


Уменьшенная Освещенность, это когда текст выводится на слегка затемненном прозрачном поле


Прозрачный - т.е. просто поверх того, что происходит на экране.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Предпросмотр при этом не показывает то, как будет выглядеть и располагаться сообщение, а работает лишь с текстом.


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

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост
RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Наконец, у нас остается галочка в левом нижнем углу, под названием «Массовый ввод». Галочка нужна в тех случаях, когда текст реплики персонажа слишком длинный и не влезает в 4 строки стандартного диалогового окна. В этом случае все лишнее переносится вниз и выводится в игре нажатием кнопки.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Заметьте, что в содержимом ивента, массовый ввод превращается в три отдельных команды по выводу сообщения, с которыми в последствии мы можем работать, как с отдельными командами.

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Предпросмотр, при массовом вводе показывает содержимое последней команды.

Окно ввода текста диалога умеет в различные плюшки, в частности, наведя на него курсор мыши и немного подождав, мы получаем объемную подсказку, по спец.тегам:


\V[n] – где n номер переменной, выводит значение переменной в тексте диалога

\N[n] – где n IDшник персонажа в базе данных, выводит имя персонажа

\P[n] – где n IDшник персонажа в партии (от 1 до 4), выводит имя персонажа.

\G – выводит название игровой валюты

\C[n] – выбор цвета текста, где n – номер цвета из базы. Номер можно узнать, нажав ПМК по полю ввода, выбрав «вставить индекс цвета» и кликнув по понравившемуся цвету:

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Помните, что поставленная команда выбора цвета окрашивает весь последующий текст в этом сообщении. Если хотите вернуться к первоначальному – его нужно снова выбрать, проставкой спец.команды \C[n].


\I[n] – показать в диалоге иконку из набора иконок, в базе данных. Номер иконки добывается так же по ПКМ->вставить индекс иконки

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

\{ –шрифт на единицу больше

\} - шрифт на единицу меньше

\FS[n] – увеличение шрифта на заданное количество единиц

\PX[x] – устанавливает точку начала текста, идущего после команды, в окне по оси х(координаты в пикселях), относительно края окна, а не фейса!

\PY[y]- устанавливает точку начала текста, идущего после команды, в окне по оси y(координаты в пикселях), относительно края окна, а не фейса!

RPG Maker MZ: урок №7. Текст, диалоговые окна, фейсы и шрифты RPG Maker, Gamedev, Урок, Курс, Видео, Гифка, Длиннопост

Х=20 Y=40 в данном случае


\\ - просто выводит символ обратного слеша, так как одиночный воспринимается, как команда и съедается движком.

\$ - открывает окно с деньгами (скин не влез, ищите в комментах)

\. – пауза в выводе текста 0.25 сек.

\| - пауза в выводе текста 1 сек

\! – ждать нажатия кнопки, прежде чем выводить следующий текст

\> - мгновенно вывести весь следующий текст

\< - удалить текст после выведения

\^ - вывод следующего сообщения без кнопки


Последняя группа команд может быть использована для придания диалогам эмоциональности, но…

Совет: не злоупотребляйте фиксированными паузами – игроков это бесит.

Еще совет: переносите слова всегда целиком. Не надо использовать черточку-перенос, вы не в школе и не книгу пишете. И старайтесь одну фразу упихать в одно окно, не надо долгих прокручивающихся опусов. Персонажи должны говорить емко и понятно.


Хотел еще рассказать о том, как менять вид самого диалогового окна, его подложки и рамки, но, увы – простыня слишком большая и картинок много. Потом разберемся, когда базу ковырять будем.


Увидимся на следующем уроке!

Показать полностью 24
[моё] RPG Maker Gamedev Урок Курс Видео Гифка Длиннопост
22
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии