Modern UI

Modern UI

Fabric
Modern UI - 11 / 17

logo

Modern UI by Icyllis Milica

Что это такое?

Modern UI — это не просто очередной мод для Minecraft, а полноценный каркас для создания приложений с 2D- и 3D-графикой. В основе лежит собственное ядро Modern UI Core Framework, которое использует современные графические API для высокопроизводительного рендеринга в реальном времени. При этом проект заметно улучшает и оптимизирует набор функций, знакомых пользователям Google Android, и включает собственный движок текста с поддержкой интернационализации.

Для Minecraft мод выступает в роли загрузчика этого фреймворка и предоставляет API для моддинга на базе Forge/Fabric. С его помощью можно создавать мощные графические интерфейсы прямо в игре. Управление всеми настройками мода осуществляется через экран Action Center, который открывается по умолчанию сочетанием клавиш Ctrl+K (или ⌘+K на macOS). Кстати, экран Preferences там можно листать свайпом — на второй странице находятся настройки шрифтов.

Движок текста нового поколения

Отдельного внимания заслуживает встроенная текстовая система. Разработчик проделал огромную работу, чтобы текст в Minecraft стал не просто читабельным, а по-настоящему качественным на любых масштабах — как в 2D, так и в 3D. Вот что умеет этот движок:

  • Живая работа со шрифтами: загрузка и предпросмотр TrueType/OpenType шрифтов в реальном времени, улучшенный механизм fallback-шрифтов.
  • Качественный рендеринг: сглаживание (anti-aliasing), хинтинг FreeType, улучшенный SDF-рендеринг с батч-обработкой, вычисление точного размера шрифта в пространстве устройства для нативной отрисовки глифов.
  • Эмодзи: поддержка всех эмодзи из списка Unicode 15.1 (сентябрь 2023) через Google Noto Color Emoji.
  • Работа с текстом: настраиваемый эвристический алгоритм для двунаправленного текста (BiDi), настройка теней и сырого размера шрифта, перенос строк по стандарту Unicode с учётом CSS line-break и word-break.
  • Производительность: быстрые и точные асинхронные вычисления раскладки, эффективный алгоритм упаковки прямоугольников для глифов, использование настоящих grayscale-текстур (1 байт на пиксель вместо 4 байт у ванильного Minecraft).
  • Совместимость: мод дружит с OptiFine, Sodium (Rubidium), Iris (Oculus) и множеством других модов, а также поддерживает JSON-определения шрифтов Minecraft (включая битмап-шрифты и TTF).

Дополнительные возможности для игры

Помимо текста, мод добавляет целый набор полезных мелочей, которые делают игру комфортнее:

  • Изменение цвета фона экранов и размытие фонового изображения по Гауссу (настоящий однопроходный blur, а не двухпроходный box blur, как у некоторых конкурентов).
  • Плавное появление фона с анимацией затухания.
  • Новые режимы окна: полноэкранный без рамок и развёрнутый без рамок.
  • Ограничение FPS и плавное затухание громкости, когда окно игры не в фокусе или свёрнуто.
  • Автопауза одиночной игры при открытии инвентаря.
  • Ползунок масштаба GUI вместо дискретных значений (с подсказками).
  • Звуковой сигнал "динь" при загрузке главного меню.
  • Плавная прокрутка в списках ванильного Minecraft и панелях Forge.
  • Зум по клавише "C" — аналог OptiFine.
  • Отмена/повтор действий (Ctrl+Z/Ctrl+Y) и поддержка графем для всех текстовых полей.
  • Проигрывание локальной музыки с возможностью перемотки и визуализацией спектра.
  • Эмодзи-шорткоды Discord/Slack/GitHub/IamCal/JoyPixels прямо в чате.
  • Стильные всплывающие подсказки с настраиваемыми рамками, градиентами, автопереносом строк и точным позиционированием до пикселя.

Ключевые возможности фреймворка

