Blog

Исправьте подтормаживания в Minecraft: устраните скачки времени кадра

Трот в Minecraft возникает из-за пауз сбора мусора и загрузки чанков, а не из-за низкого FPS. Уменьшите нагрузку на память, обеспечьте плавную загрузку чанков и прекратите чрезмерное выделение оперативной памяти.

TRtrolPublished 5 min read

Что на самом деле означает подтормаживание в Minecraft?

Подтормаживание — это проблема времени кадра, а не частоты кадров. Ваш средний FPS может быть 300, а игра зависает на долю секунды каждые несколько секунд. Счетчик выглядит здоровым, потому что он усредняет эти скачки. То, что вы чувствуете, — это сам скачок. За этими скачками стоят паузы сборки мусора и загрузка чанков, и ничто из этого не решается увеличением числа кадров.

Представьте себе стабильные 120 FPS рядом с 300 FPS, которые падают до 20 на один кадр каждый раз, когда запускается сборщик мусора. 120 ощущаются лучше. Ваши глаза отслеживают худший кадр, а не средний. Поэтому вся задача здесь — сделать худший кадр менее плохим, и порядок, в котором вы исправляете вещи, имеет значение.

Что вы чувствуетеЧто на самом деле происходитЧто это вызывает
Зависание каждые несколько секундПауза сборки мусораFerriteCore, ModernFix
Заминка при переходе в новую местностьГенерация чанков в основном потокеC2ME, Lithium
Подтормаживание, которое стало хуже после увеличения объема оперативной памятиСлишком большой куча, более длительные циклы сборки мусораУменьшите объем выделяемой памяти
Случайные микро-заминкиФоновые приложения или уставший дискЗакройте приложения, проверьте диск

Как остановить подтормаживание, вызванное сборкой мусора?

Прежде всего, уменьшите нагрузку на память. Большинство микрозадержек вызваны паузами сборщика мусора Java, который приостанавливает работу игры для освобождения памяти. Уменьшите объем памяти, удерживаемый игрой, и эти паузы станут как короче, так и реже. Две модификации выполняют основную работу. FerriteCore дедуплицирует и сжимает данные, хранящиеся в памяти Minecraft, а ModernFix обрезает выделения и отходы при загрузке поверх этого.

Обоснование очевидно. Сборщику мусора нужно останавливать игру только тогда, когда есть достаточно мусора для очистки. Дайте ему меньше мусора для сбора, и он будет реже вас прерывать. FerriteCore сам по себе может значительно сократить объем используемой памяти, поэтому он стоит на вершине списка всех серьезных решений для устранения задержек.

Ферритовое ядро

Сжимает данные, хранящиеся в оперативной памяти Minecraft. Меньший объем памяти означает более короткие и редкие паузы сборки мусора.

МодернФикс

Оптимизирует распределение ресурсов и избыточный размер времени загрузки. Чисто накладывается поверх FerriteCore.

Си-Ту-Ми

Переносит генерацию фрагментов на большее количество ядер ЦП, чтобы новая местность перестала подтормаживать.

Литий

Делает симуляцию мира более дешевой, чтобы игра не тормозила, когда вы двигаетесь и сражаетесь.

Как устранить рывки при загрузке чанков?

Резкий толчок, который вы чувствуете, когда начинаете бежать по новой территории, вызван тем, что генерация чанков перегружает основной поток. C2ME распределяет эти задачи по большему количеству ядер вашего процессора, чтобы мир строился впереди вас, а не догонял вас сзади. Совместите это с Lithium, который снижает стоимость тика для сущностей, искусственного интеллекта мобов и физики, чтобы симуляция никогда не отставала.

Эти два компонента разделяют нагрузку. C2ME обрабатывает новые чанки. Lithium поддерживает низкую стоимость работы с существующим миром. Вместе они превращают спринт в открытом мире из прерывистого ползания в движение, сохраняющее темп. Именно здесь вы наиболее заметно ощутите разницу, в динамичной игре. Если вам важен плавный ход под нагрузкой, ознакомьтесь с инструкцией по обеспечению стабильного FPS для PvP.

Почему больше оперативной памяти ухудшает подтормаживания?

Потому что больший куча требует больше времени на очистку. Когда вы выделяете Java больше памяти, каждая операция сборки мусора охватывает больший объем, поэтому пауза, которая замораживает ваш кадр, становится длиннее, а не короче. Люди увеличивают объем выделяемой памяти, ожидая плавности, и получают обратный эффект. Если подтормаживания начались или ухудшились сразу после увеличения объема оперативной памяти, вы нашли виновника.

По той же причине, установка кучи модов без предварительного освобождения памяти — это ловушка. Установите FerriteCore и ModernFix до того, как трогать ползунок распределения памяти. Если проблема в объеме оперативной памяти, лучшие моды для снижения потребления оперативной памяти помогут глубже разобраться.

В каком порядке лучше всего это исправить?

  1. Установите пару памяти

    Добавьте FerriteCore и ModernFix в Fabric. Это уменьшает размер кучи и устраняет большинство рывков.

  2. Добавьте пару куска и отметки

    Установите C2ME и Lithium. Новая местность перестала дергаться, и симуляция осталась недорогой.

  3. Оптимизируйте объем оперативной памяти

    Снизьте выделение до 4-6 ГБ, если оно выше. Протестируйте в загруженном районе, а не на свежей, ровной поверхности.

  4. Надень шапку и уберись

    Установите ограничение частоты кадров чуть ниже частоты обновления экрана или включите VSync, и закройте фоновые приложения, которые нагружают ваш процессор.

Быстрый список проверки, прежде чем винить модераторов

Несколько причин, не связанных с модераторами, могут скрываться здесь, и их стоит исключить, прежде чем переустанавливать что-либо.

  • Ограничение частоты кадров или VSync. Равномерный темп лучше резкого пика, даже если максимальное значение уменьшится.
  • Фоновые приложения. Браузеры, голосовые клиенты и задачи обновления отнимают ресурсы ЦП и вызывают задержки в середине игры.
  • Ваш диск. Полный или неисправный диск вызывает прерывистое чтение блоков. Освободите место и проверьте состояние диска.
  • Шейдеры. Тяжёлый шейдерпак добавляет свою собственную задержку отрисовки. Проверьте работу без него, чтобы изолировать причину.

Вот где оправдывает себя тщательно настроенная система. Terminus отправляет свой пакет производительности уже подключенным и с предварительно настроенным профилем запуска, поэтому вы обходите стороной бесконечные эксперименты с флагами JVM и просто играете.

Часто задаваемые вопросы

Получить Terminus

Performance stack pre-tuned. No JVM flags to memorize.