Перейти к публикации
TheAndrey

Останавливаем лагодромы

Рекомендованные сообщения

image.jpeg

Пока игроки испытывают сервер на выносливость, мы проверяем игроков на прочность.

Игроки индустриальных сборок хорошо умеют приводить игровой сервер в негодность, строя различного рода «лагодромы», главным звеном которых являются транспортные системы (трубы и провода). Игроки, как правило, любят подключить все свои механизмы и хранилища в одну сеть, а сервер пускай сам думает: что и куда отправить – это создаёт огромную нагрузку, занимая половину и больше тика.

 

Откуда нагрузка?
Давайте разберёмся, чем занимаются любые транспортные системы в игре.

  • Проверка целостности компонентов всей системы (трубы/проводка).
  • Поиск подходящего маршрута для отправки предмета.
    • Поиск всех возможных вариантов маршрута
    • Проверка предмета на соответствие всем фильтрам, установленным на трбах
    • Перебор инвентаря каждого хранилища в целях поиска свободного места

Как видите, не так просто отправить предмет из точки A в точку B. А чем крупнее система у игрока, тем больше проверок приходится делать – а это всё драгоценное время.

 

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

Протяжённость: 256 – общее кол-во труб/проводов системы
Подключения: 64 – число хранилищ (механизмов) подключенных к системе

Остановка произойдёт при превышении любого из условий. Работа системы будет возобновлена как только всё будет возвращено в рамки лимитов.

 

Мне этого не хватает!
Обойти лимит возможно и даже нужно. Мы хотим, чтобы игроки делили большие транспортные системы на малые. Чем будет меньше система, тем она быстрее работает. Если у Вас имеется автоматизированный «завод», то следует использовать для него отдельную (замкнутую) систему, по которой будут перемещаться нужные ему ресурсы, а не включать его в общую систему дома.

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

 

Планы
Планируется проделать работу со следующими транспортными системами предметов/энергии:

  1. Thermal Dynamics ✅
  2. EnderIO ✅
  3. Applied Energistics
  4. Энергосети IndustrialCraft2 Experimental

Вот как это отразилось на примере Modern (числами указаны подключения/протяжённость).

image.png

Блокировка (отмечены красным) всего 10 систем позволила повысить TPS с 12 до 18-20 🎉

  • Нравится 1
  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение

А проверка выполняется по событиям установки труб или каждые n секунд? Почему спрашиваю: в первом варианте, как я понимаю, установка каждой новой трубы будет запускать заново процес перерасчёта всей протяжённости системы, что также будет создавать некую нагрузку, а учитывая что трубы любят ставить одну за другой очень быстро, то кол-во перерасчётов будет достигать огромных цифр(учитывая кол-во игроков).

Поделиться сообщением


Ссылка на сообщение
Гость
38 минут назад, Evade сказал:

А проверка выполняется по событиям установки труб или каждые n секунд? Почему спрашиваю: в первом варианте, как я понимаю, установка каждой новой трубы будет запускать заново процес перерасчёта всей протяжённости системы, что также будет создавать некую нагрузку, а учитывая что трубы любят ставить одну за другой очень быстро, то кол-во перерасчётов будет достигать огромных цифр(учитывая кол-во игроков).

Соответсвенно надо сделать два состояния системы: включена и выключена, при этом при включении системы происходят все расчеты, которые происходят при изменении параметров системы. А при выключении системы она перестает функционировать. При добавлении устройства(например, трубы) труба происходит одно из двух: труба не подключается т.к. у них разные состояние, либо вся система выключается и требует ручного включения ее обладателя.

Надеюсь, моя идея не самая ужасная и может даже неплохая.

Изменено пользователем Гость
мелкая поправочка))

Поделиться сообщением


Ссылка на сообщение
47 минут назад, Evade сказал:

А проверка выполняется по событиям установки труб или каждые n секунд?

Проверка стоит на обновление. Есть список всех систем, там уже модом всё посчитано (присуствует список всех копонентов системы). Сервер пропускает мимо систему (дабы не тратить на неё время), превышающую лимит.

Сильно вдаваться в подробности не стоит. Суть проста: работает или не работает. Обращайте на это внимание.

Поделиться сообщением


Ссылка на сообщение

И по классике жанра: эти изменения отразятся на Харде?

Изменено пользователем makatymba2001
Логика сообщений

mak2_4.png.638c2a45f439315e21d4b3a38c2d49bc.png

Поделиться сообщением


Ссылка на сообщение
1 минуту назад, makatymba2001 сказал:

И по классике жанра: как эти изменения отразятся на Хард?

Похоже, что да. Тут тоже проблема есть.

image.png

Поделиться сообщением


Ссылка на сообщение

Это просчёт каналов по МЭ сетям? Или работа интерфейсов/шин/туннелей и такого подобного?


mak2_4.png.638c2a45f439315e21d4b3a38c2d49bc.png

Поделиться сообщением


Ссылка на сообщение

Такое ощущение, что если это коснется харда, сразу встанут все базы топов))

Поделиться сообщением


Ссылка на сообщение
5 часов назад, kozachok сказал:

Такое ощущение, что если это коснется харда, сразу встанут все базы топов))

И не топов. Для харда данные ограничения вообще ничтожны

Поделиться сообщением


Ссылка на сообщение

Это сломает всю мою(да и не только) МЭ сеть, ведь количество МЭ кабелей на моей базе равно примерно 1000 штук, 

А количество подключенных к ним шин, интерфейсов - далеко выходит за рамки 64 штук.

Поделиться сообщением


Ссылка на сообщение

Лаги от этого всего вполне логичны. На всех базах МЭ сделаны таким образом, что "одна, большая, основная сеть, которая управляет всем". Кол-во просчётов действительно велики. Нужно будет придумывать там, где это возможно, локальные сети. Например, сеть для переработки руды, нефтехимии, АссемблиЛайны, реакторы... Или я от думал, отдельную сеть для извлечения продуктов и их транспортировка в основную МЭ.Это явно уменьшит нагрузку. Но дае в таком случае 64 канала - это очень мало. Что-то в районе 128 - 196 должно хватить.

Изменено пользователем makatymba2001
  • Одобряю 1

mak2_4.png.638c2a45f439315e21d4b3a38c2d49bc.png

Поделиться сообщением


Ссылка на сообщение

А как мне проверить какая у меня протяженность труб в регионе?

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...