Войти на сайт

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

ТЕМА: RMMV NPC Go

RMMV NPC Go 4 года 5 мес. назад #117926

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • Учитель2 место Программист JavaScript Организатор конкурсовОраторДаритель Стимкея
Всем привет! Поскольку выдалось немного свободного времени, и меня обуяло жуткое желание творить, на свет появился мой очередной плагин «NPC Go». :blush:

Идея создания данного плагина возникла из просьбы @Reynor, сделать возможным движение персонажа (события) к определенным координатам. Более подробно мы обсуждали сам механизм&логику в соответствующей теме, но предложенный мной там вариант использования плагина GALV «MV Move Route Extras», на практике оказался не очень хорош в построении пути. В результате чего персонажи могли «спотыкаться» и стоять на месте. Единственный вариант было включить режим «прохождения», но тогда персонажи начинали ходить через стены, озёра итд *facepalm*

Мне очень сильно захотелось исправить сие недоразумение :wall:


1-29.png



Немного теории. Нахождение кратчайшего пути, как оказалось это классическая задачка,аж из того ещё века. Алгоритмов есть несколько, мной был выбран алгоритм «A*» (A star). Поскольку времени всё-таки не много свободного и задача написать свой алгоритм не стояла, то мной было честно предпринята попытка слямзить готовый результат, а именно за авторством Brian Grinstead — «javascript-astar».

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

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

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


2-20.png



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

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

Есть указать true для восстановления, то после того как персонаж придёт на новое место ему будут восстановлены все предыдущие параметры.

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

Вот такой вот получился плагин. :blush:

Если кому что-то не понятно, ссылка на готовый (настроенный) проект.

Ну а сам плагин как всегда доступен на моём github.

p.s. Не смотря на то, что сам плагин имеет лицензию BSD-3 (и свободно может применяться как в бесплатных, так и в коммерческих проектах), тут таки используется чужой код под лицензией MIT, так что будьте аккуратны при использовании в коммерческих проектах, а то вдруг возникнут вопросы :unsure:

p.p.s. Небольшая демонстрашка, как это всё работает:

Последнее редактирование: 4 года 5 мес. назад от Mur.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, AnnTenna, ZX_Lost_Soul, MsPeach, Leprikon01, Демий, Jas6666, tvorimvsevmeste, Cabbit, VarVarKa и еще 11 пользователей

RMMV NPC Go 4 года 5 мес. назад #117930

  • Iq54
  • Iq54 аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 82
  • Спасибо получено: 99
  • Проект месяца 3 место
Это супер крутой и нужный плагин (ง ื▿ ื)ว.
Попадись бы мне он раньше и я бы не страдал так сильно программируя тысячи NPC в ручную.
Но думаю что руки до проекта с этим плагином у меня когда-нибудь доберутся.

Ещё бы и Stealth систему хорошую кто сделал вообще бы сказка была.

Низкий поклон. (◉Θ◉)... сэр...
Последнее редактирование: 4 года 5 мес. назад от Iq54.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, Mur, VarVarKa

RMMV NPC Go 4 года 5 мес. назад #117934

  • Event1
  • Event1 аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 55
  • Спасибо получено: 72
  • Проект месяца 1 местоПроект месяца 3 место
Большое спасибо. Отличная работа. Это супер-нужный плагин :-)


P.S. Ну а на стелс систему ведь есть плагины, от Янфлая например. У меня он в проекте стоит и прекрасно работает.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Mur

RMMV NPC Go 4 года 5 мес. назад #117936

  • Reynor
  • Reynor аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 45
  • Спасибо получено: 21
Низкий поклон Вам сударь! Вы убрали мою головную боль, которая длилась 4 суток... Это превосходная работа! Не найти больше подходящих слов благодарности! СУПЕР!!! :whistle:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Mur

RMMV NPC Go 4 года 5 мес. назад #117946

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • Учитель2 место Программист JavaScript Организатор конкурсовОраторДаритель Стимкея
Iq54 пишет:
Это супер крутой и нужный плагин (ง ื▿ ื)ว.

Спасибо на добром слове, всегда прятно слышать, что твоя работа кому-то пригодилась :blush:

Iq54 пишет:
Попадись бы мне он раньше и я бы не страдал так сильно программируя тысячи NPC в ручную.

Ну всегда есть повод сделать что-то ещё новое :S

Iq54 пишет:
Но думаю что руки до проекта с этим плагином у меня когда-нибудь доберутся.

Ждём с нетерпением новых работ! :woohoo:

Iq54 пишет:
Ещё бы и Stealth систему хорошую кто сделал вообще бы сказка была.

Ох! Вот тут сходу точно ничего не буду обещать, возможно уже что-то есть подобное.

Iq54 пишет:
Низкий поклон. (◉Θ◉)... сэр...

(""\(⌒ ᴥ ⌒)/"")

Event1 пишет:
Большое спасибо. Отличная работа. Это супер-нужный плагин :-)

Отрадно слышать! :whistle:

Reynor пишет:
Низкий поклон Вам сударь!

:cheer:

Reynor пишет:
Вы убрали мою головную боль, которая длилась 4 суток... Это превосходная работа! Не найти больше подходящих слов благодарности! СУПЕР!!! :whistle:

Всегда интересно попробовать что-то новое :whistle:
Последнее редактирование: 4 года 5 мес. назад от Mur.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, Event1, Iq54

RMMV NPC Go 4 года 2 мес. назад #119735

  • tvorimvsevmeste
  • tvorimvsevmeste аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 250
  • Спасибо получено: 50
Уважаемый Мур! Ваш плагин — это то что так необходимо было исправить в RPG Maker! :whistle:
Перенесёте ли Вы его в MZ ? Есть ли у Вас это в планах???
Поживем — увидим,
доживем — узнаем,
переживем — научимся…
Администратор запретил публиковать записи гостям.

RMMV NPC Go 4 года 2 мес. назад #119737

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 544
  • Проект месяца 3 местоПроект месяца 1 местоВетеранУчительПроект года 3 местоПроект месяца 2 место
Кстати да. Будет ли портирован на MZ и еще предложу добавить возможность также движения игрока. И естественно переделать под систему новых команд плагинов.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.242 секунд