確立された情報サーバーインターフェイス
UIカスタマイズ
HytaleのUIカスタマイズに関する情報。
UIはサーバーサイドのMODによってカスタマイズできます。 プレイヤーに表示される多くのUIページは、サーバー所有者がMODを通じて変更できるようになっています。
HytaleのUIカスタマイズ
Hytaleは、サーバーサイドのMODを通じてUIカスタマイズの幅広い機能を提供しており、サーバー所有者はプレイヤーが操作する多くのUI ページを変更できます。
制御フロー
HytaleのUIシステムは、特定の制御フロー パターンに従います。
- サーバーはクライアントにUIデータを送信します
- クライアントがUIをレンダリングする
- ユーザーがUIを操作する(例:ボタンを押す)
- クライアントはインタラクションイベントをサーバーに送信する
- サーバーはイベントのコールバック処理を実行します
このアーキテクチャは次のことを意味します。
- クライアントはUIをレンダリングし、ユーザーインタラクションをサーバーに送信する役割を担う。
- サーバーは、ユーザーの操作に関するすべての実際の処理を担います。
パフォーマンスへの影響の可能性
すべてのUI動作はサーバーで処理されるため、UIの反応にはラグが生じます。 ボタンのクリックやその他の操作は、反映されるより先にサーバーへ送信される必要があるため、ネットワークの遅延(ping)がUIの反応速度に直接影響します。
さらに、クライアント側のMOD開発はサポートされていないため、MODの数値はクライアント上に保持されません。
UIレイアウトアセット
HytaleのUIカスタマイズ システムは、次の構造で機能します。
- UIレイアウト:アセットとしてクライアントに送信
- UI動作:Javaのコードで定義
- カスタム レイアウト:既存のレイアウトを再利用するのではなく、オリジナルでUIレイアウトを作成できます(Minecraftのインベントリメニューの変更とは異なります)
UIフレームワークの実装
Hytaleは現在複数のUI実装をサポートしており、NoesisGUIに統合する予定です。
従来の実装
- サーバーでのMODの機能の一例として機能します。
- ゲーム内要素、UIマークアップアセット、JavaのMODコードを組み合わせて使用します
- 従来の自作マークアップ言語を利用する
- NoesisGUIに置き換えられるため廃止される予定です
NoesisGUI (主要なフレームワーク)
- UI定義にはXAMLマークアップ言語を使用する
- 国際化のために複数の言語をサポート
- クライアント側ではC#バインディングで実行されます(C++ではありません)
- HytaleのUIシステムの今後の方向性を示しています。
第三のフレームワーク
- 現在段階的に廃止中
- 統合作業の一環としてNoesisGUIに置き換えられます
パフォーマンスに関する考慮事項
UI処理がサーバー側で行われる性質上、考慮すべき固有のパフォーマンス特性があります。
- 遅延の影響:ボタンのクリックやUIの操作は、効果を発揮するより先にサーバーに送信される必要があるため、ネットワークのpingはUIの応答性に直接影響します。
- クライアントでの保存無し: クライアント側のMod開発はサポートされていないため、Modによる値はクライアント側に保持されません。
- 最適化されたアーキテクチャ:Hytaleのシステムは、効率的な通信プロトコルと最適化されたサーバーパフォーマンスによって遅延を最小限に抑えるよう設計されており、サーバー側での処理が必要であってもスムーズな操作を実現します。
このアーキテクチャは、UIロジックをサーバー側に集約することでセキュリティと一貫性を優先しつつ、ユーザーにとって応答性の高い操作体験を維持します。