Ixeris
Огляд
Ixeris — це мод, який оптимізує опитування подій для покращення продуктивності клієнта.
Ви могли помітити помітне падіння FPS, коли рухаєте мишею. Частина падіння FPS спричинена тим, що гра має додаткову роботу, коли ви повертаєте камеру, як-от обчислення видимості чанків. Однак через неефективність нативного коду, який опитує події, та накладні витрати на виклики JNI, частина часу CPU, який інакше можна було б використати для рендерингу, марно витрачається на опитування подій. Це найпомітніше на Windows, особливо коли ваша миша має високу частоту опитування.
Ixeris вирішує цю проблему переважно двома заходами:
- Багатопотокове опитування подій. Замість виконання рендерингу та опитування подій в одному потоці, Ixeris виконує опитування подій у головному потоці та виносить рендеринг в окремий потік рендерингу.
- Буферизований Raw Input (лише Windows). Змінює метод, який використовується для опитування введення, з неефективного GetRawInputData (один виклик для кожної події введення) на GetRawInputBuffer, який дозволяє читати повідомлення raw input пакетами (один виклик для всіх подій). Крім того, виконання цієї роботи в Java-коді дозволило нам усунути накладні витрати на виклики JNI.
Бенчмарки
Ці тести виконано після повного завантаження світу та стабілізації частоти кадрів.
Тест 1: У грі
Цей тест порівнює продуктивність, коли мишу захоплено, тобто курсор невидимий. Цей тест виконується в суперпласкому світі без сутностей.
Цей тест виконано на Windows, де Ixeris за замовчуванням використовує буферизований raw input для покращення продуктивності. Стовпець "Ixeris, Non-buffered" показує FPS з вимкненою цією опцією.
Частота опитування - Без Ixeris - Ixeris, Non-buffered - Ixeris, Buffered
8000 Hz - 12 FPS - 83 FPS (6.9x) - 121 FPS (10.1x) 2000 Hz - 76 FPS - 114 FPS (1.50x) - 135 FPS (1.78x) 500 Hz - 134 FPS - 145 FPS (1.08x) - 151 FPS (1.13x)
Тест 2: У меню
Цей тест порівнює продуктивність, коли мишу не захоплено, тобто курсор видимий, як на екрані паузи F3+Esc. У цьому випадку raw input ніколи не використовується, оскільки грі потрібно знати фактичну позицію курсора, а не сирий відносний рух. Частота опитування становить 1000Hz.
Стовпець "Idle FPS" показує FPS, коли миша не рухається, а наступні два стовпці показують FPS під час швидкого руху мишею над вікном гри, відповідно без Ixeris та з Ixeris. Зауважте, що цей тест було виконано під час початкового випуску Ixeris, і з того часу було зроблено багато покращень.
Idle 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)
Технічні деталі
Потокова безпека
У своєму поточному стані Ixeris не повинен порушувати потокову безпеку. Зворотні виклики, зареєстровані через glfwSetCallback, виконуються в потоці рендерингу. Виклики функцій GLFW, які мають викликатися в головному потоці, якщо вони зроблені в інших потоках, передаються до головного потоку. Ці виклики можуть негайно повернутися, якщо їх можна безпечно відкласти, або інакше можуть блокувати викликача, доки виклик не завершиться.
Починаючи з версії 3.1.0, вимоги щодо потокової безпеки в документації GLFW суворо дотримуються.
Кешування стану GLFW
Більшість функцій GLFW мають викликатися з головного потоку. Однак багато модів можуть викликати їх із потоку рендерингу. Щоб уникнути погіршення продуктивності, спричиненого міжпотоковою комунікацією, Ixeris кешує часто використовувані стани GLFW для швидкого доступу з будь-якого потоку, без необхідності спрямовувати виклик до головного потоку. Кеші є безпечними та не створюють додаткових затримок.
Покращений обмежувач FPS
Ванільний обмежувач FPS (до 26.1) має недоліки, використовуючи glfwWaitEventsTimeout для сну. Однак цю функцію не можна викликати з потоку рендерингу, і тому вона не працює оптимально з Ixeris.
Ixeris переписує обмежувач FPS гібридним способом, точно засинаючи та починаючи активне очікування, коли час очікування дуже малий.
Глосарій
- Головний потік — це потік, у якому запускається гра. Більшість функцій GLFW мають викликатися в цьому потоці, і він відповідає за опитування подій.
- Потік рендерингу робить усе, що гра зазвичай робить, крім опитування подій.
Ці два терміни є синонімами у ванільному Minecraft.
Як встановити Ixeris
With Millida Launcher
Install Millida Launcher
The launcher is free: download it at millida.net/launcher and sign in with any nickname.
Click “Install” on this page
The launcher opens and installs the mod for Minecraft 1.16.5–26.3 on Fabric, Forge, NeoForge or Quilt automatically.
Launch the game
A profile with it appears in the launcher: click “Play”.
Manually
Install Fabric, Forge, NeoForge or Quilt
The loader must match the game version of the mod file, for example Minecraft 26.3. After installing it, a separate profile appears in your launcher.
Download the file for your version
In the version list above, pick the file Ixeris-4.6.10+26.3-neoforge.jar (677 KB) for your game version and loader.
Put it in the mods folder
The folder is inside .minecraft (Windows: %appdata%\.minecraft\mods). If it does not exist, create it.
Launch the loader profile
Open “Mods” in the main menu: Ixeris should be in the list.
Ixeris works on the player’s side only: there is no need to install it on a server.
Версії
Із залежностями
| Minecraft | Завантажувач | Файл | Дата | Дії |
|---|---|---|---|---|
| 26.3 | NeoForge | 26.3677 КБ | ||
| 26.3 | Fabric, Quilt | 26.3751 КБ 6 | ||
| 26.2 | NeoForge | 26.2680 КБ | ||
| 26.2 | Fabric, Quilt | 26.2754 КБ 5 | ||
| 26.1.2 | NeoForge | 26.1.2679 КБ | ||
| 26.1.2 | Fabric, Quilt | 26.1.2753 КБ | ||
| 1.21.11 | Forge | 1.21.111.5 МБ 2 | ||
| 1.21.11 | NeoForge | 1.21.11680 КБ |
Відгуки
Станьте першим, хто оцінить Ixeris


