
Ixeris
Мод Ixeris оптимизирует обработку событий ввода в Майнкрафт, устраняя просадки FPS при движении мыши. Использует многопоточность и буферизацию для Windows. Работает на Fabric и Forge для Minecraft 1.20+.
Ixeris - это мод для Майнкрафт, который решает проблему падения FPS при движении мышью. Ты наверняка замечал, что когда резко крутишь камеру или просто шевелишь мышкой, частота кадров заметно проседает. Частично это нормально: игра пересчитывает видимость чанков, подгружает новые области. Но львиная доля просадок связана с неэффективным опросом событий от мыши, особенно на Windows с мышками с высокой частотой опроса. Ixeris как раз чинит это узкое место.
Мод работает через два основных механизма:
- Многопоточный опрос событий. Вместо того чтобы рендерить и одновременно опрашивать мышь на одном потоке, Ixeris переносит опрос на главный поток, а рендеринг - на отдельный поток рендера. Это позволяет им не мешать друг другу.
- Буферизованный ввод (buffered raw input) - только для Windows. Вместо того чтобы дёргать неэффективную функцию
GetRawInputDataна каждое событие мыши, мод используетGetRawInputBuffer, читая данные пачками, за один вызов. Плюс вся работа теперь выполняется в Java-коде, что убирает накладные расходы на JNI-вызовы.
Таблицы для скептиков
Тесты проводились на полностью загруженном мире, после стабилизации FPS. Результаты говорят сами за себя.
Тест 1: В игре
Мышь захвачена, курсор не виден, суперплоский мир без мобов. На Windows мод по умолчанию использует буферизованный ввод.
| Частота опроса | Без Ixeris | Ixeris (без буфера) | Ixeris (с буфером) |
|---|---|---|---|
| 8000 Гц | 12 FPS | 83 FPS (6.9x) | 121 FPS (10.1x) |
| 2000 Гц | 76 FPS | 114 FPS (1.50x) | 135 FPS (1.78x) |
| 500 Гц | 134 FPS | 145 FPS (1.08x) | 151 FPS (1.13x) |
Самая дикая разница - на мышах с 8000 Гц. Почти десятикратный прирост. Даже на 2000 Гц результат более чем достойный.
Тест 2: В меню
Когда мышь не захвачена (как на экране паузы F3+Esc), сырой ввод не используется - игре нужно знать реальное положение курсора. Частота опроса 1000 Гц.
| ОС | FPS без движения | Без Ixeris | С Ixeris |
|---|---|---|---|
| Windows | 233 FPS | 133 FPS | 165 FPS (1.24x) |
| Linux (X11) | 358 FPS | 320 FPS | 355 FPS (1.11x) |
| Linux (Wayland) | 364 FPS | 289 FPS | 298 FPS (1.03x) |
На Windows прирост снова заметный, на Linux он более скромный, но всё равно ощутим. Кстати, эти цифры сняты на старой версии мода - с тех пор он стал ещё лучше.
Технические тонкости
Безопасность потоков
Ixeris корректно обрабатывает многопоточность. Callback'и, зарегистрированные через glfwSet*Callback, выполняются на потоке рендера. Вызовы GLFW, которые должны быть на главном потоке, если их дёргают из другого потока - диспатчатся на главный. Они либо сразу возвращают результат (если можно отложить), либо блокируют вызывающий поток до завершения. Начиная с версии 3.1.0 мод строго соблюдает требования потокобезопасности из документации GLFW.
Кеширование состояния GLFW
Большинство GLFW-функций обязаны вызываться с главного потока. Но многие другие моды могут вызывать их из потока рендера, создавая лишние задержки. Ixeris кеширует часто используемые состояния GLFW, чтобы к ним можно было быстро обращаться из любого потока - без накладных расходов на передачу вызова. Кеш безопасен и не вносит дополнительных лагов.
Улучшенный FPS-лимитер
В ванильном Minecraft (до версии 26.1) FPS-лимитер работал через glfwWaitEventsTimeout. Эта функция не может вызываться из потока рендера, так что с Ixeris она бы не работала. Разработчик переписал лимитер гибридным способом: сначала точный сон, а когда время ожидания минимально - переходит на активное ожидание (spin waiting).
Короткий словарик
- Главный поток - поток, на котором стартует игра. Именно он должен вызывать большинство функций GLFW и отвечает за опрос событий.
- Поток рендера - делает всё, что обычно делает игра, кроме опроса событий. В ванильном Майнкрафт эти два понятия совпадают, но Ixeris их разделяет.
Короче, если у тебя мышь с высокой частотой опроса (1000 Гц и выше) и ты играешь на Windows - Ixeris может дать очень заметный прирост FPS, особенно в моменты активного движения камерой. На Linux эффект скромнее, но тоже есть. Мод не конфликтует с другими оптимизациями вроде Sodium или Lithium, так что смело добавляй в сборку. Скачать Ixeris для Майнкрафт можно на версии 1.20+ под Fabric и Forge.
