CommunityProgramación y desarrollogithub.com

game-automation (automatización de juegos)

Inicia, visualiza y controla un juego real para que un agente pueda probar sus propios mods. Cubre la ejecución mediante Steam o el ejecutable, modo ventana con tamaño fijo, capturas de pantalla de la ventana del juego (captura segura por GPU), clics y escritura en menús, teclas de retención, ratón relativo, limpieza de informes de fallos, finalización por PID, lectura de registros, escenas de prueba con script y un puente JSON dentro del juego que permite al agente observar y actuar. Prioriza Windows (también desde WSL), con notas para Linux y macOS. Úsalo cuando un mod deba verificarse en el juego, al navegar menús automáticamente o al construir una escena de prueba o demo repetible.

¿Qué es game-automation (automatización de juegos)?

La habilidad game-automation para asistentes de IA (como Claude Code, Cursor o Codex) proporciona las manos y los ojos del agente dentro de un juego real. Permite lanzar el juego (ya sea desde Steam o un ejecutable directo, con opciones de modo ventana y tamaño fijo), capturar la ventana del juego mediante captura de GPU (evitando pantallas negras en juegos renderizados por GPU), y enviar acciones de teclado y ratón (incluyendo movimiento relativo para cámaras FPS y código de tecla virtual). También ofrece herramientas para leer registros, limpiar procesos huérfanos de informes de fallos, y un puente JSON opcional dentro del propio mod para que el agente observe y actúe sin depender únicamente de píxeles. Diseñado para Windows (funciona también desde WSL), con instrucciones para Linux (X11 y Wayland) y macOS. Es útil para verificar mods automáticamente, navegar menús de forma consistente y construir escenas de prueba repetibles, todo con medidas de seguridad para no interferir con el usuario humano.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/rehan-remade/universal-modder/tree/main/skills/game-automation

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Automatización de juegos: las manos y los ojos del agente

El juego real es el oráculo. El bucle es: lanzar → navegar → preparar la escena → actuar → capturar pantalla y leer registros → decidir. Constrúyelo una vez por juego, luego cada cambio que hagas podrá verificarse en un minuto.

Windows (nativo o desde WSL): um win

um win setup                                   # una vez: herramientas PowerShell + un ffmpeg con gfxcapture, elige NVENC/AMF/QSV/x264
um win ps                                      # procesos en ventana: pid, nombre, título
um win launch --steam 105600                   # o: um win launch "C:\Juegos\Foo\Foo.exe" -- -windowed
um win shot --exe Terraria.exe shot.png --scale 0.33   # fotograma completo + una copia a 1/3 que es barata de mirar
um win drive --proc Terraria "focus" "click 640 360" "key 0x1B" "type hola" "hold 0x44 1500"
um win drive --proc Terraria "hold 0x20 150" "sleep 200" "hold 0x20 150"   # sleep <ms> pausa entre pasos
um win drive --proc Terraria idle              # segundos desde que el usuario tocó el ratón/teclado (no espera)
um win kill <pid>                              # solo PID exacto
um win reg get "HKCU\Software\..."             # registro (reg set hace una copia de seguridad de la clave primero)

Desde Python (para scripts más largos): from um.win import Drive, shot, Recorder, luego d = Drive("AoE2DE_s"), d.focus(), d.click(x, y), d.key("0x0D").

Comandos de WinDrive (um/ps1/WinDrive.ps1; protocolo stdin, una respuesta por línea). Las coordenadas están en el área cliente de la ventana del juego.

  • Ratón: move x y, click x y [right], mdown/mup, drag x0 y0 x1 y1, rel dx dy (cámaras FPS / entrada bruta), wheel 120.
  • Teclado: key <vk> [tap|down|up], hold <vk> <ms>, type <texto>, scanmode on (DirectInput / juegos de entrada bruta que ignoran eventos de tecla virtual).
  • Ventana: focus, rect, size <an> <al> (establece el tamaño del cliente), title, fg, idle, untop.
  • Temporización: sleep <ms> espera entre pasos en una misma llamada. Cada llamada um win drive inicia PowerShell (1-2 s), así que pon las combinaciones temporizadas en una sola llamada.
  • Códigos de tecla virtual: Esc 0x1B, Intro 0x0D, Espacio 0x20, W/A/S/D 0x57/0x41/0x53/0x44, F1 0x70, Mayús 0x10, Ctrl 0x11, flechas 0x25-0x28.