Как самостоятельная платформа, Modern UI предлагает:

  • 2D-библиотеку для нескольких графических API.
  • Промежуточное представление и AST для языков шейдеров.
  • Рендеринг векторной графики с использованием SDF.
  • Пост-обработку изображений.
  • Быстрые вычисления матриц и векторов.
  • Конвертацию форматов изображений.
  • Анимации и переходы.
  • Событийный цикл и многопоточность.
  • Сложную раскладку текста с шейпингом.
  • MVVM и управление жизненным циклом.
  • Автоматическую RTL-раскладку интерфейса.
  • Поддержку Markdown (CommonMark).

Тонкая настройка шрифтов

В настройках Action Center (Preferences → вторая страница) можно указать предпочитаемое семейство шрифтов — как системный шрифт, так и файл TTF/OTF. Для случаев, когда нужный шрифт недоступен, предусмотрены fallback-семейства.

Движок Modern UI следует JSON-определениям шрифтов Minecraft, игнорируя лишь типы glyph provider legacy_unicode и unihex. Упомянутые семейства шрифтов Modern UI будут использоваться как запасные для шрифтов Minecraft. Опция Default Font Behavior (в Preferences > Text Layout) позволяет удалить некоторые glyph provider'ы из стандартного шрифта minecraft:default. Если выставить значение Keep Other, ванильные ASCII-шрифты использоваться не будут (при условии, что не включён Force Unicode Font). Для любителей ванильного юникода есть совет: скачайте OTF-версию GNU Unifont.

Сравнение с Caxton

На Modrinth можно найти мод Caxton, известный своим MSDF-рендерингом текста. У Modern UI и Caxton есть общие черты: оба используют HarfBuzz для шейпинга, поддерживают Unicode-обработку, переносы строк и разрывы графем, совместимы с Iris в режиме растрового рендеринга и обладают эффективным алгоритмом упаковки прямоугольников. Но различий гораздо больше:

  • Caxton использует более новую версию HarfBuzz, тогда как Modern UI довольствуется версией из JDK 17 (обновление появится в JDK 21).
  • Caxton рендерит текст через multi-channel SDF, что даёт более чёткое изображение при увеличении; у Modern UI буквы получаются слегка округлыми.
  • Modern UI совместим с OptiFine, а Caxton — нет.
  • Modern UI поддерживает цветные эмодзи, Caxton — нет.
  • Modern UI поддерживает хинтинг FreeType (важно для мониторов с низким разрешением), Caxton — нет.
  • Modern UI обеспечивает идеальную выборку нативных глифов в пространстве экрана — идеально для 2D.
  • Одно-канальный SDF без дополнительных затрат GPU, всегда 1bpp-текстуры.
  • Умный метод сэмплирования SDF при уменьшении текста.
  • Не нужно ждать генерации MSDF-текстур — шрифты переключаются в игре мгновенно.
  • Различные эвристики направления текста и стратегии переноса строк.
  • Нет дополнительных нативных библиотек, поэтому работает на macOS.
  • Чуть более высокая производительность раскладки и меньшее потребление RAM.

Совместимость и конфликты

Мод полностью совместим с OptiFine, Sodium, Iris, Create и AoA3. Правда, при активных шейдерах автоматически отключается опция Use Modern Text Shaders in 3D — иначе контур светящегося текста станет невидимым.

Моды, которые Modern UI заменяет собой

МодВерсииПричина
Blur1.15 ~ 1.21.8Полное функциональное покрытие, лучшая оптимизация
Controlling1.15Альтернативная реализация
TipTheScales1.15 ~ 1.21.8Альтернативная реализация
Inventory Pause1.18 ~ 1.21.1Альтернативная реализация
Emojiful1.18 ~ 1.21.1Поддержка цветных эмодзи с версии 3.5.0; у Emojiful плохой код, вызывающий фризы, высокое потребление VRAM и прочие проблемы
Borderless Window1.18 ~ 1.21.4Альтернативная реализация
Ding1.18 ~ 1.21.4Альтернативная реализация
SmoothScrollingEverywhere1.18 ~ 1.19Альтернативная реализация
FPS Reducer1.18 ~ 1.21.8Альтернативная реализация

