UI Customization
Information about UI customization in Hytale.
UI can be customized via server-side modding. Many of the UI pages shown to players are available to be modified by server owners through mods.
UI Customization in Hytale
Hytale provides extensive UI customization capabilities through server-side modding, allowing server owners to modify many of the UI pages that players interact with.
Control Flow
The UI system in Hytale follows a specific control flow pattern:
- Server sends UI data to the client
- Client renders the UI
- User interacts with the UI (e.g., pressing a button)
- Client sends the interaction event to the server
- Server executes the callback logic for the event
This architecture means:
- The client is responsible for rendering UI and sending user interactions to the server
- The server handles all the actual logic behind user interactions
Because the server processes all UI logic, there is an inherent latency impact on UI responsiveness. Button clicks and other interactions must travel to the server before taking effect, meaning network ping directly affects UI responsiveness.
Additionally, since client-side modding is not supported, no modded values persist on the client.
UI Layout Assets
Hytale's UI customization system works through the following structure:
- UI Layout: Sent to the client as an asset
- UI Behavior: Defined in Java code
- Custom Layouts: Enables creation of bespoke UI layouts rather than repurposing existing ones (unlike inventory menu modifications in Minecraft)
UI Framework Implementations
Hytale currently supports multiple UI implementations, with plans to consolidate on NoesisGUI:
Legacy Implementation
- Serves as an example of server modding capabilities
- Uses a combination of in-game elements, UI Markup Assets, and Java mod code
- Utilizes a legacy custom markup language
- Will be deprecated in favor of NoesisGUI
NoesisGUI (Primary Framework)
- Uses XAML Markup Language for UI definition
- Supports multiple languages for internationalization
- Runs on C# bindings on the client side (not C++)
- Represents the future direction of Hytale's UI system
Third Framework
- Currently being phased out
- Will be replaced by NoesisGUI as part of the consolidation effort
Performance Considerations
Due to the server-side nature of UI processing, there are inherent performance characteristics to consider:
- Latency Impact: Button clicks and UI interactions must travel to the server before taking effect, meaning network ping directly affects UI responsiveness
- No Client Persistence: Since client-side modding is not supported, no modded values persist on the client
- Optimized Architecture: Hytale's system is designed to minimize latency through efficient communication protocols and optimized server performance, ensuring smooth interactions despite server-side processing requirements
The architecture prioritizes security and consistency by centralizing UI logic on the server while maintaining responsive user experiences