Reglas de circulación

  • Nunca enfoques un juego con modo online mientras el humano está escribiendo. Sucedió con GTA V: el agente enfocó GTA para hacer clic en Modo Historia, las pulsaciones del humano llegaron a la página de inicio de GTA, y GTA advirtió sobre "acceder a los servidores de GTA Online con una versión alterada". ScriptHookV lo bloqueó; no confíes en eso. Comprueba idle, pide al humano que haga clic, y ejecuta con el anticheat desactivado para que online no pueda iniciarse. Consulta knowledge/techniques/driving-real-games-safely.md.
  • La entrada solo va al juego. WinDrive se niega a enviar mientras otra aplicación está en primer plano. La única excepción es cuando no hay ninguna y el cursor está sobre el juego, lo que los juegos en ventana causan al perder el primer plano al hacer clic.
  • El usuario puede estar en el PC. Si idle es inferior a un minuto, pregunta antes de manejar y mantén las sesiones cortas. Las ejecuciones desatendidas están bien una vez que el usuario lo autorice.
  • Las capturas cuestan tokens. Mira las copias --scale 0.33. Multiplica las coordenadas de vuelta ×3 para los clics y mantén una tabla de puntos de clic de menú en MODLOG.md, medida una vez.
  • Por qué gfxcapture: los juegos renderizados por GPU salen negros con captura GDI. gfxcapture (Windows.Graphics.Capture) captura los fotogramas reales de una ventana, incluso cuando está cubierta. No puede capturar ventanas minimizadas.
  • Pantallas HDR: con Windows Auto HDR activado para un juego SDR, las capturas salen deslavadas (2-3 veces más brillantes, con desplazamiento cian), por lo que no se pueden juzgar los colores. um win shot/record advierten cuando está activado; desactívalo para el juego mientras se captura (Configuración > Sistema > Pantalla > Gráficos > el juego > Auto HDR), y vuelve a activarlo después si el usuario lo desea.

Haz la ventana predecible

  • Modo ventana con un tamaño de cliente fijo. Cada juego esconde esta configuración en algún sitio:
    • un ini ([/Script/Engine.GameUserSettings] en UE GameUserSettings.ini, valores de registro Screenmanager Fullscreen mode / Resolution de Unity bajo HKCU\Software\<empresa>\<producto>);
    • un flag de lanzamiento (-windowed -w 1920 -h 1080, Unity -screen-fullscreen 0 -screen-width 1920 -screen-height 1080, Source -sw -w 1920 -h 1080);
    • o el propio registro del juego (AoE2: Mode Display 0 + Windowed Width/Height).
    • um win drive --proc X "size 1920 1080" también redimensiona la mayoría de juegos en ventana.
  • Saltar intros: flags de lanzamiento (-skipintro, -nosplash, Unity -popupwindow), o borrar/renombrar videos de introducción en una copia del juego.
  • Entrar directo: flags del cargador (tModLoader -skipselect Player:World), una partida guardada para pruebas, carga automática de escenario, un comando de consola de desarrollador.
  • Limitación en segundo plano: muchos juegos limitan o pausan cuando no están enfocados. Encuentra la opción (Terraria: Main.instance.InactiveSleepTime = TimeSpan.Zero; Unity: Application.runInBackground = true; UE: t.IdleWhenNotForeground 0).

Mejor que hacer clic: una escena con script o un puente

  • Comandos de chat o consola en tu mod que den objetos, generen enemigos y teletransporten. Hacen que las pruebas sean de una línea (/arsenal, /mothership).
  • Escenas de prueba: una línea de tiempo en el mod (oleadas de apariciones en el fotograma N, disparo en N+30), un escenario con disparadores (AoE2 mediante AoE2ScenarioParser), un mundo de prueba dedicado con una copia de seguridad impecable.
  • Puente del agente: un socket de líneas JSON dentro del mod en 127.0.0.1 (ver examples/terraria-tmodloader/reference/AgentBridge.cs).
    • Comandos como observe (opciones de menú o estado del mundo como texto), click <id>, controls, step.
    • Maneja cada solicitud en el hilo principal del juego después de una actualización, para que las respuestas sean consistentes.
    • Lee los menús genéricamente desde el árbol de la interfaz de usuario, para que el agente vea lo que vería un jugador. Deja fuera los botones destructivos (eliminar).
    • Un agente puede entonces jugar sin píxeles en absoluto.
  • Backend fuera del proceso: mantén la parte dentro del juego ligera y pon la inteligencia fuera (HTTP/archivo). Ese patrón escala a NPCs IA y mashups entre juegos.

