- Сообщения
- 580
- Решения
- 27
- Другие ядра
- Другое
Bukkit головного мозга
Сервер Minecraft у многих ассоциируется с Bukkit API, плагинами и YAML-конфигурацией; с цветным информированным ТАБом и блевотно мигающим скорбордом; с игроками, донатом и разными плюшками; с техническими ограничениями или возможностями; с удачными и не очень форками; с лагами на новых версиях, а у разработчиков может быть еще и с пакетом
А с чем у Вас ассоциируется словосочетание "сервер с модами"? Лично у меня это обычно что-то старое, гарантированно использующее лаунчер, сайт, сервер с относительно небольшим онлайном. Типичный Hi-Tech 1.7.10. Ну или 3D-оружия, зомби, аптечки... понятно к чему я клоню. То есть обычный "сервер с модами" обязательно должен загружать что-то игроку дополнительно, обычно это моды, пару ресурспаков и конфигурации. Но фактически, сервера с модами могут иметь только серверные моды и совершенно не взаимодействовать с клиентом. Неожиданно, правда?
Bukkit существует уже очень давно — 8 или 9 лет. За это время он очень хорошо успел обрасти плагинами, аудиторией, бесконечными туториалами по настройке, уроками по написанию плагинов и просто получить репутацию хорошего ядра. Единственного хорошего ядра. Какие есть конкуренты у Bukkit? API, заточенные чисто под сервера:
Так или иначе, мы видим что кроме Bukkit у нас ничего особо и нет. Мы говорим что Bukkit плохой, что md5 творит бред в коде, что сервера тормозят, особенно на новых версиях, что API инвалидное и некоторые вещи можно переделать, но мы продолжаем использовать Bukkit. Даже наш форум ориентирован на Spigot (тот же Bukkit, вид сбоку). Мыши плакали, кололись, но продолжали жрать кактус.
md5, что ты творишь?
Но что тогда?
Существуют API для моддинга, и использовать моды вместо плагинов не такая уж и плохая идея, ибо плагины и являются модификациями для серверов. Вот только с самими API есть некоторые проблемы. Как минимум, они не привычны в использовании.
Forge. Одно из старых, но проверенных API. Все, что делается в Bukkit, можно сделать и в Forge, ибо оба API так или иначе всего лишь слой над ванильной игрой, упрощающий взаимодействие с ней. Вместе с этим, Forge сложнее все таки сложнее, тяжелее в плане понимания, на одни только сервера особо не ориентирован. Лично я не вижу смысла писать на более сложном API, требующем немало вычислительных ресурсов какой-нибудь плагин авторизации или что-то вроде того. Это еще больший мазохизм.
Тогда можно использовать Fabric. В чем преимущества Fabric перед Forge? Ну, как минимум:
И все же, я считаю Fabric достойным кандидатом. Нужно лишь упростить работу с некоторыми вещами, добавить привычные события (не в плане реализации, а сами события - BlockInteractEvent например), поработать с некоторыми особенностями. Не нужно делать вещей для облегченного создания совершенно новых предметов или блоков, самое важное - сделать переход потенциального разработчика с Bukkit на Fabric более мягким и плавным.
И какие тут преимущества?
На самом деле, их они довольно малы и сомнительны. И в основном они подойдут только разработчикам.
Во-первых, это многообразие API. Когда есть выбор - это хорошо.
Во-вторых, это миксины. Ради них я готов сделать немало. И пусть в некоторых моментах они жутко не удобны, мне чаще кажется что хорошо, что они существуют, ибо эти штуки способны изменить поведение любого класса в игре как нам угодно, а это дает больший контроль над игрой. В Bukkit нам приходится довольствоваться лишь тем, что у нас есть.
В-третьих, больший простор для развития геймплея. Вот тут уже поподробнее.
Допустим, можно написать аналог WorldGuard и использовать его с модами. Получаются приваты и моды, и это не на каком-то там Cauldron на древней версии. Да и банально попробовать Lithium и Phosphor на серверах, т.к. они созданы для наилучшей оптимизации. И это не какие-то форки, зависящие друг от друга, это отдельные моды которые можно в любой момент удалить или установить при необходимости.
Ну и в какой-то степени, это может подойти не столько для привычных сборок серверов которые мы привыкли видеть в интернете, сколько начинающим проектам которые могут написать что-то свое.
Итоги
Что мы имеем?
1) Bukkit сейчас практически нечем заменить, но никто особо и не пытается, и это несмотря на все недовольства ядром. Переписывать его тоже никто не собирается, ибо это тоже не так уж и просто - система хоть и старая, но выглядит стабильно, что-то менять - себе дороже.
2) Помимо Bukkit существуют полумертвые или сырые ядра, которые всерьез использовать пока или уже не стоит.
3) Под рукой мы имеем отличные инструменты, которые было бы неплохо взять на вооружение, но это никому не надо.
Даже если кто-то (может даже с форума) создаст что-то приемлемое и будет поддерживать, надо будет создать аналоги самых необходимых плагинов, затем ждать пока разработчики портируют свои плагины с Bukkit (что может не произойти если ядро не выстрелит), иначе получится что API есть, а оно никому не нужно.
Мне интересно Ваше мнение по этому поводу. А еще мне интересно, чего Вам не хватает в Bukkit, что бы Вы в нем изменили, и что бы Вы хотели видеть в возможном новом ядре?
Сервер Minecraft у многих ассоциируется с Bukkit API, плагинами и YAML-конфигурацией; с цветным информированным ТАБом и блевотно мигающим скорбордом; с игроками, донатом и разными плюшками; с техническими ограничениями или возможностями; с удачными и не очень форками; с лагами на новых версиях, а у разработчиков может быть еще и с пакетом
net.minecraft.server
. Но почему именно так? Что заставляет при слове "сервера" создавать ассоциативные цепи именно с этим всем? Существует ли монополия Bukkit?А с чем у Вас ассоциируется словосочетание "сервер с модами"? Лично у меня это обычно что-то старое, гарантированно использующее лаунчер, сайт, сервер с относительно небольшим онлайном. Типичный Hi-Tech 1.7.10. Ну или 3D-оружия, зомби, аптечки... понятно к чему я клоню. То есть обычный "сервер с модами" обязательно должен загружать что-то игроку дополнительно, обычно это моды, пару ресурспаков и конфигурации. Но фактически, сервера с модами могут иметь только серверные моды и совершенно не взаимодействовать с клиентом. Неожиданно, правда?
Bukkit существует уже очень давно — 8 или 9 лет. За это время он очень хорошо успел обрасти плагинами, аудиторией, бесконечными туториалами по настройке, уроками по написанию плагинов и просто получить репутацию хорошего ядра. Единственного хорошего ядра. Какие есть конкуренты у Bukkit? API, заточенные чисто под сервера:
-
Авторизуйтесь для просмотра ссылок.
-
Авторизуйтесь для просмотра ссылок.
-
Авторизуйтесь для просмотра ссылок.
-
Авторизуйтесь для просмотра ссылок.
Так или иначе, мы видим что кроме Bukkit у нас ничего особо и нет. Мы говорим что Bukkit плохой, что md5 творит бред в коде, что сервера тормозят, особенно на новых версиях, что API инвалидное и некоторые вещи можно переделать, но мы продолжаем использовать Bukkit. Даже наш форум ориентирован на Spigot (тот же Bukkit, вид сбоку). Мыши плакали, кололись, но продолжали жрать кактус.
Вам необходимо зарегистрироваться для просмотра изображений-вложений
md5, что ты творишь?
Но что тогда?
Существуют API для моддинга, и использовать моды вместо плагинов не такая уж и плохая идея, ибо плагины и являются модификациями для серверов. Вот только с самими API есть некоторые проблемы. Как минимум, они не привычны в использовании.
Forge. Одно из старых, но проверенных API. Все, что делается в Bukkit, можно сделать и в Forge, ибо оба API так или иначе всего лишь слой над ванильной игрой, упрощающий взаимодействие с ней. Вместе с этим, Forge сложнее все таки сложнее, тяжелее в плане понимания, на одни только сервера особо не ориентирован. Лично я не вижу смысла писать на более сложном API, требующем немало вычислительных ресурсов какой-нибудь плагин авторизации или что-то вроде того. Это еще больший мазохизм.
Тогда можно использовать Fabric. В чем преимущества Fabric перед Forge? Ну, как минимум:
- Не сильно требовательно использует ресурсы. Fabric сам по себе легкий, ибо является просто загрузчиком модов
- Легкость в написании модификаций, так как тут нет никаких дополнительных прослоек, поэтому если знаешь как работает игра, можно легко и просто реализовать что-то свое. Даже если не знаешь, ответ почти всегда в ванильных классах - множество модов так и пишутся
- Использование Mixins. Можно легко и просто решить множество проблем с помощью миксинов, начиная от оптимизации, и заканчивая изменением поведения игры
- Можно держать сервер на последней версии игры, даже на снапшотах
- Несмотря на второй пункт - бедное API. Событий мало, и основную часть придется реализовать через Mixins, ну или вовсе избегать системы событий и инжектится в методы
- Миксины не так уж и удобны. Обычно использовать их просто, но если я захочу сделать PlayerJoinEvent, то вызов события лучше всего поместить в конструктор PlayerLoginListener (ибо именно в нем происходит вся магия входа), вот только вход игрока находится где-то в середине конструктора, а конструктор этот растянут на ~200 строк. Придется полностью скопировать код конструктора ради пары жалких строчек вызова события в середине
- Система событий не самая удобная. Нет привычных геттеров и сеттеров там, где они могут ожидаться, например getPlayer в каком-нибудь событии чата (которого нет, ха-ха)
- Fabric не имеет и части тех вещей, что есть в Bukkit - таймингов, системы прав, флагов Aikar и прочего
И все же, я считаю Fabric достойным кандидатом. Нужно лишь упростить работу с некоторыми вещами, добавить привычные события (не в плане реализации, а сами события - BlockInteractEvent например), поработать с некоторыми особенностями. Не нужно делать вещей для облегченного создания совершенно новых предметов или блоков, самое важное - сделать переход потенциального разработчика с Bukkit на Fabric более мягким и плавным.
И какие тут преимущества?
На самом деле, их они довольно малы и сомнительны. И в основном они подойдут только разработчикам.
Во-первых, это многообразие API. Когда есть выбор - это хорошо.
Авторизуйтесь для просмотра ссылок.
.Во-вторых, это миксины. Ради них я готов сделать немало. И пусть в некоторых моментах они жутко не удобны, мне чаще кажется что хорошо, что они существуют, ибо эти штуки способны изменить поведение любого класса в игре как нам угодно, а это дает больший контроль над игрой. В Bukkit нам приходится довольствоваться лишь тем, что у нас есть.
В-третьих, больший простор для развития геймплея. Вот тут уже поподробнее.
Допустим, можно написать аналог WorldGuard и использовать его с модами. Получаются приваты и моды, и это не на каком-то там Cauldron на древней версии. Да и банально попробовать Lithium и Phosphor на серверах, т.к. они созданы для наилучшей оптимизации. И это не какие-то форки, зависящие друг от друга, это отдельные моды которые можно в любой момент удалить или установить при необходимости.
Ну и в какой-то степени, это может подойти не столько для привычных сборок серверов которые мы привыкли видеть в интернете, сколько начинающим проектам которые могут написать что-то свое.
Итоги
Что мы имеем?
1) Bukkit сейчас практически нечем заменить, но никто особо и не пытается, и это несмотря на все недовольства ядром. Переписывать его тоже никто не собирается, ибо это тоже не так уж и просто - система хоть и старая, но выглядит стабильно, что-то менять - себе дороже.
2) Помимо Bukkit существуют полумертвые или сырые ядра, которые всерьез использовать пока или уже не стоит.
3) Под рукой мы имеем отличные инструменты, которые было бы неплохо взять на вооружение, но это никому не надо.
Даже если кто-то (может даже с форума) создаст что-то приемлемое и будет поддерживать, надо будет создать аналоги самых необходимых плагинов, затем ждать пока разработчики портируют свои плагины с Bukkit (что может не произойти если ядро не выстрелит), иначе получится что API есть, а оно никому не нужно.
Мне интересно Ваше мнение по этому поводу. А еще мне интересно, чего Вам не хватает в Bukkit, что бы Вы в нем изменили, и что бы Вы хотели видеть в возможном новом ядре?