Estructura:
- Objetivo
- ¿Dónde está la UI en Intersect?
- Examinando /Intersect.Client.Framework/Gwen/
- Examinando /Intersect.Client.Core/Interface/
- Proximos pasos
Objetivo
En este post pretendo definir un plan a seguir con el objetivo de hacer un primer reconocimiento para analizar y entender la UI de Intersect.
Así que comenzare por tratar de entender como funciona la UI en el proyecto.
¿Dónde está la UI en Intersect?
Analizando la estructura del proyecto que fue investigada previamente, pude observar 2 capas que estan relacionadas directamente con la UI del proyecto:
├─────────────────────────────────────────────────────────┤
CAPA 1: Intersect.Client.Framework/Gwen/
Contiene los componentes genéricos reutilizables (botones, cajas de texto, listas, etc.) y el motor de renderizado de UI (Gwen).
├─────────────────────────────────────────────────────────┤
CAPA 2: Intersect.Client.Core/Interface/
Como las ventanas concretas del juego (login, registro, inventario, chat, etc.) que usan los componentes de la Capa 1.
├─────────────────────────────────────────────────────────┤
Examinando Intersect.Client.Framework/Gwen/
Gwen es como un motor de UI de bajo nivel, tratar de comenzar por ahí no seria la mejor opción aunque sea la base de toda la UI, viéndolo desde otra analogía seria cómo averiguar como es la fabricación de un ladrillo cuando lo que queremos es remodelar una casa.
El siguiente paso será ir directamente a la «capa 2» y estudiar la carpeta /Intersect.Client.Core/Interface/, ya que contiene las ventanas reales del juego que quiero modificar.
Específicamente, comenzaré por ver algunos archivos de ejemplo y averiguar como se construye una ventana de ejemplo y tratar de entender cómo se conectan las ventanas entre sí.
Una vez comprendido el patrón de una ventana, podré aplicar el mismo conocimiento
a cualquier otra ventana del juego.
El objetivo final es poder modificar, añadir o crear nuevas ventanas de UI
adaptadas a las necesidades de mi proyecto.
Examinando Intersect.Client.Core/Interface/
| Elemento | Descripción |
| Debugging/ | DebugWindow.cs: Ventana de debug con tabs (Info, Assets, Entities, Maps, Logs) AssetsSearchableTreeDataProvider.cs: Proveedor de datos de assets para debug Providers/NodeUnderCursorProvider.cs: Proveedor del nodo bajo cursor Providers/ActivePlayerProvider.cs: Proveedor del jugador activo |
| Game/ | Admin/: AdminWindow.cs -Panel de administración BanMuteBox.cs – Diálogo para ban/mute TexturePicker.cs – Selector de texturas para admin Bag/: BagWindow.cs – contenedor de items BagItem.cs – Item individual Bank/: BankWindow.cs – Banco para almacenar items BankItem.cs – Item individual Character/: CharacterWindow.cs – Ventana personaje con stats EquipmentItem.cs – Item de equipamiento individual Chat/: Caja de chat Crafting/: Mesa de crafteo DescriptionWindows/: Components/ – Componentes reutilizable DescriptionWindowBase.cs – Base para ventanas de descripción ItemDescriptionWindow.cs – Tooltip de descripción de item SpellDescriptionWindow.cs – Tooltip de descripción de hechizo EntityPanel/: EntityBox.cs – Panel de entidad PlayerStatusWindow.cs – Ventana de estados activos del jugador SpellStatus.cs – Icono de estado de hechizo Friends/ – Lista de amigos Hotbar/ : Barra de acceso rápido Inventory/ : Ventana de inventario MapItem/ : Ventana de items en el suelo con botón «Loot All» Shop/ : Ventana de tienda para comprar/vender Spells/ : Ventana de hechizos similar al inventario Trades/ : Ventana de intercambio entre jugadores Typewriter/ – Efecto de escritura para textos de eventos/diálogos. AnnouncementWindow.cs – Draggable.cs – Elemento arrastrable para drag & drop de items/hechizos EventWindow.cs – Ventana de diálogo de eventos GameInterface.cs – CONTROLADOR MAESTRO DEL JUEGO. Coordina TODAS las ventanas durante el juego GuildWindow.cs – Ventana de guild MenuContainer.cs – Barra de botones principal durante el juego PartyWindow.cs – Ventana de grupo PictureWindow.cs – QuestOfferWindow.cs – QuestsWindow.cs – Log de quests SimplifiedEscapeMenu.cs – Menú de escape simplificado SlotItem.cs – Item genérico en slot (base para inventario, banco, tienda, etc.) TargetContextMenu.cs – Menú contextual al clickear entidad con opciones |
| Menu/ | CharacterCreationWindow.cs – Ventana de creación de personaje CharacterSelectionPreviewMetadata.cs – Datos de preview de personaje CreditsParser.cs – Parser de créditos con estructura CreditsWindow.cs – Ventana de créditos EscapeMenuWindow.cs – Menú de pausa/escape durante el juego. EscapeMenuWindow.Designer.cs – ForgotPasswordWindow.cs – Recuperación de contraseña. Campo para usuario/email y disclaimer IMainMenuWindow.cs – Ventana principal del menú con botones LoginWindow.cs – Ventana de inicio de sesión MainMenu.cs – CONTROLADOR PRINCIPAL DEL MENÚ. MainMenuWindow.cs – Ventana principal del menú con botones MainMenuWindow.Designer.cs – MenuGuiBase.cs – Contenedor base del menú PasswordChangeMode.cs – PasswordChangeWindow.cs – Cambio de contraseña RegistrationWindow.cs – Ventana de registro SelectCharacterWindow.cs – Selector de personaje |
| Shared/ | AlertWindow.cs – Ventana de alerta InputBox.cs – Diálogo de entrada genérico InputType.cs – Enum de tipos de input SettingsWindow.cs – Configuración completa del juego StatisticsPanel.cs – Panel de FPS, Ping,debug en tiempo real VersionLabel.cs – Panel de versión del engine VersionPanel.cs – Label de versión con click para copiar |
| Interface.cs | CONTROLADOR MAESTRO de toda la UI del juego |
| MutableInterface.cs | Interfaz mutable base que permite crear y manipular elementos UI |
| Window.cs | Clase base abstracta para todas las ventanas del juego |
Proximos pasos
Con esta exploración inicial, tenemos un panorama mucho mas amplio para saber como modificar nuestra UI.
Un buen punto de partida es personalizar toda la interfaz visible para el jugador, comenzando por las pantallas de login, registro y menú principal, que son el primer contacto con el juego.
¿Por donde comenzar?
-Identificar las ventanas clave
-Entender cómo se construye una ventana concreta
-Realizar una modificación mínima y documentar el proceso
Consejos para identificar la UI visible
1.-Ejecuta el cliente en modo depuración y anota los nombres de las ventanas que ves en cada pantalla (login, registro, creación de personaje, juego, etc.).
2.-Busca esos nombres comenzando en la carpeta Interface/ para tratar de localizarlos.
3.-Revisar las clases GameInterface.cs y MainMenu.cs porque allí se instancian y controlan las ventanas.






Deja una respuesta