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

Помогите Задержка перед отправкой пакета из списка

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

  1. Автор темы
    BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    После приезда из деревни, я вспомнил слова умного человека из предыдущей темы:
    И тут я подумал: А что если между этими пакетами поставить задержку ? Как я знаю, один пакет вообще не вызывает нагрузок, а когда несколько почти сразу, то идет обратная реакция. Как можно реализовать подобную систему ?
    Приблизительная система:
    Список чанков --> Берем один чанк --> Обновляем... --> Задержка на X тиков --> Повторение...
     
  2. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А если 20 игроков одновременно подойдут к разным точкам границы? Тогда часть из них не увидит эффекты из-за задержки. Лучше уж тогда виртуальное стекло выстраивать на границе.
     
  3. Автор темы
    BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Ну а тогда:
    Список источников --> Список чанков (У каждого свой)--> Берем один чанк --> Обновляем... --> Задержка на X тиков --> Повторение...
    Таким образом вроде всем достанется.
     
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Достанется, только вот секунд через 10, когда они уже наткнутся на границу.
     
  5. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Спасибо за умного человека, конечно...

    20 пакетов - это фигня. У меня речь шла... Щас посчитаю Размер границы был 8000х8000. Длина периметра - 32000. Я проигрывал эффект на каждом восьмом блоке - это соответственно 4000 эффектов. Ну и умножаем на онлайн ;)
    Причем лагал не сервер (ТПС не падал) и клиенты тоже не тормозили - просто проседал канал сервера.

    Естественно тогда всё решалось просто. Поскольку видны эффекты с расстояния 16 блоков, то смысла отправлять те, которые расположены на большем расстоянии от игрока нет. Соответственно проигрывались эффекты только при приближении к границе.
    Ну а если есть опасение, что эффектов будет много, то никто не мешает сделать очередь, которая будет пропускать определенное количество эффектов за тик (я так в PlayEffect сделал).
    Но вообще нужно продумать нужно ли столько эффектов вообще и тогда вполне возможно никакой очереди и прочих головных болей не потребуется.
     
    Последнее редактирование: 4 авг 2014

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