Minecrafter

Как улучшить производительность Майнкрафт

Производительность Майнкрафт

Из чего складывается производительность Minecraft? Чем и как на неё можно влиять?

Рендеринг. FPS. Задержка.

Рендеринг (англ. rendering — «визуализация»). Это набор сложных математических вычислений для преобразования программно-описанного объекта, эффекта, явления и т.п. (модели) в статичную или движущуюся картинку, пригодную для визуального восприятия.

FPS ( frame per second — «кадров в секунду»)
Производительность игры обычно измеряется в кадрах в секунду (FPS) или говоря по другому, как часто игра может обновлять экран в течение одной секунды. Существует два типа FPS:
1. Текущий FPS — изменяется для каждого кадра.
2. Средний FPS — усредненный за период времени.
Оба значения видны на экране отладки (F3).

Задержка
Задержка является обратной величиной по отношению к FPS. Она показывает время, прошедшее между двумя обновлениями экрана. Задержку можно рассчитать как 1/FPS и результат получится в секундах. Например, задержка для 50 FPS составляет 1/50 FPS = 0,02 с (20 мс). 

Текущие задержки видны на экране отладки в виде зеленого или красного графика (лагометр). Как пример, на скриншоте, приведённом выше, FPS=59 и задержка показывается зелёным цветом с отдельными всплесками других частот.

Каждая вертикальная линия в лагометре — это один кадр. Высота линии — это время, необходимое для показа кадра. 

Нижняя цветная часть линии показывает время, затраченное на отрисовку объектов на экране. Это действие включает в себя расчёт моделей объектов, отправку их на графический процессор и рендеринг кадра графическим процессором. В это же время производится и загрузка чанков. Если FPS выше 50, то эта часть линии зеленого цвета, в противном случае она красная.

Белый верх линии показывает время очередного обновления мира (тик). Здесь обновляются блоки и объекты мира. Появление мобов, течение воды, работа redstone, рост деревьев и растений и т. д., всё это происходит в этом отрезке графика. Тик выполняется каждые 50 мс (20 раз в секунду) независимо от частоты обновления экрана. Вот почему при более высоком FPS не каждая линия лага имеет белый верх. Некоторые кадры пропускаются, чтобы поддерживать скорость обновлений по 20 в секунду.

Почему тормозит Майнкрафт?

Можно выделить две основных причины:

Что влияет на измеряемую производительность (FPS)

1.) Для большинства компьютеров при установке дальних расстояний отрисовки главным ограничивающим фактором являются возможности графического процессора (GPU).

Minecraft отображает вдаль около 5 000 мини-чанков (16x16x16), из которых в кадре может быть видно до 1 300. Каждый мини-чанк имеет в среднем около 6 000 видимых вершин блоков.
Это в общей сложности порядка 8 миллионов вершин или около 2 миллионов квадратов на кадр. Даже при работе только с 30 FPS это соответствует обработке примерно 60 миллионов квадратов в секунду.
Я привожу здесь этот очень приблизительный расчет, чтобы наглядно был виден тот объём работы, которую должен выполнять графический процессор.

2.) Возможности центрального процессорного устройства (ЦП) для решения следующих задач:

3.) Другие запущенные программы

Minecraft использует ресурсы ЦП, графического процессора, ОЗУ и внешнюю память совместно со всеми другими запущенными в данный момент программами и операционной системой. Соответственно, это накладывает ограничения на одновременное использование одних и тех же ресурсов. Если один из ресурсов занят, то очередник должен дождаться, пока ресурс станет доступен, а затем продолжить его использование.

Это особенно важно для одноядерных CPU. На двух- и многоядерных процессорах второе и дополнительные ядра ​​могут выполнять фоновые действия, в то время как Minecraft работает на первом ядре. На одноядерных ЦП фоновые действия, которые используют ЦП, будут вызывать постоянные задержки.

Сильное влияние на производительность Майнкрафта оказывают:

