Кастомизация пользовательского интерфейса
Информация о кастомизации интерфейса в Hytale.
Пользовательский интерфейс (UI) можно кастомизировать с помощью серверного моддинга. В Hytale много возможностей для создателей модов и большая часть доступного для игрока UI можно переделать под себя.
Кастомизация UI в Hytale
Hytale предоставляет обширные возможности для настройки UI посредством моддинга на стороне сервера, что позволяет владельцам серверов изменять многие части UI, с которыми взаимодействуют игроки.
Управление потоками
Система UI в Hytale соответствует определенной схеме управления потоком:
- Сервер отправляет UI данные клиенту
- Клиент рендерит пользовательский интерфейс
- Пользователь взаимодействует с интерфейсом (например, нажатие кнопки)
- Клиент отправляет событие взаимодействия на сервер
- Сервер выполняет логику обратного вызова для события
Такая архитектура означает:
- Клиент отвечает за рендеринг пользовательского интерфейса и отправку взаимодействия пользователя на сервер
- Сервер обрабатывает всю фактическую логику взаимодействия с пользователем
Поскольку сервер обрабатывает всю логику интерфейса, существует задержка, которая влияет на скорость отклика UI. Нажатия кнопок и другие взаимодействия должны дойти до сервера, прежде чем вступить в силу, а это означает, что пинг напрямую влияет на отклик UI.
Кроме того, поскольку моддинг на стороне клиента не поддерживается, модифицированные элементы не сохраняются на клиенте.
Ассеты слоёв интерфейса
Система кастомизации интерфейса Hytale работает по следующей структуре:
- Макет UI: Отправляется клиенту в ассета
- Поведение пользовательского интерфейса: Определено в Java коде
- Пользовательские макеты: позволяет создавать индивидуальные макеты пользовательского интерфейса вместо переделки существующих (в отличие от модификаций инвентаря в Minecraft).
Реализации фрэймворков пользовательского интерфейса
Hytale в настоящее время поддерживает несколько реализаций UI, при этом планируется перейти на NoesisGUI:
Legacy реализация
- Служит примером возможностей серверного моддинга
- Использует комбинацию игровых элементов, ассетов разметки UI и кода мода на базе Java.
- Использует legacy язык разметки
- Будет признано устаревшим в пользу NoesisGUI
NoesisGUI (главный фреймворк)
- Использует язык разметки XAML для определения UI
- Поддержка нескольких языков для интернационализации
- Работает на C#-привязках на стороне клиента (не C++)
- Представляет будущее направление развития системы пользовательского интерфейса Hytale
Сторонний фреймворк
- Сейчас на стадии завершения использования
- Будет заменено NoesisGUI в рамках унификации
Особенности производительности
Поскольку обработка UI выполняется на стороне сервера, необходимо учитывать некоторые особенности производительности:
- Влияние на задержку: нажатия кнопок и взаимодействия с пользовательским интерфейсом должны быть отправлены на сервер, прежде чем вступят в силу, а это означает, что пинг напрямую влияет на скорость отклика UI.
- Нет сохранения на стороне клиента: поскольку модификация на стороне клиента не поддерживается, измененные элементы не сохраняются на стороне клиента.
- Оптимизированная архитектура: система Hytale разработана для минимизации задержек за счет эффективных протоколов связи и оптимизации производительности сервера, что гарантирует стабильную работу несмотря на обработку кода на стороне сервера
Архитектура ставит во главу угла безопасность и согласованность, централизуя логику пользовательского интерфейса на сервере и сохраняя при этом отзывчивость пользовательского интерфейса.