Personalização da interface
Informações sobre a personalização da interface no Hytale.
A interface do usuário pode ser personalizada por mods feitos diretamente no lado do servidor. Grande parte das telas da interface do usuário, mostradas aos jogadores, podem ser modificadas pelos donos de servidores através de mods.
Personalização da interface no Hytale
O Hytale oferece extensas capacidades de personalização da interface através de mods gerenciados pelo servidor, permitindo que os donos de servidores modifiquem muitas das páginas da interface com as quais os jogadores interagem.
Controle de fluxo
O sistema de interface do Hytale adota um padrão de fluxo de controle específico:
- O servidor envia os dados da interface para o cliente;
- O client renderiza a interface;
- O usuário interage com a interface (p. ex.: pressionando um botão);
- O client envia o evento de interação para o servidor;
- O servidor executa a lógica de retorno de chamada para o evento.
Essa arquitetura significa:
- O cliente é responsável por renderizar a interface e enviar as interações do usuário para o servidor;
- O servidor lida com toda a lógica real por trás das interações do usuário.
Como o servidor processa toda a lógica da interface, ocorre um impacto inevitável de latência na resposta aos comandos do usuário. Como os cliques e as interações dependem do processamento do servidor para serem validados, a latência da rede impacta diretamente a fluidez e a resposta da interface.
Além disso, uma vez que a modificação em client-side não é suportada. Por isso, nenhum valor modificado fica no client.
Recursos de modelo da interface
O sistema de personalização da interface do Hytale funciona através da seguinte estrutura:
- Modelo da interface: enviado ao client como um recurso;
- Comportamento da interface: definido no código Java;
- Modelos personalizados: permite a criação de modelos de interface sob medida ao invés de reaproveitar os existentes (como modificações no menu do Minecraft).
Implementações do framework para a interface
Atualmente, o Hytale é compatível com várias implementações de interface, com planos para consolidar no NoesisGUI:
Implementação legado
- Serve como um exemplo das capacidades de modificação do servidor;
- Usa uma combinação de elementos do jogo, recursos de marcação de interface e código de mod em Java;
- Utiliza uma linguagem de marcação personalizada legado;
- Será descontinuado a favor do NoesisGUI.
NoesisGUI (framework principal)
- Usa a linguagem de marcação XAML para a definição da IU;
- Compatível com várias linguagens para internacionalização;
- Executa bindings em C# no lado do cliente, não em C++;
- Representa a direção futura do sistema da IU do Hytale.
Terceiro framework
- Em processo de descontinuação;
- Será substituído por NoesisGUI como parte do esforço de consolidação.
Considerações de desempenho
Devido à natureza do processamento server-side da IU, há características de desempenho que devem ser consideradas, como:
- Impacto na latência: os cliques dos botões e interações com a interface do usuário devem viajar para o servidor antes de ter efeito. Isso significa que a latência da rede afeta diretamente a capacidade de resposta da IU;
- Sem persistência no client: como as modificações em client-side não são permitidas, então nenhum valor modificado permanece salvo no client;
- Arquitetura otimizada: o sistema do Hytale foi projetado para minimizar a latência por meio de protocolos de comunicação eficientes e desempenho de servidor otimizado, garantindo interações fluidas, apesar dos requisitos de processamento em server-side.
A arquitetura prioriza a segurança e a consistência ao centralizar a lógica da interface no servidor mantendo experiências responsivas do usuário.