Fallos y limpieza

  • Los informes de fallos (BugSplat BsSndRpt64.exe, CrashReportClient.exe, UnityCrashHandler64.exe) pueden quedarse y hacer que Steam diga "ya en ejecución". um win ps para detectarlos, um win kill <pid> para eliminarlos.
  • Nunca uses pkill -f o el comodín taskkill /IM. El patrón podría coincidir con tu propio shell u otras aplicaciones.
  • Después de un fallo, lee primero el registro del cargador o del juego (la habilidad mod-any-game los enumera), luego el Visor de eventos de Windows (registro de Aplicación) para fallos nativos.

Linux y macOS

  • Linux (X11): xdotool search --name "Juego" windowactivate --sync key Escape, xdotool mousemove --window $W 640 360 click 1. Capturas: import -window $(xdotool search --name Juego) shot.png, o ffmpeg x11grab.
  • Linux (Wayland): ydotool + grim. Los juegos Proton son juegos de Windows bajo Wine: las opciones de lanzamiento (WINEDLLOVERRIDES, PROTON_LOG=1) van en Steam.
  • macOS: screencapture -l <idventana> shot.png (id de ventana mediante GetWindowID o AppleScript), osascript / cliclick para entrada. La entrada y la grabación de pantalla necesitan permiso de Accesibilidad y Grabación de Pantalla para la terminal.

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

asset-pipeline

Turn generated or hand-made art into exactly what a game engine loads. Covers sprite cutout, trim and nearest-neighbour fitting to frame sizes, pixelation to a palette, sprite sheets and strips, player/team-colour masks, seamless textures, and rendering a 3D model into sprite frames from the game

fal-assets

Generate game assets with fal (fal.ai) through the fal MCP server, the `um fal` CLI (REST) or `fal api`. Covers sprites and icons with transparent backgrounds, consistent variants and animation frames, pixel art, seamless textures, PBR material maps, image-to-3D models, remeshing, auto-rigging, sound effects, music, voice lines, and trailer or cutscene video. Use whenever a mod needs new art, audio or 3D models, or the user mentions fal, generating sprites, textures, models, SFX or music for a game.

game-recon

Figure out how a specific installed game can be modded, before writing any mod code. Covers where it

game-research-websearch

Research a game, engine or modding technique on the open web with archive-aware, rate-limit-safe searches — Wayback Machine/archive.today for dead forums (XeNTaX, Zenhax, old threads), GitHub code/repo search, Nexus/Steam Workshop/Thunderstore APIs, Reddit JSON, YouTube transcripts, plus archive snapshots as evidence. Use when starting work on a game (

mashup-mods

Build cross-game mashups and total conversions, the

mod-any-game

Mod a PC game the user owns, taking an idea to working in the real game and recorded. It covers new items, weapons, enemies, bosses, units, civilizations, mechanics, art, sound, VR and cross-game mashups. Use when the user wants to mod, extend, hack on, reverse engineer or mash up a game (

port-a-mod

Port an existing mod to a newer game version or another mod loader while keeping its behaviour, values and quirks. Typical cases are an old Forge 1.7.10 or 1.12 Minecraft mod moving to modern Fabric or NeoForge, a Skyrim LE plugin moving to SE/AE, or a tModLoader 1.3 mod moving to 1.4. It covers pinning one source version, a private decompiled reference, an adaptation matrix, extracting the mod

publish-mod

Package and release a finished game mod. Covers the pre-release lint (no game files, decompiled code or leaked keys), README and install steps, credits and AI disclosure, versioning, where to upload (Nexus Mods, Steam Workshop, Thunderstore, mod.io, GitHub releases), and the post with a video. Use when the user wants to ship, share, upload, release or post a mod.

reverse-engineering

Read how a game actually works so a mod can hook it. Decompile .NET/Mono (ILSpy), IL2CPP (Cpp2IL, Il2CppDumper), Java (Vineflower) and native code (Ghidra, IDA, via MCP servers); dump data and asset formats; reverse-engineer a binary file format and prove it with a round trip; read live memory (Cheat Engine, Frida, x64dbg); find render passes (RenderDoc). Use when a mod needs game internals, e.g.

share-field-notes

Search and contribute to the shared AI-modding knowledge base, where field notes record how specific games were modded, decompiled or reverse-engineered (exact versions, route, engine facts, verification, gotchas). Use before starting work on a game (

showcase-video

Record and cut a short showcase video of a game mod, or a compilation of clips, ready to post on X/YouTube. Records the game window with only the game

Skills relacionados