1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем OsipXD, 7 мар 2017.

Статус темы:
Закрыта.
  1. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Доброго времени суток.

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

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


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

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

    P.S. По поводу того, что мой английский ужасен можно не писать, я это знаю.
     
    Последнее редактирование: 7 мар 2017
  2. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
  3. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Мне кажется, что это немного рановато. Пока нет достаточного количества плагинов, чтобы уже для них делать общий api.
    Но вот общую базу для этих и будущих плагинов - будет неплохо. Но это много кода.
     
  4. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Во многих RPG плагинах есть конфликты систем ХП, уровня классов и кучи всего такого.
    А насчет количества плагинов, то сразу могу перечислить следующие:
    Races and Classes, Heroes, RPG PlayerLeveling, BattleLevel, SkillAPI, Skills

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

    Но сейчас просто невозможно обеспечить синергию между всеми РПГ плагинами. Поэтому, когда люди заходят на страницу плагина, то сразу же спрашивают, совместим ли он с их плагином на классы и т.п. Если с умом написать этот API всё стало бы сильно легче. Синергия была бы между всеми РПГ плагинами. (Это, конечно, если это начнут использовать).
     
    Последнее редактирование: 8 мар 2017
  5. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вот эти системы и стоит унифицировать.
    А городить api для ещё больших конфликтных ситуаций слишком мажорно. Пока мажорно.
     
  6. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Собственно основная проблема, которая меня на это подтолкнула - ХП.
    Я в плагине даю бонус к хп, а потом какой-то чужой плагин тоже даёт бонус, но мы делаем это по разному:
    Я: CURRENT_HP + BONUS
    Другой плагин: BASE_HP + BONUS
    И всё бы хорошо, если сначала начислится бонус другого плагина, а потом мой, но если наоборот, то мой бонус просто не засчитается.
    Таким образом мне приходится пилить всякие отложенные таски, чтобы проверять, что мой бонус не затёрли. А это довольно муторно и уныло потому что события изменения ХП не существует, а значит мне надо каждый тик следить за ХП и самому понимать когда его изменил другой плагин, а когда я.
    И всё бы хорошо, но когда появляется третий плагин, который вычисляет ХП третьим образом - всё снова ломается.
    Так ведь по идее наоборот конфликтные ситуации уйдут
    А что имелось в виду под общей базой?
     
    Последнее редактирование: 8 мар 2017
  7. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Что то вроде места, где все бонусы/дебафы учитывались бы от каждого плагина и применялись к игроку.
     
  8. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Вот да, я тоже про это думал, но это и правда, сложнее, и, к тому же, требует вмешательства в код существующих плагинов. Хотя нормальную работу ХП не представляю как иначе сделать.
     
  9. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Написать авторам, дескать, "вот у нас общая либа, с ней все будет гуд, и никто не пострадает. Будет классно, если вы будете юзать её."
     
  10. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Тогда получается, что если кто-то захочет создать новый эффект/стат, то придется модифицировать Mimic? Или запилить хитроумное добавление статов в какой-нибудь регистр? Не выглядит как изящное решение.
     
  11. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Это всегда будет нужно. Но суть не в том, чтобы использовать mimic для своих поделок как база плагина, а как библиотеку, которая урегулирует статы/абилити с другими плагинами. Т.е. вместо player.setMaxHelath(player.getMaxHealth() + 15F) можно использовать Mimic.increasePlayerHealthValue(player, 15F) . Последнее пример, не более.
     
  12. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Да, собственно, это и есть цель.
    Согласен, что это будет гораздо удобнее и правильнее.
    Только с классами всё немного иначе, чем со статами. От них же не просто библиотечный функционал требуется.
    Чтобы понять как было бы удобнее поступить с классами, нужно мнение того кто этим занимался.
    @baksovic111, призываю тебя
     
    Последнее редактирование: 8 мар 2017
  13. baksovic111

    baksovic111 Активный участник Пользователь

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

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

    Это задача реализуемая, но требует очень много времени чтобы продумать все в идеале и решить как угодить всем разработчикам
     
  14. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Если делать как сделано в Vault, то совсем несложно, но если, как сказал Dereku, делать унифицированное управление статами и прочим, то да - сложнее, потому что это большая ответственность.
    Я таки решил, что не буду (по крайней мере пока что) брать на себя обязанности других плагинов при работе с классами и уровнями. А вот управление статами взять на себя стоит.
     
  15. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А это и есть основной спектр рпг плагинов.
    Классы - слишком высоко планку задрал. А уровни плагины сами посчитают.
     
  16. Dymeth

    Dymeth Активный участник Пользователь

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

    Но это не точно. На самом деле я просто опасаюсь конкуренции.
     
  17. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    А Heroes чем не апи? На нем можно рисовать свои скилы и тп. Или вам проще провелосипедить?
     
  18. Автор темы
    OsipXD

    OsipXD Старожил Пользователь

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

    Я был бы только за, если бы все пользовались только одним Heroes, и делали для него надстройки, но это же невозможно и бредово. Хотя бы потому что у Heroes закрытый исходный код.
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Зачем тебе код то? Если на его апи и так дополнения пишутся.
     
  20. AtomicInteger

    AtomicInteger Активный участник Пользователь

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

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