С сегодняшнего дня на нашем проекте вводятся обязательные ограничения на некоторые механизмы и блоки.
Несмотря на наши усилия по оптимизации узких мест в модах, не все представляется возможным без нарушения совместимости и правок в игровую механику, поэтому мы собрали список всех распространенных источников проблем производительности с целью предотвращать их появление, а не разбираться на месте и составили рекомендацию по использованию некоторых других - без вреда для работы сервера.
Зачем нужны эти ограничения?
Внимание!
В нижеприведенном списке перечислены лишь распространённые источники лагов, обстоятельства их вызывающие и способы их избежать! Этот список не гарантирует того, что, если вашей постройки нет в этом списке, к вам не обратится администрация или модераторы с требованием снести или оптимизировать нагружающую сервер конструкцию.
Тема может дополняться и редактироваться без оповещения игроков! Всем рекомендуется время от времени ее перечитывать.
Уточнения:
IndustrialCraft 2:
Buildcraft:
Applied Enegistics 2:
ThermalDynamics:
ImmersiveEngineering:
EnderIO:
StorageDrawers:
Mekanism:
Chisel:
Carpenters Block:
Forge Microblocks:
PS: Спасибо Shadowmined за скриншоты
Несмотря на наши усилия по оптимизации узких мест в модах, не все представляется возможным без нарушения совместимости и правок в игровую механику, поэтому мы собрали список всех распространенных источников проблем производительности с целью предотвращать их появление, а не разбираться на месте и составили рекомендацию по использованию некоторых других - без вреда для работы сервера.
Зачем нужны эти ограничения?
Сама игра, серверная платформа и модификации с плагинами, помимо постоянно всплывающих багов и уязвимостей, имеют ряд узких мест, зачастую требующих капитальный пересмотр и рефакторинг кода. Это не всегда возможно и оправдано в связи с его закрытостью и сменами версий игры.
Главная проблема самой игры: она не разрабатывалась с упором в многопоточность. И решена может быть лишь написанием ее практически с нуля.
В большей мере игровой сервер использует лишь одно логическое ядро процессора - лишь часть операций выполняется асинхронно (причем многое не было распараллелено изначально). Миры же обрабатываются в одном потоке (обновления блоков/сущностей). Любое отставание обработки чего-либо в них, оказывает влияние на общую производительность сервера.
Также есть проблемы, вызванные нуждами для администрирования и модерирования серверов. Одна из них - система журналирования действий игроков (логи). Она необходима нам прежде всего для выявления нарушителей правил.
Но к сожалению, логирует она абсолютно все, что действует от имени игрока. Никакие исключения каких-либо механизмов или фильтры контекста для записи логов в данном случае не могут быть применены, ибо в таком случае вообще пропадает смысл журналирования действий.
Отсюда возникает проблема - механизмы, массово устанавливающие и разрушающие блоки могут нехило захламить базу данных и нагрузить сервер. Ожидание операций ввода-вывода ощутимо сказывается на производительности сервера.
Вот вам и ответ: для обеспечения комфортных условий игры для всех игроков.
Из-за прихотей одного игрока не должны страдать все.
Почему ранее подобного у нас не в водилось: физический сервер практически простаивал при низком онлайне и мы могли позволить некоторым игрокам превышать допустимые нормы, а в случае необходимости - обращались к игрокам с требованием оптимизировать или снести конструкцию.
Внимание!
В нижеприведенном списке перечислены лишь распространённые источники лагов, обстоятельства их вызывающие и способы их избежать! Этот список не гарантирует того, что, если вашей постройки нет в этом списке, к вам не обратится администрация или модераторы с требованием снести или оптимизировать нагружающую сервер конструкцию.
Тема может дополняться и редактироваться без оповещения игроков! Всем рекомендуется время от времени ее перечитывать.
Уточнения:
- Под словом "участок" подразумевается вся территория рядом с конструкцией, принадлежащая одному игроку или группе игроков (даже косвенно связанных).
- В рекомендациях указаны лишь приблизительные цифры, Они могут быть проигнорированы администрацией и модераторами. Все зависит от нагруженности сервера, вашего участка и сложности конструкции.
Запрещены конструкции с циклической физической установкой и разрушением блока Требование: не использовать генераторы булыжника и фермы для производства утильсырья Причина: нагрузка на систему журналирования действий игроков | |
Запрещено использование большого количества воронок Требование: не использовать больше 16 воронок в одной конструкции Причина: высокая нагрузка на сервер из-за плохой оптимизации перемещения предметов | |
Запрещено использование любых автоматических транспортных систем большой протяженности и с большим количеством подключений (IC2, AE2, EnderIO, Mekanism, BuildCraft, ThermalExpansion, ImmersiveEngineering) Рекомендация: избегать создание сетей протяженностью более 128 блоков или с более чем 64-ми активными подключениями |
IndustrialCraft 2:
Проводка не должна быть замкнутой Требование: разделить провода валиком с краской, таким образом, чтобы ток проходит напрямую от источника к потребителям, не замыкая между собой Краска может быть применена на изолированных и стекловолоконных проводах. Неизолированные провода можно обмотать резиной при помощи кусачек. Причина: замкнутая проводка циклично обрабатывается, что сильно сказывается на производительности сервера. Протяженные энергосети должны быть разделены энергохранилищами или трансформаторами Требование: разделять энергохранилищами или трансформаторами цепи протяженностью более 128 блоков или с более чем 64-ми подключениями Причина: массивные энергосети создают высокую нагрузку на сервер | |
Запрещено создание любых ферм для производства утильсырья Подобные фермы не приносят ничего, кроме лагов. Требование: создавайте утильсырье из невозобновляемых ресурсов, не имеющих способов автоматизированной добычи. Эффективность утильсырья и шансы его получения увеличены на наших серверах. | |
Запрещено использование большого количества автосадовников Требование: не больше 8 ферм на участок Причина: нагрузка на систему журналирования действий игроков | |
Ядерные реакторы: не больше 16 штук |
Buildcraft:
Трубы не должны использоваться в высоконагруженных системах Реализация транспортных систем в этом моде имеет огромное количество узких мест и огромное количество ресурсоёмких проверок целостности Требование: использовать трубы из других модификаций (ThermalDynamics, AE2) Трубы не должны быть зациклены. Замкнутая цепь циклично обрабатывается, что сильно сказывается на производительности сервера. Требование: Разделять крышками или кисточкой с краской Трубы не должны выбрасывать лут в большом количестве Увсех труб в моде есть ограничение, при превышении которого они начинают “лопаться” и выбрасывать предметы Требование: Следить за нагрузкой труб | |
Запрещена массовая установка цистерн большой высоты Проверка целостности конструкции затрачивает слишком много процессорного времени Рекомендация: не более 32 блоков на 1 транспортную систему. Используйте улучшенные цистерны или другие хранилища жидкости | |
Запрещены конструкции высоконагруженные системы автоматического крафта. Требование: минимизировать использование сборочных верстаков, не использовать для производства мусора для утилизатора. Причина: Данные о рецептах в игре хранятся неэффективно и не предназначены для авто-крафта |
Applied Enegistics 2:
Запрещены высоконагруженные системы автоматического крафта Данные о рецептах в игре хранятся неэффективно и не предназначены для авто-крафта Требование: минимизировать использование молекулярного сборщика в связке с любыми загрузчиками предметов не из этой модификации и аддонов к ней |
ThermalDynamics:
Трубы не должны быть замкнуты Требование: разомкнуть ключом. Причина: замкнутая цепь циклично обрабатывается, что сильно сказывается на производительности сервера. |
ImmersiveEngineering:
Запрещено использование более 28 термоэлектрических генераторов на 1 чанк и более 128 на участок. Причина: снижение производительности сервера из-за неоптимизированных вызовов OreDictionary | |
Запрещено использование более 2 |
EnderIO:
Запрещено использование более 4 электроспаунеров на участок Причина: обход лимита мобов в чанке, нагрузка от коллизиий сущностей |
StorageDrawers:
- Контроллеры и подчиненные контроллера запрещены в высоконагруженных системах:
Требование: использовать только в единичном количестве и не в связке с любыми высоконагруженными механизмами.
Причина: высокая нагрузка на сервер из-за поиска принимающей стороны (со всех сторон каждого блока) при перемещении предмета.
Mekanism:
Ветрогенераторы. Требование: не более 64 шт |
Chisel:
Запрещены автоматические стамески для длительного использования. Низкая производительнотсть метода проверки активных рецептов Требование: использовать блоки из мода в количестве не более 1 шт |
Carpenters Block:
Запрещены блоки и плитки в качестве основного строительного материала в массивных постройках. Чрезмерное использование блоков из мода приводит к появлению зон, которые, игрок со слабым железом или малой пропускной способностью интернета, покинуть не может. Рекомендация: использовать блоки из мода в умеренном количестве. |
Forge Microblocks:
Запрещены микроблоки в качестве основного строительного материала. Рекомендация: использовать блоки из мода только как декоративные элементы и в умеренном количестве. Причина: высокая нагрузка на ПК игроков, создание зон, которые игрок покинуть не может. |
PS: Спасибо Shadowmined за скриншоты