Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

В разработке [Реализовано] Mimic - API для абстракции RPG плагинов (а-ля Vault)

Статус
Закрыто для дальнейших ответов.

OsipXD

Старожил
Пользователь
Баллы
173
Имя в Minecraft
OsipXD
Доброго времени суток.

Я столкнулся с проблемой, что чтобы сделать в своём плагине поддержку других RPG плагинов (уровни, классы и т.д.), приходится много корячиться. Приходится отыскивать эти плагины (которые могут быть платными) искать для каждого API (которого может не быть). И чтобы этого избежать, я решил написать что-то на подобии Vault.

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


GitHub:
MimicAPI - Собсно API (старался писать всё в JavaDoc комментах, надеюсь всё будет понятно)
Mimic - плагин, содержащий различные реализации, а так же методы для подключения своих реализаций и получения существующих.
(пока что в папках 'levels' и 'classes' не густо. Да и вообще я еще не закоммитил сюда всё что готово на на данный момент)

И еще такой вопрос: очень уж уродливо выглядят классы систем (LevelSystem и ClassSystem) потому что в них во всех используется player. Было бы логично сделать игрока полем класса, но тогда нужно будет делать фабрику, которой на вход будет подаваться игрок, а выплёвывать она будет объект для работы с уровнем/классом/итд этого игрока. То есть получается, что для подключения новой системы к Mimic придется реализовать дополнительно еще и эту фабрику. В общем не знаю как лучше.

P.S. По поводу того, что мой английский ужасен можно не писать, я это знаю.
 
Последнее редактирование:
Мне кажется, что это немного рановато. Пока нет достаточного количества плагинов, чтобы уже для них делать общий api.
Но вот общую базу для этих и будущих плагинов - будет неплохо. Но это много кода.
 
Мне кажется, что это немного рановато. Пока нет достаточного количества плагинов, чтобы уже для них делать общий api.
Но вот общую базу для этих и будущих плагинов - будет неплохо. Но это много кода.
Во многих RPG плагинах есть конфликты систем ХП, уровня классов и кучи всего такого.
А насчет количества плагинов, то сразу могу перечислить следующие:
Races and Classes, Heroes, RPG PlayerLeveling, BattleLevel, SkillAPI, Skills

Кроме того есть куча плагинов, которые используют РПГ инфу и дают различные бонусы статам вроде таких как:
MoreItems, MythicMobs, RPGInventory, всякие плагины на квесты, плагины на гильдии, плагины на пати и т.д.

Но сейчас просто невозможно обеспечить синергию между всеми РПГ плагинами. Поэтому, когда люди заходят на страницу плагина, то сразу же спрашивают, совместим ли он с их плагином на классы и т.п. Если с умом написать этот API всё стало бы сильно легче. Синергия была бы между всеми РПГ плагинами. (Это, конечно, если это начнут использовать).
 
Последнее редактирование:
Во многих RPG плагинах есть конфликты систем ХП, уровня классов и кучи всего такого.
Вот эти системы и стоит унифицировать.
А городить api для ещё больших конфликтных ситуаций слишком мажорно. Пока мажорно.
 
Собственно основная проблема, которая меня на это подтолкнула - ХП.
Я в плагине даю бонус к хп, а потом какой-то чужой плагин тоже даёт бонус, но мы делаем это по разному:
Я: CURRENT_HP + BONUS
Другой плагин: BASE_HP + BONUS
И всё бы хорошо, если сначала начислится бонус другого плагина, а потом мой, но если наоборот, то мой бонус просто не засчитается.
Таким образом мне приходится пилить всякие отложенные таски, чтобы проверять, что мой бонус не затёрли. А это довольно муторно и уныло потому что события изменения ХП не существует, а значит мне надо каждый тик следить за ХП и самому понимать когда его изменил другой плагин, а когда я.
И всё бы хорошо, но когда появляется третий плагин, который вычисляет ХП третьим образом - всё снова ломается.
Вот эти системы и стоит унифицировать.
А городить api для ещё больших конфликтных ситуаций слишком мажорно. Пока мажорно.
Так ведь по идее наоборот конфликтные ситуации уйдут
А что имелось в виду под общей базой?
 
Последнее редактирование:
Что то вроде места, где все бонусы/дебафы учитывались бы от каждого плагина и применялись к игроку.
Вот да, я тоже про это думал, но это и правда, сложнее, и, к тому же, требует вмешательства в код существующих плагинов. Хотя нормальную работу ХП не представляю как иначе сделать.
 
ребует вмешательства в код существующих плагинов.
Написать авторам, дескать, "вот у нас общая либа, с ней все будет гуд, и никто не пострадает. Будет классно, если вы будете юзать её."
 
