Как я уже упоминал, в RPG Maker имеется встроенная система визуального программирования. Что это такое? Это точно такое же программирование, только вам не потребуется писать вручную с клавиатуры кучу разных странных слов и символов, а достаточно будет кликать на кнопки с названиями функций, чтобы они автоматически включались в код. Звучит интересно, но пока непонятно? Перейдем к практике.
Если вы обратили внимание, то заметили, что в мейкере есть два режима редактирования локаций, переключаемые кнопками на Панели Инструментов с изображением карты и облачка на одной, и с картой и шахматной фигуркой на другой:
Левая кнопка включает режим редактирования графики локации – в этом режиме мы работали до сих пор.
Правая же включает режим работы с ивентами. Давайте кликнем на нее и посмотрим, что изменилось.
Во-первых, опустело окно с миниатюрами графики, что немудрено, режим-то выбран другой – теперь здесь будет список наших ивентов. Во-вторых, карту разлиновало стандартной мукерской сеткой, а в третьих рахит-герой в центре из полупрозрачного стал вполне таким ярким и осязаемым. Это происходит потому, что герой в данном случае является точкой Начального Положения Игрока.
Начальное Положение Игрока – клетка, в которой главный герой появляется после начала новой игры в стартовом меню.
Внимание: Начальное Положение Игрока задается в обязательном порядке для любой игры! Это еще одна из причин, по которой в игре обязательно должна присутствовать хотя бы одна локация – без стартовой точки проект не запустится и выдаст ошибку еще до загрузки Главного Меню.
Забегая вперед, хочу вас успокоить – если в вашей игре никакой герой нафиг не нужен или должен появляться не сразу, а после какой-то сцены, то есть возможность запуска проекта с включенной прозрачностью у героя. Т.е. по факту персонаж и его стартовая позиция присутствовать на локации будут, но игрок их не увидит и, если мы об этом позаботимся, управлять этой невидимкой не сможет.
От текущей позиции героя зависит центровка экрана по локации (если она больше размера окна) и, собственно, то, какая локация сейчас отображается.
Обычно делается так – создается небольшая пустая карта, на ней ставится точка спауна ГГ с включенной прозрачностью. Пустая локация дает в игре черный экран – на него уже можно вывести какой-то вступительный текст, картинки и т.д. Затем невидимого ГГ перемещают на нормальную игровую локацию, тем самым показывая ее игроку. Там уже происходит какая-то катсценка, после чего затемняют экран, включают видимость героя, а потом экран проявляют. Либо невидимого героя можно спрятать за деревом, шкафом, дверью и т.д., что бы потом он в нужный момент выскочил и сказал «Ага!» . В общем, это вопрос вашей фантазии.
Если герой вам не нужен сам по себе, а допустим, вы делаете новеллу, где нужно просто мышкой тыкать по кнопкам, то просто оставляете его невидимым и в нужный момент перемещаете невидимку, тем самым меняя локации на экране (если их больше одной).
Начальное Положение Игрока может быть поставлено в любом свободном от других ивентов месте любой локации. Будьте внимательны, не ставьте стартовую точку в непроходимые тайлы – игрок не сможет с них уйти с помощью управления.
Чтобы задать Начальное Положение (вдруг вы его случайно удалили?), жмем ПКМ в нужной клетке нужной карты и в выпадающем меню выбираем последний пункт «Установить начальное положение», наводим (не кликая!) курсор на этот пункт и в следующем списке выбираем «игрок».
Что там за лодки, дирижабли и корабли разберемся позже.
Итак, Начальное Положение проставлено, но обратите внимание, что в списке ивентов оно не появляется. Это потому, что начальные положения относятся к особым данным и ивентами, в сущности, не являются.
А что же такое ивент?
Ивент (он же Событие) – блок кода или скрипт, написанный средствами визуального программирования движка и расположенный непосредственно на локации (кроме Общих ивентов/событий).
Привычку называть события ивентами я уже никуда не дену, поэтому заранее извиняюсь за этот англицизм. Но, увы, так все называют, придется привыкнуть, что бы потом понимать, о чем люди говорят. Ну, либо не общаться с другими разработчиками, что тоже вариант.
Кликнем ПКМ на какой-нибудь клетке и выберем пункт «Новое событие». У нас открылось окно с кучей разных разностей. Давайте его разберем:
В заголовке окна перед надписью «Редактор события» мы видим ID номер ивента, в нашем случае это ID:001. Номера присваиваются подряд, в порядке создания. Под ним есть поле «Название» - сюда можно вбить любое название, какое вы хотите дать этому ивенту. Всегда давайте своим ивентам названия, причем такие, чтобы по ним было ясно, что это вообще за ивент и зачем он нужен!
Обратите внимание: Начальная Позиция Игрока не является ивентом - это просто метка на карте и не более. Ее нельзя изменить, а можно только удалить и поставить.
Название нужно исключительно для разработчика, ни игрок, ни движок его никак не используют. Мукер идентифицирует ивенты исключительно по IDшникам, как и все остальное, поэтому можете смело задавать названия на любом языке.
Примечание – поле справа от поля «название», используется для различных комментариев, предназначенных для разработчика, оставляемых самому себе или сокомандникам. Рекомендуется оставлять пустым, если в игре возможно подключение плагинов – некоторые плагины используют это поле для внесение в него спец. команд.
Правее мы видим пять больших кнопок, из которых две неактивны, для работы со страницами ивента. Потыкаем в них:
Как видим, кнопка «Новая страница» создает дополнительную страницу в ивенте, на что указывает появившаяся закладочка с цифрой 2. Работа остальных кнопок, я полагаю, понятна без объяснений. Удалим пока страницу 2, чтобы она нас не смущала и не путала.
Условия – поле, расположенное ниже предыдущих. Здесь задаются условия, при которых будет работать данная страница. Т.е. если в ивенте есть несколько страниц с разными данными и командами, то после своей активации он проверяет, условия какой из страниц выполнены. Если таких страниц несколько, то выполнится та, что имеет меньший порядковый номер.
Поле «Условия»
Поле Изображение – расположено под полем Условия. Здесь задается графика ивента, если таковая требуется. Если мы хотим сделать НПС, то ставим в это поле графику персонажа, если это какой-нибудь рычаг, то графику рычага и т.д. Делается это двойным кликом ЛКМ по пустому окошку в поле. Если ивент предполагается, как просто набор команд и не является игровым объектом, то это поле можно просто оставить пустым – игрок его не увидит в игре.
Выбор графики ивента
Справа от поля «Изображение» находится поле «Автономное движение». Мы помним, или догадываемся, что в мукере любой активный предмет, любой НПС, любой моб и т.д. является ивентом. И если с предметами все просто, то НПС и прочая живность зачастую должны двигаться. В этом поле можно поработать с их маршрутами и скоростью.
Тип – выпадающее меню, определяющее тип движения ивента:
Без движения – ивент стоит на месте (вариант по умолчанию)
Случайно – хаотичное перемещение по карте. Часто используется для монстров.
К игроку – ивент будет следовать за игроком
Заданное – разблокирует кнопку «Маршрут» под этим меню.
Нажмем кнопку «Маршрут» и испугаемся открывшихся возможностей:
В принципе, вроде как все на русском и, отойдя от шока, можно понять, что все команды, начинающиеся со слова «Шаг» - просто велят ивенту сделать шаг в указанном направлении. Да, вниз-влево, вниз-право и т.п. – это диагональное движение.
Обратите внимание: команды Шаг Вперед и Шаг Назад выполняются относительно ивента, а не карты! Т.е. если ивент смотрит влево, то шаг вперед вызовет шаг влево!
простое зацикленное движение
Прыжок – вызывает окно, которое просит ввести координаты точки приземления относительно текущей позиции ивента. Как это понимать? Представим, что текущая позиция ивента, это ноль по Х и ноль по Y. Систему Декартовых координат помните? Вот тоже самое, НО ось Y перевернута, т.е. все, что ВЫШЕ нуля по Y имеет отрицательные значения, а все что ниже – положительные. У Икса все остается как и везде – справа от нуля положительные, слева отрицательные. Координаты задаются в квадратах мукерской сетки, разумеется.
прыжок
Таким образом, если нам нужно, что бы ивент прыгнул на три клетки вправо, то мы задаем ему в открывшемся окне Х+3 а Y оставляем 0. ЧСХ, если прыжок выполняется со смещением по обоим осям, то ивент прыгает по диагонали.
При выполнении прыжка ивент зрительно «подпрыгнет» над локацией. Разумеется, это иллюзия, так как движок двухмерный, но выглядит вполне реалистично
Ждать – просто пауза в действиях. Задается в кадрах, 1 секунда = 60 кадров, не перепутайте! Максимум можно задать одной командой ожидание 999 кадров ~ 16 секунд. Но никто не запрещает ставить хоть сотню таких команд подряд.
Все команды, начинающиеся со слова «Поворот» - просто разворачивают ивент, если у него есть графика для того, что бы смотреть вправо, влево и т.д.
Обратите внимание, что команды поворот на 90 и 180 градусов выполняются относительно ивента а не карты, также, как и команды Шаг Назад и Шаг Вперед
повороты
Вкл. Переключатель и Выкл. Переключатель – об этом позже.
Изменить скорость – скорость движения ивента от одной клетки до другой
Изменить частоту – скорость выполнения команд маршрута. Т.е. если мы задали вниз-вниз-вниз, то этот параметр будет определять время между шагами, а предыдущий скорость самого движения.
Анимация походки Вкл. и Выкл. – если отключить, то ивент будет двигаться, как статичная картинка и анимация (если она есть) воспроизводиться не будет.
Движение с отключенной анимацией.
Анимация шагов Вкл. и Выкл. – включает и отключает воспроизведение анимации при стоянии на месте.
Фиксация Вкл. и Выкл. – запрещает воспроизведение анимации поворота. Т.е. если изначально ивентовый НПС смотрел в камеру и нам надо, что бы он пошел вправо, то после команды Шаг вправо – он повернется и пойдет вправо. А если мы хотим, что бы он двигался боком, не поворачиваясь – включаем фиксацию.
Проходимость Вкл. и Выкл. – разрешает/запрещает ивенту ходить по непроходимым местам и сквозь другие ивенты, игнорируя их настройки. По дефолту отключено. С включенной проходимостью ивент так же становится проходимым
Невидимость Вкл. и Выкл. – собственно, включает или отключает отображение графики ивента.
Изменить изображение – меняет графику ивента на любую другую, какая есть в проекте
Изменить прозрачность – задает прозрачность графики от 0 до 255, где 0 – невидимость, а 255 –
без прозрачности.
Изменить режим смешивания – там четыре варианта на выбор, если вы хорошо знаете тот же фотошоп, то поймете, о чем идет речь(добавление, умножение, экран), а если нет, то и хрен с ним. На самом деле, вам хватит стандартного режима, а остальные дают эффекты… как бы это сказать… отрисовки с учетом того, что было отрисовано раньше.
три режима смешивания – Добавка, Умножение, Экран.
Вообще, тема смешивания, это тотальный звиздец и математика, можете погуглить ради любопытства про режимы смешивания в ФШ, только шею не сверните. В 100% случаев никем в мукере не используется. Хотя, можно поэкспериментировать и создавать с помощью этой херни призраков, светящихся ангелов и т.д.
Воспроизвести SE – SE это Sound Effect, т.е. звуковой эффект. Мы потом еще их потрогаем за разные места, а пока просто знайте, что можно прямо в маршруте вызвать звук в нужный момент.
Скрипт – команда для программистов. Открывает строку, в которую можно вбить какую-нибудь команду на JS. Длинные куски кода не впихнешь, их лучше подключать, как плагины.
Каждый раз, когда мы нажимаем на кнопку, команда записывается в список в левой части окна. Выполняются они по очереди одна за другой. Под списком есть кнопка «Предпросмотр», нажав на которую, мы можем посмотреть, какой путь будет выполнять ивент по карте и не накосячили ли мы где-нибудь (стартовая позиция отмечается квадратом):
В RPG Maker MV предпросмотра нет, так как эта функция впервые появилась в MZ.
Ну и наконец, под кнопкой предпросмотра мы видим три пункта с окошками для галочек:
Повторять действия – поставленная галочка показывает, что список команд будет циклично повторяться до бесконечности. Будьте осторожны – для нормальной работы этого пункта, путь ивента должен заканчиваться там же, где и начался. Иначе ивент начнет смещаться с каждым циклом и рано или поздно упрется в край карты или непроходимую область. Если галочка не стоит, то ивент пройдет своим маршрутом один раз и остановится.
Пропуск, если невозможно – ивент пропускает действие, прописанное в маршруте, если выполнить его не представляется возможным и переходит к следующему. Например, если на его пути оказывается игрок, перемещение которого мы не можем предсказать. Будьте осторожны – пропустив действие, ивент продолжит выполнение команд, вследствие чего его маршрут изменится. При установленной галочке «Повторять действия», это может привести к непредсказуемым последствиям. Если галочка не стоит, то ивент, встретив препятствие на маршруте будет смиренно ждать, пока препятствие исчезнет.
Ждать завершения – неактивно в этом режиме и пока трогать его не будем, позже разберемся.
Это все, что касается маршрута ивента, задаваемого в поле «Автономное движение». Окно маршрута вызывается не только отсюда, так как существует аналогичная команда из самого ивента, дающая широчайшие возможности для построения катсцен, но об этом позже поговорим.
У нас осталось три поля – Параметры, Приоритет и Триггер.
Параметры имеют четыре атрибута с галочками:
Анимация шага – ивент воспроизводит анимацию ходьбы, когда движется. Аналог Анимация Вкл/Выкл из маршрута, задает значение по умолчанию.
Двигается стоя – прокручивает анимацию, когда стоит на месте. Например, это может быть шагающий на месте НПС. Или горящий костер. Или мигающий курсор. Или еще херова гора всего, что не движется, но анимируется.
Фиксированное – полный аналог одноименной команды из маршрута. Задает значение по умолчанию.
Проходимое – если галочка включена, то ивент проходим, если нет, то нет.
Приоритет бывает трех видов – под персонажем, на одном уровне и над персонажем. И тут вроде бы все просто, это отображение ивента на карте, примерно как в случае с проходимостью у тайлсетов. Имейте в виду, что:
Ивенты, расположенные над и под персонажем проходимые в любом случае, вне зависимости от того, стоит ли галочка Проходимое.
При этом ивенты, в которых использована графика из тайлсета (да, это возможно для вкладок В,С,D,E) и расположенные ПОД персонажем будут использовать настройки проходимости из данного тайлсета.
Взаимодействие с ивентом находящимся ПОД и НАД персонажем происходит тогда, когда герой окажется на одной клетке с ним, а при выставленном приоритете На Одном Уровне – при нахождении на соседних клетках, исключая диагональные.
Ивент, находящийся НАД персонажем ВСЕГДА будет отображать свою графику выше графики тайлсета.
Галочка Проходимое, из предыдущего поля, работает только с ивентами, находящимися на одном уровне с персонажами.
Ну, и последнее на сегодня – Триггер.
Триггер, это условие при котором ивент запустится. Обратите внимание, это не тоже самое, что Условие вверху. Это условия срабатывания ивента вообще, а не одной из его страниц.
Как я уже описывал, после срабатывания, ивент проверяет Условия у страниц, а потом запускает выполнение подходящей. Так вот само изначальное срабатывание ивента определяет Триггер.
Кнопка действия – нажатие клавиши. Игрок подошел и ткнул кнопку.
Касание игрока – кривой, сцуко, перевод! Касание ИГРОКОМ должно быть. Когда игрок коснулся ивента, или наступил на него.
Касание события – опять же, Касание Событием. Когда ивент, в силу заданного ему маршрута впилился в игрока сам.
Автозапуск – ивент выполняет свои действия, как только игрок попадет на эту локацию. При этом все остальные ивенты (кроме параллельных и автономного движения) ставятся на паузу, а игрок не может управлять персонажем. Если автоматических ивентов два или больше, то они выполняются по очереди, согласно ID номеру.
Параллельно - ивент выполняет свои действия, как только игрок попадет на эту локацию. При этом все остальные ивенты на паузу НЕ ставятся, а игрок может ходить, бегать, ловить крокодильчиков и т.д. Параллельные ивенты выполняются невзирая на работу тех, у которых стоит Автозапуск.
Параллельные ивенты, как и Циклы следует использовать с осторожностью, так как они повышают нагрузку на ПК игрока. Во времена VX Ace десяток параллелек могли спокойно обрушить фпс до 5. Да, это в простой 2D игре! Сейчас проблема так остро не стоит, оптимизация стала значительно лучше, мукер спокойно тащит 50 параллелек на карте (больше не проверяли - лень), но мукеристы по старой памяти их избегают. Да и применений у них, не сказать, чтобы очень много.
В окончании этого урока оставлю вам веселый видос, посвященный проблеме параллельных ивентов в недавнем прошлом, сделанный моим хорошим знакомым, который раньше мукерил, а потом его засосало мещанское болото реала.
Краткий словарь:
RM VX Ace – старый мейкер
Enterbain – компания разработчик мейкера
Не забудьте включить субтитры;)