Кастомізація інтерфейсу
Відомості щодо кастомізації інтерфейсу користувача в Hytale.
Інтерфейс можна налаштовувати за допомогою серверних модифікацій (server-side modding). Багато сторінок інтерфейсу, які бачать гравці, доступні для модифікації власниками серверів за допомогою модів.
Персоналізація інтерфейсу
Hytale надає широкі можливості для налаштування інтерфейсу за допомогою серверних модифікацій, дозволяючи власникам серверів змінювати багато сторінок інтерфейсу, з якими взаємодіють гравці.
Послідовність виконання
Система інтерфейсу в Hytale працює за певною схемою керування потоком:
- Сервер надсилає дані інтерфейсу клієнту
- Клієнт рендерить (візуалізує) інтерфейс
- Користувач взаємодіє з інтерфейсом (наприклад, натискає кнопку)
- Клієнт надсилає подію взаємодії на сервер
- Сервер виконує логіку зворотного виклику (callback) для цієї події
Ця архітектура передбачає наступне:
- Клієнт відповідає за рендеринг інтерфейсу та надсилання дій користувача на сервер
- Сервер обробляє всю фактичну логіку, що стоїть за діями користувача
Оскільки сервер обробляє всю логіку інтерфейсу, існує неминучий вплив затримки на швидкість відгуку UI. Натискання кнопок та інші взаємодії мають пройти шлях до сервера, перш ніж вони набудуть чинності, а це означає, що мережевий пінг безпосередньо впливає на чутливість інтерфейсу.
Крім того, оскільки клієнтські модифікації (client-side modding) не підтримуються, жодні модифіковані значення не зберігаються на стороні клієнта.
Ассети макетів інтерфейсу
Система налаштування інтерфейсу Hytale працює за такою структурою:
- Макет інтерфейсу (UI Layout): Надсилається клієнту як ассет.
- Поведінка інтерфейсу (UI Behavior): Визначається в Java-коді.
- Власні макети (Custom Layouts): Дозволяють створювати унікальні (bespoke) макети інтерфейсу замість перероблення вже існуючих (на відміну від модифікацій меню інвентарю в Minecraft).
Реалізації фреймворку інтерфейсу
Наразі Hytale підтримує кілька реалізацій інтерфейсу, але в планах є перехід на єдину систему NoesisGUI:
Застаріла реалізація (Legacy Implementation)
- Служить прикладом можливостей серверного модингу
- Використовує комбінацію ігрових елементів, ассетів розмітки інтерфейсу (UI Markup Assets) та мод-коду на Java
- Використовує застарілу власну мову розмітки
- Буде виведена з експлуатації (deprecated) на користь NoesisGUI
NoesisGUI (Основний фреймворк)
- Використовує мову розмітки XAML для визначення інтерфейсу.
- Підтримує багатомовність для міжнародної локалізації.
- Працює на C# bindings на стороні клієнта (не на C++).
- Представляє майбутній напрямок розвитку системи інтерфейсу Hytale.
Третій фреймворк
- Наразі перебуває на стадії виведення з експлуатації.
- Буде замінений на NoesisGUI в межах зусиль з уніфікації системи.
Питання продуктивності (Performance Considerations)
Через серверний характер обробки UI існують певні особливості продуктивності, які слід враховувати:
- Вплив затримки (Latency Impact): Натискання кнопок та взаємодії з UI мають пройти шлях до сервера, перш ніж вони набудуть чинності. Це означає, що мережевий пінг безпосередньо впливає на чутливість інтерфейсу.
- Відсутність клієнтського збереження (No Client Persistence): Оскільки клієнтські модифікації не підтримуються, жодні модифіковані значення не зберігаються на стороні клієнта.
- Оптимізована архітектура: Система Hytale розроблена для мінімізації затримок за допомогою ефективних протоколів зв'язку та оптимізованої продуктивності сервера. Це забезпечує плавну взаємодію, попри вимоги до серверної обробки.
Пріоритети системи: Архітектура надає пріоритет безпеці та узгодженості даних (consistency), централізуючи логіку UI на сервері, водночас підтримуючи комфортний рівень відгуку для користувача.