Sobre el proyecto

Gua es un protocolo de automatización en tiempo de ejecución para juegos, inspirado en Playwright. Expone la interfaz de usuario de un juego en ejecución como un Árbol de UI Semántico, lo que permite que pruebas automatizadas, inspectores y agentes de IA localicen controles por ID, rol, texto y estado, en lugar de depender de un frágil reconocimiento de imágenes o coordenadas de pantalla. Es compatible con Godot 4.7 mediante un complemento de GDScript respaldado por GDExtension, y con Unity 6 mediante un paquete que refleja automáticamente los controles de UI Toolkit, uGUI y TextMeshPro en compilaciones de Windows x64, Linux x64 y macOS Mono de Intel/Apple Silicon. Más allá de la automatización de UI, Gua proporciona un Árbol de Objetos del Mundo para información semántica del mundo del juego, Acciones de Juego Semánticas y Entrada Cruda opcional para la jugabilidad, tiempo virtual determinista a través de GuaClock, grabación, comparación visual y una política de exposición que limita lo que los jugadores de IA pueden ver y qué operaciones de UI pueden usar. Los juegos nativos pueden conectarse a través de gui-mcp, mientras que las compilaciones de Godot Web Export y Unity WebGL pueden usar el adaptador experimental de navegador nativo gua-webmcp. Gua se distribuye como varios paquetes NuGet: Gua.Core para enlaces ABI en C, Gua.Testing para localizadores, esperas y aserciones en pruebas .NET, Gua.Testing.Godot y Gua.Testing.Unity para hosts de prueba específicos del motor, Gua.Runtime para autores de adaptadores, Gua.Testing.Visual para comparación de referencia PNG, Gua.Testing.Snapshots para referencias JSON deterministas de UI y Mundo, y Gua.Testing.Recording para viajes de usuario reproducibles. Un Inspector de Gua proporciona interfaces de escritorio para navegador y Windows para inspeccionar el árbol semántico, el estado de nodos, capturas de pantalla y registros. El repositorio link1345/gua-tester ofrece flujos de trabajo reutilizables de GitHub Actions para ejecutar pruebas de Godot y Unity en CI.