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

Глобальное потемпление в майнкрафт

Тема в разделе "Запросы на разработку плагинов", создана пользователем Ynovka, 30 ноя 2022.

  1. BDMan

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

    Баллы:
    76
    Имя в Minecraft:
    CKATEPTb
    В реализации такого есть значимый недостаток. Если изменять чанк (даже если изменить один блок в чанке) асинхронно, например с помощью FasyAsyncWorldEdit или AsyncWorldEdit, все игроки находящиеся в изменяемом чанке станут невидимыми для других игроков. Это проблема клиента и самый простой способ исправить это вызвать перезагрузку мира для игроков, т.е. они увидят экран загрузки. Самым правильным решением данной задачи было разбивать высушивание блоков следующим образом. В отдельном потоке за тик собрать N'ое кол-во блоков и на следующий синхронный тик разбить собранные блоки на очередь, делая replace синхронно, пока очередь не останется пустой. Но это все равно не малая нагрузка для сервера, которую можно уменьшить если не применять физику к блокам, в прочем этого все равно будет недостаточно для онлайна свыше 30.

    UPD. Более того, в новых версиях FAWE реализация EditSession ведет себя очень (ОЧЕНЬ) не предсказуемо. В каких-то моментах в одну сессию лучше запихнуть как можно больше изменений. В каких-то моментах лучше разбить множество изменений на несколько EditSession. В любом случае - реализовать можно с помощью реактора, описывая логику publisher'ов с таймаутами и параллельной итерацией очереди. Только вот кодеров которым знакомо понятие реактивное программирование в майне не много и привлечь их без бюджета у тебя не получится.

    У меня у самого сейчас проект на паузе, который позволяет работать с блоками не из главного потока. Когда разберусь с основной работой и доделаю реализацию ThreadSafeBlockPlacer, оставлю репозиторий, если конечно не забуду.
     
  2. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    "Глобальное потемпление в майнкрафт" — прекрасный пример творческого подхода к апокалипсису. И потемнение, и потепление одновременно :thumbsup:
     
  3. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Почему асинхронная установка блока на сервере приводит к проблемам на клиенте? Тики на сервере и на клиенте не синхронизированы и никак не влияют друг на друга.
    Или при такой операции сервер отправляет некорректные данные?
     
  4. BDMan

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

    Баллы:
    76
    Имя в Minecraft:
    CKATEPTb
    Проблемы скорее у Fawe. Не изучал почему так происходит, однако проблема была актуальна для 1.12.2 и актуальна до сих пор. Предыдущие версии не тестировал.
     

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