что делать если лагает свой сервер майнкрафт
Оптимизация сервера Minecraft
В нашем блоге мы уже рассказывали, как создать свой сервер Minecraft, однако с тех пор прошло 5 лет и многое поменялось. Делимся с вами актуальными способами создания и оптимизации серверной части столь популярной игры.
За свою 9-летнюю историю (если считать от даты релиза) Minecraft заработал потрясающее количество поклонников и хейтеров как среди обычных игроков, так и среди гиков. Простая концепция мира из кубиков превратилась из обычного развлечения в универсальную среду для общения и создания различных объектов из реального мира.
Помимо строительства, в игре есть возможность создавать логические схемы, которые позволяют реализовывать полноценные алгоритмы внутри Minecraft. На YouTube полно весьма впечатляющих роликов, где люди, приложив огромное количество сил и потратив множество времени, создали копию того или иного электронного устройства или построили детальную копию существующих и вымышленных архитектурных сооружений. Все ограничивается лишь фантазией геймера и возможностями игровой вселенной.
Но не будем дальше говорить о том, что именно игроки создают, а посмотрим на серверную часть приложения и осветим проблемы (порой весьма сложные), которые могут возникнуть в процессе работы под нагрузкой. Сразу оговоримся, что речь пойдет только о Java Edition.
Виды серверов
Самым простым вариантом является сервер, встроенный в клиент игры. Создали мир, нажали на одну кнопочку, и вот сервер стал доступен по локальной сети. Никакой серьезной нагрузки такой вариант выдержать не может, а поэтому мы не будем его даже рассматривать.
Vanilla
Компания Mojang Studios распространяет серверную часть игры в виде Java-приложения бесплатно на официальном сайте. Это позволяет создать свой собственный выделенный сервер и персональный мир, сделав его доступным для подключения из любой точки планеты. Для тех, кто делает это впервые, есть отличный туториал, доступный в соответствующей игровой Wiki.
У этого подхода есть один серьезный недостаток, а именно — отсутствие возможностей «из коробки» подключать плагины, расширяющие функционал сервера и позволяющие не только автоматизировать многие процессы, но и оптимизировать производительность. Кроме того, у официального сервера достаточно большое потребление оперативной памяти на каждого подключенного игрока.
Bukkit
Созданное энтузиастами на базе Vanilla-версии серверное приложение Bukkit значительно расширяло возможности игры за счет поддержки плагинов и модов (модификаций). Оно позволило не только добавлять в игровой процесс новые блоки, но и выполнять различные манипуляции, недоступные ванильному ПО. Что интересно, памяти это приложение требовало значительно меньше.
Установить Bukkit не составляет особого труда, соответствующая инструкция есть на ресурсе GamePedia. Но это не имеет смысла, так как с 2014 года команда Bukkit распалась, разработчики проекта стали сотрудниками Mojang Studios, а репозиторий заброшен. Таким образом, Bukkit фактически мертв, и имеет смысл обратить внимание на два следующих проекта.
SpigotMC
Для облегчения жизни разработчиков плагинов была необходимость в API для взаимодействия с игровым миром. Именно эту задачу и решили создатели Spigot, взяв за основу ядро Bukkit и переработав его для достижения лучшей надежности и производительности. Тем не менее, Git-репозиторий проекта был заблокирован в связи с Законом об авторском праве в цифровую эпоху (DMCA), и скачать оттуда исходники невозможно.
На текущий момент SpigotMC активно развивается и используется. Он поддерживает все плагины, созданные под Bukkit, однако с ним обратно не совместим. Чтобы обойти запрет DMCA Takedown, был придуман элегантный способ под названием BuildTools. Этот инструмент избавляет от необходимости дистрибуции скомпилированного приложения и позволяет пользователям выполнить компиляцию Spigot, CraftBukkit и Bukkit из исходного кода. Все это делает запрет DMCA бесполезным.
PaperMC
Казалось бы, все круто, и Spigot стал прекрасным вариантом. Но некоторым энтузиастам этого показалось мало, и они запилили свой собственный форк Spigot «на стероидах». На странице проекта ключевым достоинством указано, что “It’s stupid fast”. Развитое коммьюнити позволяет оперативно решать возникающие вопросы, а расширенное API — делать интересные плагины. Запустить PaperMC можно одной простой командой, приведенной в документации.
С совместимостью у PaperMC все прекрасно, так что написанные плагины под SpigotMC легко заработают и на PaperMC, но без официальной поддержки. Обратная совместимость со SpigotMC также присутствует. Теперь, когда мы перечислили различные варианты создания сервера, перейдем к тем проблемам производительности, которые могут возникать.
Проблемы и решения
Главное, что нужно понимать, — все, что касается обработки игрового мира будет обрабатываться только на одном вычислительном ядре физического сервера. Так что если вдруг у вас прекрасный сервер с десятком вычислительных ядер, то загружено будет только одно. Все остальные будут фактически простаивать. Такова уж архитектура приложения, и ничего вы с этим поделать не сможете. Так что при выборе сервера следует обращать внимание не на количество ядер, а на тактовую частоту. Чем она будет выше, тем лучше будет производительность.
Что касается вопроса об объеме оперативной памяти, тут следует исходить из следующих показателей:
Для запуска серверной части рекомендуем воспользоваться флагами, указанными в статье Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Эта «черная магия» позволяет серверу грамотно настроить «сборщик мусора» и оптимизирует использование оперативной памяти. Не стоит выделять памяти больше, чем реально потребляет сервер при пиковом наплыве игроков.
Генерация карты блоков
“Вы действительно считаете, что Луна существует, только когда вы на неё смотрите?” (Альберт Эйнштейн)
Абсолютно новый сервер. Как только игрок первый раз успешно подключается, игровой персонаж появляется на общей точке сбора (спаун). Это единственное место, где игровой мир предварительно генерируется сервером. В этот же момент клиентская часть смотрит в настройки, и ключевым параметром является дальность прорисовки. Измеряется она в чанках (область карты 16×16 и высотой в 256 блоков) Сколько чанков там указано, именно столько и будет запрошено у сервера.
На сервере хранится глобальная карта мира, и если в ней еще нет сгенерированных блоков в точке появления игрового персонажа, то сервер их динамически генерирует и сохраняет у себя. Мало того, что это требует больших вычислительных ресурсов, так еще и постоянно увеличивает размер карты мира. На одном из старейших анархических серверов 2b2t (2builders2tools) размер карты уже превысил 8 Tb, а граница мира проходит на отметке в 30 млн блоков. С этим сервером связаны тысячи историй, и он заслуживает отдельной статьи серии статей.
Генерация мира вокруг одного игрока — не проблема. Генерация мира вокруг сотни игроков вызовет незначительные тормоза сервера на протяжении короткого времени, после чего нагрузка снизится. Генерация мира на дальность прорисовки клиента вокруг тысячи игроков уже способна «уронить» сервер и повыбрасывать с него всех клиентов по таймауту.
В серверном ПО имеется такое значение, как TPS (Ticks per Server — тактов в секунду). Штатно 1 такт равен 50 мс. (1 секунда реального мира равна 20 тактам игрового мира). Если обработка одного такта вырастет до 60 секунд — серверное приложение будет закрыто, выкинув всех игроков.
Выход — ограничить мир определенными координатами и выполнить предварительную генерацию блоков. Тем самым мы снимаем необходимость динамической генерации в процессе игры, и серверу будет достаточно прочитать уже существующую карту. Оба вопроса решаются одним-единственным плагином WorldBorder.
Проще всего задать границу мира в виде окружности относительно точки спауна (хотя можно ее сделать любой формы) одной командой:
Если игровой персонаж попытается пересечь границу, то будет отброшен на несколько блоков назад. Если это проделать несколько раз за ограниченное время, то нарушитель будет принудительно телепортирован на точку спауна. Предварительная генерация мира выполняется еще проще, командой:
Поскольку данное действие потенциально может затронуть игроков, находящихся на сервере, не забудьте подтвердить выполнение:
В общей сложности на то, чтобы сгенерировать мир радиусом в 5000 блоков (
40 млрд блоков) ушло примерно 2 часа на процессоре Intel® Xeon® Gold 6240. Поэтому, если хотите запустить прегенерацию большей карты, учитывайте, что этот процесс займет приличное количество времени, а TPS сервера будет серьезно снижено. Кроме того, помните, что даже радиус в 5000 блоков потребует примерно 2 Гб места на дисковом накопителе.
Несмотря на то, что крайняя версия плагина была разработана для Minecraft версии 1.14, опытным путем выяснено, что она прекрасно работает и на последующих версиях. Полный список команд с пояснениями доступен на форуме плагина.
Проблемные блоки
Если блоков TNT несколько, то детонация одного блока вызывает детонацию и включение гравитации у соседних блоков, разбрасывая их во все стороны. Вся эта красивая механика на стороне сервера выглядит как множество операций по подсчету траектории каждого из блоков, а также взаимодействия с соседними блоками. Задача крайне ресурсоемкая, что легко может проверить каждый. Сгенерируйте и подорвите куб из блоков TNT, размером хотя бы 30x30x30. И если вы думали, что у вас хороший мощный игровой компьютер, то сильно заблуждались 😉
Подобный «эксперимент» на сервере с Intel® Xeon® Gold 6240 привел к серьезной «просадке» TPS и 80% нагрузке на CPU в течение всего времени детонации блоков. А следовательно, если кто-либо из игроков сможет проделать подобное, то проблема с производительностью затронет всех находящихся на сервере игроков.
Еще более жесткий вариант — Кристаллы Края. Если TNT все же взрывается последовательно, то Кристаллы Края детонируют все одновременно, что в теории может вообще остановить работу серверного приложения.
Избежать этого сценария можно, только полностью запретив использование данных блоков в игровом мире. Например, с помощью плагина WorldGuard. Обратите внимание, что сам по себе этот плагин не работает без другого плагина WorldEdit. Так что устанавливаете вначале WorldEdit, а затем WorldGuard.
Заключение
Грамотное управление игровым сервером — задача не из простых. Сложности и снижение производительности будут поджидать на каждом шагу, особенно если не брать в расчет саму механику игрового процесса. Предусмотреть все невозможно, ведь игроки порой бывают очень изобретательны в попытках заставить сервер выполнить то, для чего он не был предназначен. Только разумный баланс между рисками и устанавливаемыми ограничениями позволит серверу работать в непрерывном режиме и не снижать свою производительность до критичных значений.
На карантине некоторые наши сотрудники соскучились по любимым офисам и решили воссоздать их внутри Minecraft. У вас тоже есть шанс заглянуть к нам в гости, не рискуя своим здоровьем и не тратя время на дорогу.
Для этого мы приглашаем всех желающих на наш сервер minecraft.selectel.ru (версия клиента 1.15.2), где воссозданы дата-центры Цветочная-1 и Цветочная-2. Не забудьте согласиться со скачиванием дополнительных ресурсов, они необходимы для корректного отображения некоторых локаций.
Вас ждут квесты, промокоды, «пасхалки» и приятное общение.
Как повысить ФПС в Майнкрафт и убрать лаги, оптимизировать игру
В этом гайде я подробно расскажу как повысить ФПС в Майнкрафте, оптимизировать игру, убрать или уменьшить количество лагов, сделать игру более быстрой и комфортной, хотите увеличить FPS в майнкрафт 1.16, 1.15.2, 1.14.4, 1.12.2, 1.7.10 и прочих версиях?
Все советы были проверены человеком, который разбирается в компьютерах, поэтому, если у вас прямые руки, то всё получится!
Ваша игра без модов и текстурпаков:
Если у вас низкий ФПС в обычной игре, без модов, шейдеров, датапаков и текстурпаков, то советую выполнить следующие советы:
Увеличение производительности ПК:
Настройте параметры электропитания, в основном для ноутбука:
Обновите Java и драйвера:
Закройте все лишнее:
Используйте другой лаунчер:
Настройки графики игры:
Установка и настройка Optifine:
Вы можете установить оптифайн, он оптимизирует игру и добавит намного больше графических настроек.
Ваша игра с модами:
Для начала проверьте все параметры описанные в «игра без модов».
На ФПС с модами влияет очень много факторов, количество и КАЧЕСТВО модов.
Скачайте и установите Optifine:
Увеличьте количество выделяемой оперативной памяти:
Чем больше модов, тем больше оперативной памяти необходимо игре, если стандартная игра без проблем работает на 512 Mb, то сборки могут потреблять от 2 Gb до 6 и даже 8 Gb.
Установите моды для оптимизации:
В больших сборках очень важна оптимизация, и существует несколько модов:
Вы можете перейти в категорию: Моды для повышения ФПС, возможно уже появились новые моды:
Удаляйте лишние моды:
Убавляйте количество модов, возможно ваш ПК не способен на такое количество, либо определенные моды конфликтуют и вызывают повышенную нагрузку.
Ищите проблемный мод:
Если вы уверены, что низкий фпс вызван проблемным модом, а не слабым компьютером, то ищите проблемный мод.
Зачастую моды могут вызывать лаги потому что конфликтуют друг с другом либо «криво написаны».
Вариантов тут не так много, я советую поступить так:
1) Отделить все моды от ядер и библиотек.
2) Из модов убрать половину файлов и запустить игру, если лагов нет, то вернуть обратно и убрать вторую половину, если лаги есть, значит моды в второй половине файлов, далее работаем с половиной модов в которых есть лаги.
3) Снова убираем половину и проверяем, и так далее пока не останется 2-3 мода, это уже легко.
Если вы нашли проблемный мод, вы можете удалить его, либо попробовать обновить до более новой версии, либо наоборот зайти в архив или к автору мода и поискать более старую версию мода, возможно это поможет и автор уже исправил проблемы.
Попробуйте запустить мод отдельно от других, может быть он конфликтует с другим и без него все хорошо, тогда по знакомой методике ищем второй мод, само собой первый проблемный всегда оставляем в папке с модами.
Ваша игра с текстурпаками или датапаками:
Если лаги появились после установки текстурпака или датапака, то всего скорее дело в них.
Датапак лучше удалить, они глючные и не стабильные.
Ваша игра с шейдерами:
Если ты установил шейдеры и игра стала лагать, то это предсказуемо и вариантов у тебя не очень много.
Как убрать лаги на Minecraft сервере
Содержание статьи
Когда причина в «железе» и установках
Программные продукты для устранения лагов
Если и с мощностью хостингового компьютера вроде бы проблем нет, и софт на него устанавливается нормальный, а сервер при этом все равно с завидным постоянством лагает, надо бы призадуматься об инсталляции специальных дополнений, способных избавить от таких неприятностей. Их выпущено достаточное количество, и создателю многопользовательской игровой площадки остается лишь выбирать то, что больше подойдет в его ситуации.
Кроме того, данный плагин снижает использование оперативной памяти, а также ограничивает число различных объектов в игровом мире. Здесь есть возможность отключить неиспользуемые чанки, увидеть список тех из них, что вызывают лаги, лимитировать действия пользователей через функцию Permissions и т.п.
Впрочем, стоит рассмотреть и другие плагины со схожими свойствами. Так, NoLagg повысит устойчивость сервера к различным факторам, вызывающим сбои в его функционировании: взрывам динамита, многочисленному дропу и т.п. Систематизировать последний также помогает плагин Stackie, а для устранения ненужных сообщений в излишне «разросшемся» чате стоит использовать ICleartheChat. Такие программные продукты и их аналоги станут настоящим подспорьем для создателя сервера Minecraft в деле преодоления лагов.
Почему сервер minecraft 1.14 лагает и сильно грузит ресурсы?
Если вы только что приобрели сервер и хотите изменить версию, вы ДОЛЖНЫ создать новый мир для того, что бы запустить сервер.
Если вы обновляетесь на версию 1.14+ с более старой версии, пожалуйста, также убедитесь, что вы создали резервную копию, прежде чем сделать это, так как после загрузки мира на 1.14+ она больше не будет работать на более старой версии!
Ядро сервера 1.14 является кривым и не стабильным. Из проблем ядра основными являются:
Информацию с разных источников с подтверждением слов, можно почитать в интернете, например:
Серверы, работающие на 1.14+, а это касается и 1.15 и 1.16 и тд, будут зависать / перегружаться именно потому, что это нестабильная версия сервера, до тех пор пока её не исправят.
Minecraft 1.13+ в целом полон проблем с производительностью, в результате чего значительно выше использование ОЗУ и ЦП, чем у 1.12.2 и старше. Ряд этих проблем был решен в выпуске 1.13.2, но он по-прежнему намного тяжелее CPU / RAM, чем 1.12.2 и старше, и не считается «стабильным».
К сожалению, 1.14 мало что из этого улучшило и в большинстве случаев даже ухудшало ситуацию. Также не понятно, что 1.14.1 улучшила, если вообще что-то было стало лучше, а не хуже, и уже сообщалось, что 1.14.2 не исправил слишком много с точки зрения производительности, нагрузка по прежнему не является адекватной для использования сервера.
Все, что мы можем порекомендовать, это уменьшить view-distance в server.properties, в вкладке «Конфиги» на панели управления, до 3 или 4, сохранить изменения и перезапустить сервер, чтобы уменьшить количество чанков, загружаемых вокруг игроков на сервере, который поможет с скачками использования ЦП, хотя общее использование ЦП по-прежнему значительно выше на 1.14+, чем 1.13.2 и старше, и намного больше, чем 1.12.2 и старше (например, сервер 1.14 регулярно использует больше ресурсов ЦП, чем сервер Vanilla 1.12.2, даже если 1.14 будет без игроков, а 1.12.2 с онлайном 10).
Также было бы рекомендовано избегать быстрого перемещения на большие расстояния (т.е. летать на большой скорости или путешествовать на полной скорости на лодке через океаны), поскольку загрузка большого количества кусков за один раз значительно увеличит использование ЦП и ОЗУ на 1.13+. Также рекомендуется избегать одновременной загрузки большого количества сельских жителей, поскольку ИИ для сельских жителей является одной из самых больших проблем с производительностью, наряду с загрузкой фрагментов (учитывая, что оба исправления применены в 1.14.1, они по-прежнему считаются одними из самых серьезных проблем).
Также рекомендуется избегать обычных потенциальных причин отставания, таких как наращивание толпы / дробилки или большое количество активного красного камня и т.д. Обязательно регулярно перезагружайте сервер (рекомендуется не реже одного раза в день), чтобы выгружать лишние блоки и объекты и обновлять использование оперативной памяти.
К сожалению, кроме этого, мы мало что можем предложить для проблем с Vanilla 1.13.2 или 1.14. * (Если вы хотите 1.14 то на данный момент, лучше не использовать его вообще, либо для ознакомительных целей, сделать нормальный сервер на 1.14 не получится.).
Надеемся, что будет выпущено больше сборок 1.14. * Для решения большинства проблем с производительностью, так как о них много сообщалось на баг-трекере Minecraft, но в последних выпусках ничего не поделаешь.
Почему: Лагает серв? (Помогите.)
Помогите настроить!
Какие плагины мне удолить?
WorldBorder 1.7.2b
ColourMotd 0.1 (за борт)
WorldEdit 5.5.6
NoCheatPlus 3.10.7-BETA-sMD5NET-b651
mcjobs 3.1.8
Backup 2.1 (за борт)
ruFix 0.59 (за борт)
Vault 1.2.25-b320
CPFix 0.3.1
PermissionsEx 1.20.1
Wither 1.7 (за борт)
LogBlock 1.70
WorldGuard 5.7.5
BorderGuard 4.31 (это что такое?)
AutoMessage 2.4.0
iConomy 7.0 (за борт)
CommandHelper 3.3.0 (это что такое?)
ClearLag 2.6.0 (за борт. )
ProtocolLib 3.1.0
Modifyworld 1.19.4 (за борт этот либо EssentialsAntiBuild 2.12.1. Один нужно оставить)
MonsterBox 0.9.0 (это что такое?)
Herochat 5.6.7-SNAPSHOT
Essentials 2.12.1
ChatManager 1.19.1 (за борт)
EssentialsProtect 2.12.1 (под большим вопросом)
EssentialsSpawn 2.12.1
TagAPI 2.3
EssentialsAntiBuild 2.12.1 (за борт этот либо Modifyworld 1.19.4 . Один нужно оставить)
LWC 4.4.0 (b881) (July 11, 2013)
ChestShop 3.62
EssentialsChat 2.12.1
Можно уточнить, почему такая ненависть к clearlag’у? По мне так очень полезный плагин
Можно уточнить, почему такая ненависть к clearlag’у? По мне так очень полезный плагин
НИ РАЗУ не заметил его полезности, хотя неоднократно пытался установить.
Например когда я сетом ставил куча ростков (вместо того, что нужно), и начинало просто жутко, эпически жутко лагать, только он и спасал, т.к. разом очищал все эти ростки
Например когда я сетом ставил куча ростков (вместо того, что нужно), и начинало просто жутко, эпически жутко лагать, только он и спасал, т.к. разом очищал все эти ростки
Например когда я сетом ставил куча ростков (вместо того, что нужно), и начинало просто жутко, эпически жутко лагать, только он и спасал, т.к. разом очищал все эти ростки
В некоторых случаях он даже мешает. Например умер человек и вещи остались лежать на земле, а там алмазы и ещё что-нибудь ценное, а эти вещи удаляться и будет очень обидно. Поэтому мне он не нравиться. Сразу ухожу с такого сервера.
Ну ладно ладно убедили. Удалю его
Например когда я сетом ставил куча ростков (вместо того, что нужно), и начинало просто жутко, эпически жутко лагать, только он и спасал, т.к. разом очищал все эти ростки
Для особо одаренных. Вещи удаляются сами через 6000 секунд. Для изменения параметра лезем Папка_севрера/spigot.yml
Default: 6000
Type: Integer
Description: Controls the amount of ticks required before an item entity on the ground will despawn. Lowering this will make items despawn faster (potentially saving resources as there are less entities to tick), while increasing this will take them longer to despawn and use up more resources (as the item entities will have to be ticked for longer until they despawn).
Для особо одаренных. Вещи удаляются сами через 6000 секунд. Для изменения параметра лезем Папка_севрера/spigot.yml
Default: 6000
Type: Integer
Description: Controls the amount of ticks required before an item entity on the ground will despawn. Lowering this will make items despawn faster (potentially saving resources as there are less entities to tick), while increasing this will take them longer to despawn and use up more resources (as the item entities will have to be ticked for longer until they despawn).
Для особо одарённых. У меня ядро CraftBukkit. Из этого следует, что я никак в spigot.yml не залезу
Для особо одарённых. У меня ядро CraftBukkit. Из этого следует, что я никак в spigot.yml не залезу
Для особо одарённых. У меня ядро CraftBukkit. Из этого следует, что я никак в spigot.yml не залезу
Если не хочешь показаться слоупоком в лишний раз стоит промолчать. И принимать к сведению ответы на поставленный тобой же вопрос.
Логики не хватило додумать? Если есть подобие функции GC в модификации Bukkit коей spigot и является, то и в оригинале такое должно быть.
Craftbukkit на помойку. Даже я уже это признал.
Логики не хватило додумать? Если есть подобие функции GC в модификации Bukkit коей spigot и является, то и в оригинале такое должно быть.