4.) Память

Minecraft имеет схему использования памяти, типичную для Java-программы. Выделенная память медленно заполняется, пока не будет достигнут предел, а затем вызывается сборщик мусора, который освобождает всю неиспользуемую память. Затем цикл повторяется снова.

Наименьшее значение, до которого падает используемая память, — это реальная память, которая нужна программе, остальное — это буфер для сборщика мусора, поэтому для экономии времени работы ЦП его не нужно вызывать очень часто. Но когда памяти достаточно, даже это меньшее число не соответствует реальной загруженности ОЗУ, потому что сборщик мусора работает не слишком эффективно. Он просто последовательно проверяет, какие объекты пока больше не будут использоваться программой. И найдя, удаляет их. Важно отметить, что сборщик мусора обычно не вызывается до момента заполнения всей выделенной памяти, даже если существует огромный объем памяти, ожидающий освобождения. Т.е. сколько не выделяй памяти в установках — бесполезного содержимого хватит на всё её количество.

По умолчанию программа запуска Minecraft устанавливает ограничение памяти в 1 ГБ. Это тот объем памяти, который Minecraft может свободно использовать. Кроме того, самой Java необходима память для своих собственных целей, что увеличивает общий объем до примерно 1,5 ГБ.

Чтобы обеспечить 1,5 ГБ физической памяти для Майнкрафта, нужно иметь на компьютере общий объём ОЗУ не менее 2,5—3 ГБ, отдавая «лишнюю» память под нужды операционной системы и фоновым процессам. Только тогда эти 1,5 ГБ физической памяти становятся реально свободными для использования Minecraft.

Часто свободной физической памяти остается менее 1,5 ГБ. В этом случае Java должна будет частично перейти на виртуальную дисковую память. Этот сильно затормозит работу, поскольку диск намного медленнее (в 1 000 раз), чем физическая память.

На самом деле Minecraft требуется не более 256 МБ для работы, в основном используется около 100—150 МБ. Это для ванильного Minecraft, работающего на 32-битной Java без установленных модов и не использующего дополнительных текстур. Любая память выше этого будет использоваться для буфера сборщика мусора и может переключиться на виртуальную дисковую память и, соответственно, вызвать большую задержку.

Запуск Minecraft с меньшим предустановленным объемом памяти значительно снижает вероятность переключения на виртуальную память, особенно для компьютеров с объемом ОЗУ менее 3 ГБ.

Использование же 64-битной Java, модов и HD-текстур может значительно увеличить использование памяти.

5.) Дизайн 

Minecraft имеет минималистичный дизайн с очень небольшим количеством настраиваемых параметров. Большинство переменных, влияющих на производительность, являются фиксированными и хорошо обрабатываются машинами игрового класса с мощными вычислительными и графическими процессорами.

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

Воздействия на отклик программы

Отклик игры напрямую связан со стабильностью FPS в течение определенного периода времени. Стабилизация FPS означает, что время, необходимое для обновления каждого кадра, должно оставаться неизменным. Это отображается в лагометре в виде линий одинаковой высоты.

Появляющиеся пики задержки, даже если они не влияют на средний FPS, нарушают плавность движения игры и могут сильно раздражать. В большинстве случаев более низкий стабильный FPS предпочтительнее, чем иметь более высокий, но нестабильный FPS. Типичным примером является знаменитый “Lag Spike of Death”, который вызывается функцией автосохранения и генерирует одиночные Они практически не влияют на средний FPS, но будут сильно мешать, поскольку повторяются довольно часто.

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

  1. ) Причины нестабильности задержки
    Minecraft использует относительно несложные алгоритмы расчётов, которые выполняются внутри циклов рендеринга, и любые новые действия в работе, которые необходимо выполнить, приводят к пульсации FPS или скачкам величины задержки.
  1. ) Борьба с резкими скачками величины задержки

Работа над статьёй продолжается…

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

Exit mobile version