Написать авторам, дескать, "вот у нас общая либа, с ней все будет гуд, и никто не пострадает. Будет классно, если вы будете юзать её."
Тогда получается, что если кто-то захочет создать новый эффект/стат, то придется модифицировать Mimic? Или запилить хитроумное добавление статов в какой-нибудь регистр? Не выглядит как изящное решение.
 
то придется модифицировать Mimic?
Это всегда будет нужно. Но суть не в том, чтобы использовать mimic для своих поделок как база плагина, а как библиотеку, которая урегулирует статы/абилити с другими плагинами. Т.е. вместо player.setMaxHelath(player.getMaxHealth() + 15F) можно использовать Mimic.increasePlayerHealthValue(player, 15F) . Последнее пример, не более.
 
а как библиотеку, которая урегулирует статы/абилити с другими плагинами
Да, собственно, это и есть цель.
Согласен, что это будет гораздо удобнее и правильнее.
Только с классами всё немного иначе, чем со статами. От них же не просто библиотечный функционал требуется.
Чтобы понять как было бы удобнее поступить с классами, нужно мнение того кто этим занимался.
@baksovic111, призываю тебя
 
Последнее редактирование:
Раньше у меня были идеи и мысли сделать подобное, но потом эта идея отпала из-за многих факторов.

Создать API для RPG плагинов будет очень затруднительно т.к всем разработчикам не угодишь.
Это не Vault где главная цель - это виртуальная валюта.

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

Создать API для RPG плагинов будет очень затруднительно т.к всем разработчикам не угодишь.
Это не Vault где главная цель - это виртуальная валюта.

Это задача реализуемая, но требует очень много времени чтобы продумать все в идеале и решить как угодить всем разработчикам
Если делать как сделано в Vault, то совсем несложно, но если, как сказал Dereku, делать унифицированное управление статами и прочим, то да - сложнее, потому что это большая ответственность.
Я таки решил, что не буду (по крайней мере пока что) брать на себя обязанности других плагинов при работе с классами и уровнями. А вот управление статами взять на себя стоит.
 
Слишком широкий спектр работы из-за сильной кастомизации.
С валютой все просто - одно число, которое можно увеличивать и уменьшать.
А рпг что? В каждом таком плагине уникальная механика классов, статистики, способностей, здоровья и всего прочего. Я даже мысленно не могу структурировать и классифицировать такие вещи, что уж говорить о программной реализации...

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

Но это не точно. На самом деле я просто опасаюсь конкуренции.
Какой конкуренции? :)
А насчёт Vault. Многие, почему-то думают, что Vault - это какая-то хитрая и непонятная система, которая занимается учётом валюты. Заметьте, я не говорю, что вы так думаете, просто сталкивался с этим заблуждением очень часто на этом форуме.
Но Vault вообще не занимается учётом валюты. Более того это совершенно не хитрая и не непонятная система, а всего лишь абстрактный адаптер и набор реализаций этого адаптера для каждого плагина экономики (чем, кстати он меня огорчил. Я - то думал, что реализация адаптеров находится внутри каждого экономического плагина, и автоматически подключаются к Vault при загрузке этого плагина, тогда бы не надо было изменять Vault при добавлении поддержки очередного плагина экономики, хотя это спорный вопрос как лучше сделать).
А теперь насчет RPG. Уровень и опыт, например, точно такие же цифры.

А Heroes чем не апи? На нем можно рисовать свои скилы и тп. Или вам проще провелосипедить?
Я был бы только за, если бы все пользовались только одним Heroes, и делали для него надстройки, но это же невозможно и бредово. Хотя бы потому что у Heroes закрытый исходный код.
 
Какой конкуренции? :)
А насчёт Vault. Многие, почему-то думают, что Vault - это какая-то хитрая и непонятная система, которая занимается учётом валюты. Заметьте, я не говорю, что вы так думаете, просто сталкивался с этим заблуждением очень часто на этом форуме.
Но Vault вообще не занимается учётом валюты. Более того это совершенно не хитрая и не непонятная система, а всего лишь абстрактный адаптер и набор реализаций этого адаптера для каждого плагина экономики (чем, кстати он меня огорчил. Я - то думал, что реализация адаптеров находится внутри каждого экономического плагина, и автоматически подключаются к Vault при загрузке этого плагина, тогда бы не надо было изменять Vault при добавлении поддержки очередного плагина экономики, хотя это спорный вопрос как лучше сделать).
А теперь насчет RPG. Уровень и опыт, например, точно такие же цифры.


Я был бы только за, если бы все пользовались только одним Heroes, и делали для него надстройки, но это же невозможно и бредово. Хотя бы потому что у Heroes закрытый исходный код.
Зачем тебе код то? Если на его апи и так дополнения пишутся.
 
Создавать что-то глобальное, сразу под все плагины будет слишком затратно, +, имхо, весь функционал всё равно не покроешь.Тут выигрывают умные проекты, которые подбирают нужный набор таких плагинов и делают взаимосвязь между ними под себя.
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх