Войти или зарегистрироваться

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

  • Автор темы Автор темы BeYkeR
  • Дата начала Дата начала

BeYkeR

Старожил
Девелопер
Пользователь
Баллы
173
После приезда из деревни, я вспомнил слова умного человека из предыдущей темы:
@BeYkeR
Вообще, если говорить "на бытовом уровне", то как-то в моем плагине на ограничение террритории (аналог Borders, BorderGuard и т.п.) решил по границе нарисовать дымки. Т.е. каждые несколько секунд от сервера клиентам (всем игрокам) отправлялось несколько тысяч пакетов на отображение эффекта дыма.
Тормоза были. Но именно на уровне сети. Т.е. я банально перегрузил канал сервера, при этом TPS ни разу не упал.
И тут я подумал: А что если между этими пакетами поставить задержку ? Как я знаю, один пакет вообще не вызывает нагрузок, а когда несколько почти сразу, то идет обратная реакция. Как можно реализовать подобную систему ?
Приблизительная система:
Список чанков --> Берем один чанк --> Обновляем... --> Задержка на X тиков --> Повторение...
 
А если 20 игроков одновременно подойдут к разным точкам границы? Тогда часть из них не увидит эффекты из-за задержки. Лучше уж тогда виртуальное стекло выстраивать на границе.
 
А если 20 игроков одновременно подойдут к разным точкам границы? Тогда часть из них не увидит эффекты из-за задержки. Лучше уж тогда виртуальное стекло выстраивать на границе.
Ну а тогда:
Список источников --> Список чанков (У каждого свой)--> Берем один чанк --> Обновляем... --> Задержка на X тиков --> Повторение...
Таким образом вроде всем достанется.
 
Ну а тогда:
Список источников --> Список чанков (У каждого свой)--> Берем один чанк --> Обновляем... --> Задержка на X тиков --> Повторение...
Таким образом вроде всем достанется.
Достанется, только вот секунд через 10, когда они уже наткнутся на границу.
 
Спасибо за умного человека, конечно...

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

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