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

Совет Пара слов про Folia и почему оно вам НЕ НУЖНО!

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Overwrite, 7 мар 2024.

Метки:
  1. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Начну с того, что вообще меня навело на написание данного текста.

    Большинство людей как выясняется на практике - совершенно не понимают принципа работы Folia и того при каких обстоятельствах данное ядро может быть полезно. За частую люди ограничены простым утверждением на вроде "многопоток = лучше" и "написано производительность - значит поставлю и будет круто лагов не будет". Однако это в корне неверное утверждение и ниже я попытаюсь доступ объяснить неправильность подобных утверждений и показать почему ЛИЧНО ВАМ Folia уж точно не требуется.

    Для начала стоит понять как данное ядро вообще работает и т.к. большинству людей просто западло читать весь текст с оф.страницы - опишу это просто и понятно:
    Обычный Paper имеет 1 главный поток, в котором протекает основная активность сервера т.е. весь мир (распространение травы, физика блоков), все сущности (спавн мобов, ии мобов), игроки (ломание блоков, команды), эффекты (партиклы) и т.п. и вместе с этим также существуют параллельные основному потоку (тоесть асинхронные) таски, по типу света, загрузки чанков, сохранения файлов (в новых версиях) и т.п. и все данные параллельные (или же асинхронные) таски зачастую синхронизируются с основным потоком, чтобы все действия на сервере работали корректно. (хотя на самом деле это не совсем так работает и всё немного сложнее, но мы упростим это для банального понимания)
    В Folia мы имеем что-то на вроде такого, однако там основного потока с которым бы синхронизировались бы все параллельные таски нет, вместо этого мы имеем множество таких "псевдо-основных" потоков каждый из которых действует параллельно и выполняет все задачи которые выполняет основной поток. И все асинхронные таски которые были в paper также есть в folia и работают они практически также как и в paper, за исключением того, что если ранее они синхронизовались с основным потоком - то теперь они синхронизуются со всеми "псевдо-основными".

    Итак, когда мы примерно поняли как это работает - давайте поймем ЗАЧЕМ оно так работает.
    Чтожь, тут нужно понять что есть tps и mspt и при чем тут лаги. Далее пойдет объяснение, которое вы можете увидеть в документации spark.
    TPS - тики в секунду
    MSPT - милисекунда за тик
    Тикрейт майнкрафта - 20 т.е. 20 тиков в секунду. Отсюда максимальный MSPT для корректной работы сервера = 50мс (50мс*20 = 1 секунда)

    Когда мы знаем эти вводные - давайте поймем как работают лаги. Да, лаги бывают разные.
    За частую все думают что низкий TPS = лаги, а 20 tps - всё хорошо, но это не совсем так.
    Суть в том, что когда ТПС не 20 - то МСПТ - больше 50 на столько, что 20 тиков в секунду просто не влезает. Однако, бывают и ситуации когда тпс 20, но лаги всё равно заметны. Почему так? По тому что если вдруг какой-то тик занял более 50 мс, но остальные заняли меньше 50мс (как за частую бывает, ведь на практике не каждый тик достигает даже 20мс) то сервер может вместить в себя 20 тиков не смотря на то, что один из них - не нормален.
    И теперь, зная уже всё это - нужно понять, что если основной поток должен выполнить задачу - он её выполнит и только потом пойдет дальше. И если тик занимает 100 мс - эти 100 мс сервер будет ждать эти 100 мс для того чтобы работать дальше. Это мы лагами и называем.

    И теперь, наконец мы можем переходить к фолии.
    Как мы знаем - в фолии основного потока нет, а если его нет, но есть множество "псевдо-основных" - подумайте, что будет, если вдруг сервер решит залагать. Ответ - лаги будут только в том "псевдо-основном" потоке, в котором есть то, что может его нагрузить.
    И в этом и есть вся суть Folia - сделать так, чтобы лаги в их привычном виде не существовали. Эти самые "псевдо-основные" потоки можно представить в виде разных серверов. Представьте, что они независимы. Если залагает один сервер - второй, что логично - не залагает. Также и с регионами, у них также есть свой TPS и если какой-то из регионов лагает - остальные живут спокойно.

    Так почему же в таком случае это ядро не будет правильным выбором для создания сервера? Ну тут всё достаточно просто и описывается по сути одной фразой - ПОТОКИ НЕ БЕСПЛАТНЫЕ. Хотя есть и ряд других причин.
    Разберем по пунктам, какие недостатки в использовании folia вместо обычного paper:
    1) Невероятное потребление памяти. Каждый поток требует определенного объема памяти для хранения своего состояния (стек вызовов, локальные переменные и т.п.) Чем больше потоков, тем больше памяти будет использоваться. Следовательно folia будет требовать как минимум в 3 раза больше памяти чем такой же сервер на Paper.
    2) Синхронизация. Когда несколько потоков обращаются к общим ресурсам или данным, необходимо управлять доступом к этим ресурсам, чтобы избежать состояний гонки и других проблем согласованности данных. А также стоит вспомнить те самые асинхронные таски, которым необходимо теперь синхронизироваться со всеми "псевдо-основными" потоками, вместо одного. Т.е. на выходе мы имеем куда большее потребление ресурсов процессора.
    3) Сломанное API. Folia хоть и может поддерживать плагины, однако некоторые корневые механики, связанные с шедулерами и взаимодействие с ентити и миром (тот же player scheduler) просто не позволят запустить на вашем сервере большинство публичных плагинов.
    4) Отсутствие регулярных обновлений. Это ядро обновляется хорошо если раз в месяц, что делает его немного так уязвимым в случае нахождения новых краш-эксплоитов и т.п.

    Таким образом вместо ядра с "невероятной производительностью", как вы могли бы подумать увидев слово многопоток, вы получаете только большее потребление ресурсов и в добавок еще и отсутствие поддержки как плагинов так и регулярных обновлений.

    Тогда зачем ядро Folia существует если оно не даёт производительности? Ответ - если в ваших реалиях оно не даст производительности - оно делалось не для вас.
    Главное преимущество фолии опять же - наличие системы множества "псевдо-основных" потоков или же регионов, что в свою очередь позволяет разместить на одном сервере множество игроков без излишних волнений по поводу производительности, чего не позволяет сделать обычный Paper. Folia нацелена в первую очередь на обеспечение комфортной игры при большом онлайне на одном сервере и речь тут про 200+ человек одновременно, что в целом подразумевает то, что владельцы сервера могут позволить себе оборудование способное полностью невелировать недостатки фолии в плане большего потребления ресурсов, раскрыв его преимущества по полной. Говоря простыми словами - проигрываем в одном, но отыгрываем за счет другого и многократно.

    Таким образом, подводя итог, скажу, что если вы НЕ являетесь невероятно крупным сервером, которому необходимо держать одновременно онлайн под 200+ человек одновременно и вы НЕ имеете достаточно мощного оборудования на котором будет стоять ваш сервер, а также НЕ имеете крупной команды разработчиков, способной переделать плагины под нужды вашего ядра - забудьте про существование Folia, это ядро - не ваш выбор.
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Тему не читал, но вот лично моя рецензия от 14 ноября 2023 года, возможно тоже кому-то пригодится. Важно: проверяйте актуальность информации по приведённым ссылкам, с высокой вероятностью она могла частично устареть.

    Рецензия:

    ***

    Короче с Folia всё не так радужно, как хотелось бы.

    Во-первых, довольно много странных и неприятных проблем в данный момент в гите, например:
    https://github.com/PaperMC/Folia/issues/162

    Во-вторых, обновляется Фолия существенно медленней пейпера. Последний релиз Фолии на текущий момент - 1.20.1, хотя уже почти два месяца как есть более свежие релизы игры.
    Для прода это может быть критично в случае обнаружения каких-то критических багов. Придётся самим фиксить всякий шлак, как на древнем 1.12.2, например.

    В-третьих, разрабы некоторых крупных плагинов по-прежнему не готовы добавлять поддержку Folia из-за постоянных изменений в апи или по другим причинам.

    У ModelEngine поддержки до сих пор нет, ответ разраба от 8 ноября 2023:
    "I dont personally have plans to make it compatible, but someone got in touch with me and is willing to do it. Idk whether theyre serious or not, so its more so just "there was a time we talked about it" :kekw_dog:I dont personally have plans to make it compatible, but someone got in touch with me and is willing to do it. Idk whether theyre serious or not, so its more so just "there was a time we talked about it"

    Oraxen тоже не поддерживает, хотя разраб потихоньку пилит поддержку, но не торопится:
    https://github.com/oraxen/oraxen/pull/1035

    Разраб ItemsAdder пока вообще не горит желанием добавлять поддержку Folia из-за частых изменений в апи:
    https://forum.devs.beer/d/398-future-folia-support-for-itemsadder

    Я из интереса запустил свою собственную сборку, в которой 44 публичных плагина. Из них Фолию поддерживают только 10. Каким-то плагинам, вероятно, нужно просто заменить джарник, но даже в этом случае огромное количество плагинов на Фолии тупо не запустится (сборка у меня не старая, плагины актуальных версий).

    Поэтому пока всё же придётся сидеть на Paper/Purpur/прочих. Folia явно не готова для прода, если админ не собирается абсолютно ВЕСЬ функционал сервера писать самостоятельно
     
  3. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Ну практически то же про что я и говорил
     
  4. Nestyreff

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

    Баллы:
    66
    Имя в Minecraft:
    MassonNn
    Так параллельные или асинхронные? Как бы разные вещи, работающие в корне по разным механизмам.

    А что в случае серверов бесплатно? Нагрузка всегда будет стоить денег. Другой вопрос какой прирост производительности даёт расширение на многопоточность. Согласен с мыслью, что большинству начинающих серверов это не даст никакого прироста. Впрочем, как и любые другие методы масштабирования.

    Не совсем понятно откуда эта мысль вообще взялась, и почему именно в 3 раза?

    Ну или можно просто не делать такие крупные сервера, поскольку это ни с точки зрения чата, ни с точки зрения комфорта игры неприятно самим же игрокам. Все крупные сервера держат сотни мелких в прокси связке, где на каждом сервере <100 онлайна. Взять тот же хайпиксель, где даже одно лобби будет представлено в 100 экземплярах, чтобы "не дай бог" там не было больше 100 онлайна. Так что вопрос: а кому вообще нужна эта фолия? Если сервер слишком большой, то его следует делить (и не только по соображениям лагов). Если сервер недостаточно большой, его не следует ставить на многопоток...

    Статья в целом полезная, автору респект.
     
  5. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    На самом деле из личного опыта, точечных замеров не делал

    хмм... Всё таки наверное лучше было бы реально сказать параллельными
     
  6. MrJarousek

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

    Баллы:
    76
    Имя в Minecraft:
    RitaSister
    Нужна будет более подробная информация об фолии? Пользуюсь уже с 07.01.2024 более активно
     
  7. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Ну давай, посмотрим что у нас с этой штукой случилось
     
  8. MrJarousek

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

    Баллы:
    76
    Имя в Minecraft:
    RitaSister
    куда тебе написать текст лучше?
     
  9. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Да сюды, шобы все знали что там да как
     
  10. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Достаточно крупный AresMine перешёл на Folia совсем недавно. Есть сложности, есть баги ядра, но в целом всё работает. Но там и публичных плагинов минимум, поэтому добавление поддержки Folia вышло немногим дольше месяца.
    Тянут пока стабильно 300 человек на одном сервере. Постепенно будут повышать максимальный онлайн
     
  11. MrJarousek

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

    Баллы:
    76
    Имя в Minecraft:
    RitaSister
    По поводу ядра Folia, ядро классное если разбираешься немного в программировании и сможешь в соло адаптировать любой плагин на фолию, хоть на костылях или полностью. но чтобы первое время работало.

    По поводу производительности - это правда, дважды выдержало около 40 онлайна в пик на двух разных проектах, а 30 держался онлайн стабильно на протяжении недели-двух. Это при условии что спавн-рейт ванильный, ванильные механики на месте. Так как данные проекты нацелены как "Приватный и ванильный сервер", то и требования конечно поменьше, но и меньше нужных плагинов отсутствуют. Вот мне нужно было обновить Essentials, FoliaWorldLoader, PlaceholderAPI и мне это удалось решив некоторые проблемы в коде, плагины теперь работают на версии Folia 1.20.6 на моём нынешнем существующем проекте.

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

    По поводу сказаных @Dymeth багов в ядре - это правда, но и если находятся эти критические, либо которые крашат сервер не давая попросту играть, на PaperMC автор Spottedleaf довольно быстро фиксит ошибки ядра если зарепортить им об ошибке.
     
  12. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Мне кажется что люди в большей массе не готовы к по настоящему ванильному спавн рейту...
     
  13. MrJarousek

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

    Баллы:
    76
    Имя в Minecraft:
    RitaSister
    о даа, но некоторые всё же готовые к такому и привыкают)
     
  14. Hlebuw3k

    Hlebuw3k Ньюби

    Баллы:
    1
    Сервер не может быть назван ванильным если вы используйте Bukkit, Spigot, Paper, или любое что берет от них корни. Они меняют механики игры без уведомления вас об этом, и вам придётся самим выискивать проблемы в коде и заново переписывать для каждой несостыковкой с ванильной игрой. Если действительно требуется сохранение ванильных механик игры на приватном сервере для небольшого количества игроков, то лучше всего подходит либо само ванильное ядро, или Fabric, потому-что на него можно ставить моды не нарушая совместимость с ванилой.
     
  15. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    нет. нельзя.
    клиентские моды - да, они могут не менять ванильные механики, но моды добавляющие хоть что-то неванильное (даже команды) - это уже НЕ ванила
     
  16. Hlebuw3k

    Hlebuw3k Ньюби

    Баллы:
    1
    да. можно. Есть моды которые добавляют механики со стороны сервера, разрешая игрокам заходить с ванильного клиента, и более ничего не меняя. Например можно добавить команды /home и /spawn, или мод lithium который оптимизирует игру на пару с тем-же Paper а иногда даже лучше, при этом не ломая никаких ванильных механик как делает ядро Paper.
     
  17. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    (А ты код этого литиума то смотрел? Ну вот чисто поржать, как он это всё оптимизирует чтобы вот такое вот заявлять?)
     
  18. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Хом и спавн есть в ванильном сингл плеере?
    Нет, его там нет.
    Вывод - сервер НЕ ванила.
    Вопросы?
     
  19. Hlebuw3k

    Hlebuw3k Ньюби

    Баллы:
    1
    Мне не нужно смотреть код, когда на практике с тестами все видно. Загрузил одинаковый мир на два сервера, один с ядром Paper, другой Fabric с модом Lithium. На Paper четверть ферм на разные предметы сломалась, в том числе любые которые используют TNT-дюперы что-бы ломать сгенерированные фермой блоки такие как булыжник и дерево. На Fabric все работает и MSPT плюс-минус неотличим. Суть в том, что любые плагины которые можно установить на Paper, не отменят факт что ядро само по себе ломает механики игры, и их можно заменить модами на Fabric.
     
  20. Автор темы
    Overwrite

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

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Про корабль тесея слышал?

    Если мы из ванилы вытащим стандартный патхс файндер и заменим его на систему с литиума - это будет ванила?

    А если любую другую механику?

    На каком моменте ванила перестаёт быть ванилой?
     

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