Страница 19 из 19 ПерваяПервая ... 9171819
Показано с 181 по 189 из 189

Тема: Мастера мэйкера

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Я вспомнил, что хотел после "тетриса" сделать одну штуку.
    И вот, захода этак с (двадцать)третьего, получилось.

    "Match-3", они же 3-в-ряд.
    На MZ, без плагинов.

    Спойлер Как это выглядит (страшно, вырубай!):




    Ссылки на демку внизу, туториала не будет.
    Логику, как и в случае с Breakout, брал не из головы - а вот из этого туториала:
    https://rembound.com/articles/how-to...h-html5-canvas
    Натянуть на мукер это дело было не так уж и просто. =/

    Управление:
    Перемещение "курсора" - стрелки.
    Подтверждение выбора - Enter.
    Просмотр очков / сброс игрового поля / выход - ESC.
    Мышка не поддерживается!

    В процессе я узнал несколько интересных вещей о мукере, которых не знал:
    1. В "примечании" эвента (вероятно, не только эвента) можно хранить объект и динамически изменять его свойства - это удобно, чтоб не зависить от локальных переключателей.
    2. Функции тоже можно хранить в переменных (что логично) - получается такой себе "распиленный" плагин...что при реализации мной активно использовалось.

    Не обошлось и без недостатков:
    1. Багует при открытии меню / дебаг-меню - вероятно, это можно исправить плагинами, но...
    2. Не проверяется "тупиковое" положение поля - может возникнуть ситуация, что двигать то и нечего (тогда ESC и сбрасывайте игровое поле).
    3. Нет анимации "уничтожения" совпаших блоков, вообще никакой - только тихий звук.
    4. Блоки, которые были над "уничтоженными", не сдвигаются вниз - вместо пропавших блоков просто генерируются новые.
    5. Может быть не совсем корректный подсчет очков.
    6. Управление поддерживается только клавиатурой.
    7. Это не готовая боевая система (как было у Петра и VarVarKи или как в Puzzle Quest), а прототип с основной механики - монстров, AI, скилов, манны с ХП и подобного тут нет!

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

    Если будете ковырять, в демке используются 20 переменных (с 121 по 140) и 4 переключателя (с 81 по 84).
    Также в демке 6 типов блоков (разные цвет/графика и начисляемые очки), но их количество может быть любым.
    При сбросе игрового поля обнуляются все очки.

    Спойлер Ссылки на загрузку, версия 1.0.0:


    P.S:
    Графика "ствелячков" - реколор RTP от Meep007 с офф. форума.
    Последний раз редактировалось Darchan Kaen; 16.03.2022 в 23:18. Причина: Еще один важный минус

  2. #2
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

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

    Код не "сжат", может не влезть в Скрипт в таком виде - строки сжимайте как вам удобно.
    Код не совершенен, может бажить если у вас много (200+) эвентов на карте - использование на ваш страх и риск. =)
    Ну и в целом тут много нюансов, но в своей игре я использую данный вариант и "оно почти работает"(с)
    Код:
    let eventToCloneId = A;
    let cloneInCoordX = B;
    let cloneInCoordY = C; 
    let cloneInDirection = D;
    let eventToCloneData = $dataMap.events[eventToCloneId];
    let clonedEventData = {...eventToCloneData};
    let newId = eventToCloneId + Math.floor(Math.random() * E + F);
    if($dataMap.events.length < newId){
      $dataMap.events.length = newId;
    }
    $dataMap.events[newId] = clonedEventData;
    let clonedMapEvent = new Game_Event(this._mapId, clonedEventData.id);
    clonedMapEvent._direction = cloneInDirection;
    clonedMapEvent.locate(cloneInCoordX, cloneInCoordY);
    $gameMap._events.push(clonedMapEvent);
    $dataMap.events[$dataMap.events.length - 1].id = newId; 
    $gameMap._events[$gameMap._events.length - 1]._eventId = newId;
    SceneManager._scene._spriteset.createCharacters();
    где:
    A - номер (id) эвента, который нужно клонировать;
    B - координата X, в которую нужно поместить склонированный эвент;
    C - координата Y, в которую нужно поместить склонированный эвент;
    D - направление взгляда склонированного эвента(2 - низ, 4 - лево, 6 - право, 8 - верх);
    E - максимальный номер нового Id склонированного эвента;
    F - минимальный номер нового Id склонированного эвента.


    Кроме этого, на "соседнем" форуме Alx_Yago напомнил интересную возможность - использовать "Выбор предмета" как выбор в диалоге.
    Немного поэкспериментировав, я понял как можно использовать такую функцию еще чуть удобнее (хотя удобство и спорно, но тем не менее).

    Можно в Примечании "диалогового" предмета писать текст, потом его скриптом считывать и записывать в переменную мейкера, после чего текст этой переменной выводить в сообщении (\V[N]). Или использовать как-то иначе.
    Но такой способ не поддерживает "специальные символы" мейкера - иконки, цвета текста, размер текста итд.
    Спойлер Скрипт для считывания Примечания предмета с записью в переменную, для MV и MZ:

    Код:
    let itemIndex = $gameVariables.value(M);
    let item = $dataItems[itemIndex];
    let itemText = item.note;
     
    $gameVariables.setValue(N, itemText);
    или одной строчкой
    Код:
    $gameVariables.setValue(N, $dataItems[$gameVariables.value(M)].note);
    где:
    M - номер переменной, в которую сохраняется результат Выбора предмета;
    N - номер переменной, в которой будет храниться текст Примечания выбранного предмета
    В результате в сообщении пишем \V[N], и мукер автоматически в текст вставляет значение переменной.

    Может кому-то пригодится.
    Последний раз редактировалось Darchan Kaen; 26.03.2022 в 17:52. Причина: Таки много нюансов в копировании...

  3. #3
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,283
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

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

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

    Я то уже делал боевки, еще с хр, но они получались какие-то не очень, в итоге игр на них не сделал.

  4. #4
    Познающий Аватар для KARAKURT
    Информация о пользователе
    Регистрация
    11.05.2008
    Сообщений
    292
    Записей в дневнике
    5
    Репутация: 8 Добавить или отнять репутацию

    По умолчанию

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

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

    Я то уже делал боевки, еще с хр, но они получались какие-то не очень, в итоге игр на них не сделал.
    JABS - J's Action Battle System
    Active Battle System (AABSZ)

    Там у авторов в документации всё рассказано.

  5. #5
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,283
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Спасибо старый друг. Позже изучу.

  6. #6
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Может кому-то пригодится - как изменить игровые настройки изнутри игры вызовом Скрипта (громкость, бег, итд).
    Как минимум, можно троллить игрока (но зачем?).
    Для MZ, но на MV тоже работает.

    Спойлер код:

    Код:
    ConfigManager.alwaysDash = a;
    ConfigManager.commandRemember = a;
    ConfigManager.touchUI = a;
    ConfigManager['bgmVolume'] = b;
    ConfigManager['bgsVolume'] = b;
    ConfigManager['meVolume'] = b;
    ConfigManager['seVolume'] = b;
    где:
    a - значение true или false
    b - число от 0 до 100.

    ...но есть нюанс.
    Если менять такой командой скрипта touchUI, то иконка-"гамбургер" меню остается
    на экране до любой смены сцены. Как вариант, можно в скрипте дописать SceneManager.goto(Scene_Map); - это принудительный "телепорт" на ту же карту в ту же точку, как я понял...и происходит затемнение-просветление экрана.
    На MV такого нюанса нет, так как нет самого touchUI.
    Последний раз редактировалось Darchan Kaen; 28.07.2022 в 18:35. Причина: На MV тоже работает

  7. #7
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,283
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Я разрабатывая боевку, как писал выше. Вот может пригодится (для прописывание в команде выполнить скрипт).

    Код:
    //условие если событие смотрит 
    if ($gameMap.event(a).direction() == b) {
    
    }
    a - номер инвента
    b - направление
    
    2 - вниз
    4 - влево
    6 - вправо
    8 - вверх
    Очень полезно, если у вас есть какой-то алгоритм (к примеру в забит в общем событии) и вам надо с разными событиями использовать. Я к примеру использую в алгоритме боевки. Вместо a пишу $gameVariables.value(61), где число 61, это переменная 61 игровая. Теперь при входе на карту передаю номера событий и вызываю алгоритм.

    Так же вот такая конструкция.
    Код:
    $gameVariables.setValue(62,$gameMap.event($gameVariables.value(61)).x) 
    $gameVariables.setValue(63,$gameMap.event($gameVariables.value(61)).y)
    $gameMap.event.x и $gameMap.event.у это координаты события. Запись $gameVariables.setValue(62,$gameMap.event.x) равносильно команде когда вы присваиваете переменной 62 координату х события 61. А вся запись позволяет вам сделать ваше общее событие (алгоритм) универсальным. Описал выше.

  8. #8
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,283
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

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

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

Страница 19 из 19 ПерваяПервая ... 9171819

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Мастера  мэйкера