Возможные конфликты и их решения

  • Emojiful (1.16 ~ 1.21.1): лучше не использовать; если крайне нужно — отключите текстовый движок Modern UI в конфиге.
  • Legendary Tooltips (1.16 ~ 1.21.4): отключите тултипы Modern UI в конфиге.
  • FeyTweaks (1.18 ~ 1.21.1): отключите TextRendererMixin в mixin-конфиге FeyTweaks.
  • SmoothScrollingEverywhere (1.18 ~ 1.19): отключите плавную прокрутку Modern UI в конфиге.
  • Caxton (1.18 ~ 1.21.8): отключите текстовый движок Modern UI.
  • ImmediatelyFast (1.18 ~ 1.21.8): для версий 1.18 ~ 1.21.4 отключите hud_batching, font_atlas_resizing и fast_text_lookup (иначе возможны случайные краши); для 1.21.6 ~ 1.21.8 отключите avoid_redundant_framebuffer_switching.
  • Untranslated Items (1.18 ~ 1.21.4): отключите кэш текстовых компонентов Modern UI.

Поддерживаемые версии и системные требования

На данный момент активно поддерживаются версии: 1.21.8, 1.21.7, 1.21.6, 1.21.1, 1.21, 1.20.1, 1.20. Версия 1.21.4 скоро будет исключена из поддержки. Все более старые версии (от 1.14.4 до 1.21.3) больше не поддерживаются. Описание на этой странице актуально для Minecraft 1.20.1 и выше — в старых версиях часть функций может отсутствовать.

Вопреки распространённому мнению, Modern UI не требует мощного ПК. Если вы играете в ванильный Minecraft, мод будет работать и у вас. Единственное условие — не забывайте обновлять драйверы GPU. Официальные требования:

  • ОС: Windows 8.1+, Linux (X11 или Wayland), macOS.
  • Архитектура: x64 или arm64.
  • GPU: GeForce 210 или новее.
  • Драйвер GPU: OpenGL 3.3+ или Vulkan 1.1+ (чем новее, тем лучше).
  • Java: 17+ (чем новее, тем лучше).

Частые вопросы

Чем отличается Default Font Behavior от Force Unicode Font?
Modern UI всегда перенаправляет юникод-шрифты на свой шрифт по умолчанию. Default Font Behavior в версиях 1.19+ установлен в KEEP ALL — тогда для ASCII-символов используется стандартный шрифт Minecraft. KEEP OTHER отключает стандартный шрифт, но оставляет дополнительные (например, из мини-игр). Это и есть отличие от Force Unicode Font (IGNORE ALL).

Сильно ли нагружает систему?
Нет. Modern UI не оказывает значительного влияния на CPU, GPU, RAM и VRAM благодаря хорошей оптимизации. Фреймворк даже эффективнее приложений на Chromium. Правда, на слабых ПК эффект размытия фона может быть тяжёлым — ванильный Minecraft не поддерживает генерацию мипмапов на render targets. Но даже в этом случае blur от Modern UI работает быстрее, чем у мода Blur.

Как отключить все изменения ванильной игры?
Почти всё настраивается. Не конфигурируются только алгоритм масштаба GUI и некоторые низкоуровневые вещи. Все остальные функции можно отключить через Action Center (Ctrl+K) или конфиг-файлы в gameDir/config/ModernUI/.

Это клиентский мод? Нужен ли он на сервере?
Начиная с версии 1.19.2, устанавливать мод на сервер нет смысла. Все серверные функции перенесены в Forge API и Fabric API.

Как начать разработку модов на основе Modern UI?
Проект ещё на ранней стадии, спецификация дописывается. Можно изучить JavaDoc. Примеры — сам Modern UI (Action Center) и Flux Networks. Вопросы можно задавать на Discord-сервере.

Все сообщения об ошибках отправляйте на GitHub issue tracker. Обсуждения и предложения — на Discord-сервере.

Все права на данный контент принадлежат его авторам. Мы не храним и не распространяем файлы — страница носит исключительно информационный характер. Оригинальный источник доступен по этой ссылке.

0
0
0

Комментарии (0)

Войдите, чтобы оставить комментарий

Пока нет комментариев

Будьте первым!