CommunityCodierung & Entwicklunggithub.com

game-automation

Ein Skill, der echte Spiele startet, sieht und steuert, sodass ein Agent seine eigenen Mods testen kann. Unterstützt Steam- und Exe-Starts, fenstermodus, Screenshots, Tastatur-/Mauseingaben und eine JSON-Brücke im Spiel.

Was ist game-automation?

Dieser Skill befähigt KI-Agenten (wie Claude Code), echte Videospiele automatisiert zu testen. Er startet Spiele über Steam oder direkt per Exe, positioniert sie in einem festen Fensterformat und erfasst GPU-beschleunigte Screenshots, die auch bei verdeckten Fenstern korrekte Pixel liefern. Über `um win drive` kann der Agent Mausklicks, Tastatureingaben, relative Bewegungen (z.B. für FPS-Spiele) und Tastenkombinationen ausführen – alles innerhalb des Spielclientbereichs. Eine integrierte JSON-Brücke (AgentBridge) ermöglicht sprachliche Kommandos wie `observe` oder `click`, sodass der Agent ohne Pixelanalyse auskommt. Der Skill ist primär für Windows ausgelegt (auch aus WSL nutzbar) und enthält wichtige Sicherheitsregeln, um versehentliche Eingaben in Online-Modi oder Konflikte mit der Tastatur des Menschen zu vermeiden. Nach einem Absturz wird der Crash-Reporter bereinigt, und Logs (Loader, Game-Logs, Windows-Ereignisprotokoll) können ausgelesen werden. Der Skill eignet sich besonders für Mod-Entwickler, die Änderungen schnell in einer realen Spielumgebung verifizieren möchten, ohne jedes Mal manuell Menüs zu navigieren.

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

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Spielautomatisierung: die Hände und Augen des Agenten

Das echte Spiel ist der Orakel. Der Kreislauf ist: Starten → Navigieren → Szene aufbauen → Handeln → Screenshot machen und Logs lesen → entscheiden. Baue es einmal pro Spiel auf, dann kann jede Änderung, die du machst, in einer Minute überprüft werden.

Windows (nativ oder aus WSL): um win

um win setup                                   # einmalig: PowerShell-Tools + ffmpeg mit gfxcapture, wählt NVENC/AMF/QSV/x264
um win ps                                      # fensterprozesse: PID, Name, Titel
um win launch --steam 105600                   # oder: um win launch "C:\Games\Foo\Foo.exe" -- -windowed
um win shot --exe Terraria.exe shot.png --scale 0.33   # Vollbild + eine 1/3-Kopie, die billig anzusehen ist
um win drive --proc Terraria "focus" "click 640 360" "key 0x1B" "type hello" "hold 0x44 1500"
um win drive --proc Terraria "hold 0x20 150" "sleep 200" "hold 0x20 150"   # sleep <ms> pausiert zwischen Schritten
um win drive --proc Terraria idle              # Sekunden seit der letzte Benutzer Maus/Tastatur berührt hat (wartet nicht)
um win kill <pid>                              # nur genaue PID
um win reg get "HKCU\Software\..."             # Registry (reg set sichert den Schlüssel zuerst)

Aus Python (für längere Skripte): from um.win import Drive, shot, Recorder, dann d = Drive("AoE2DE_s"), d.focus(), d.click(x, y), d.key("0x0D").

WinDrive-Kommandos (um/ps1/WinDrive.ps1; stdin-Protokoll, eine Antwort pro Zeile). Koordinaten beziehen sich auf den Clientbereich des Spielfensters.

  • Maus: move x y, click x y [right], mdown/mup, drag x0 y0 x1 y1, rel dx dy (FPS-Kameras / Raw Input), wheel 120.
  • Tastatur: key <vk> [tap|down|up], hold <vk> <ms>, type <text>, scanmode on (DirectInput / Raw-Input-Spiele, die virtuelle Tastencodes ignorieren).
  • Fenster: focus, rect, size <w> <h> (setzt die Client-Größe), title, fg, idle, untop.
  • Timing: sleep <ms> wartet zwischen Schritten in einem Aufruf. Jeder um win drive-Aufruf startet PowerShell (1-2 s), also setze zeitgesteuerte Kombos in einen Aufruf.
  • Virtuelle Tastencodes: Esc 0x1B, Enter 0x0D, Leerzeichen 0x20, W/A/S/D 0x57/0x41/0x53/0x44, F1 0x70, Shift 0x10, Strg 0x11, Pfeile 0x25-0x28.

Verhaltensregeln

  • Setze niemals ein Spiel mit Online-Modus in den Fokus, während der Mensch tippt. Das passierte mit GTA V: Der Agent fokussierte GTA, um den Story-Modus zu klicken, die Tastatureingaben des Menschen trafen GTA's Startseite und GTA warnte vor "Zugriff auf GTA Online-Server mit einer geänderten Version". ScriptHookV blockierte es; verlass dich nicht darauf. Überprüfe idle, bitte den Menschen zu klicken und starte ohne Anti-Cheat, damit Online nicht starten kann. Siehe knowledge/techniques/driving-real-games-safely.md.
  • Eingaben gehen nur an das Spiel. WinDrive verweigert die Ausgabe, während eine andere Anwendung im Vordergrund ist. Einzige Ausnahme: Wenn keine Anwendung im Vordergrund ist und der Cursor über dem Spiel liegt – was bei Fensterspielen passieren kann, wenn sie den Vordergrund beim Klicken verlieren.
  • Der Benutzer könnte am PC sein. Wenn idle unter einer Minute liegt, frage vor dem Steuern und halte Sitzungen kurz. Unbeaufsichtigte Läufe sind in Ordnung, sobald der Benutzer zustimmt.
  • Screenshots kosten Tokens. Verwende --scale 0.33-Kopien. Multipliziere Koordinaten für Klicks mit ×3 und führe eine Tabelle der Klickpunkte in MODLOG.md, einmalig gemessen.
  • Warum gfxcapture: GPU-gerenderte Spiele erscheinen bei GDI-Erfassung schwarz. gfxcapture (Windows.Graphics.Capture) erfasst echte Frames eines Fensters, sogar wenn es verdeckt ist. Kann jedoch keine minimierten Fenster erfassen.
  • HDR-Displays: Bei aktiviertem Windows Auto HDR für ein SDR-Spiel erscheinen Aufnahmen verwaschen (2-3x heller, cyan-verschoben), sodass Farben nicht beurteilt werden können. um win shot/record warnen, wenn es an ist; schalte es für das Spiel während der Aufnahme aus (Einstellungen > System > Bildschirm > Grafik > das Spiel > Auto HDR) und danach wieder an, wenn der Benutzer es möchte.

Mache das Fenster vorhersagbar

  • Fenstermodus mit fester Client-Größe. Jedes Spiel versteckt diese Einstellung irgendwo:
    • einer ini ([/Script/Engine.GameUserSettings] in UEs GameUserSettings.ini, Unitys Screenmanager Fullscreen mode / Resolution-Registry-Werte unter HKCU\Software\<Firma>\<Produkt>);
    • einem Startflag (-windowed -w 1920 -h 1080, Unity -screen-fullscreen 0 -screen-width 1920 -screen-height 1080, Source -sw -w 1920 -h 1080);
    • oder der eigenen Registry des Spiels (AoE2: Mode Display 0 + Windowed Width/Height).
    • um win drive --proc X "size 1920 1080" passt auch die Größe der meisten Fensterspiele an.
  • Intros überspringen: Startflags (-skipintro, -nosplash, Unity -popupwindow) oder lösche/benenne Intro-Videos in einer Kopie des Spiels um.
  • Direkt einsteigen: Loader-Flags (tModLoader -skipselect Player:World), ein für Tests erstellter Spielstand, Szenario-Autoload, ein Dev-Console-Befehl.
  • Hintergrund-Drosselung: Viele Spiele drosseln oder pausieren, wenn sie nicht im Fokus sind. Finde die Einstellung (Terraria: Main.instance.InactiveSleepTime = TimeSpan.Zero; Unity: Application.runInBackground = true; UE: t.IdleWhenNotForeground 0).

Besser als Klicken: eine skriptgesteuerte Szene oder eine Brücke

  • Chat- oder Konsolenbefehle in deinem Mod geben Gegenstände, spawnen Feinde und teleportieren. Sie machen Tests zu einer Zeile (/arsenal, /mothership).
  • Testszenen: eine modseitige Zeitleiste (Wellen bei Frame N spawnen, bei N+30 feuern), ein Szenario mit Triggern (AoE2 via AoE2ScenarioParser), eine dedizierte Testwelt mit einem unberührten Backup.
  • Agent-Brücke: ein JSON-Lines-Socket im Mod auf 127.0.0.1 (siehe examples/terraria-tmodloader/reference/AgentBridge.cs).
    • Befehle wie observe (Menüoptionen oder Weltzustand als Text), click <id>, controls, step.
    • Bearbeite jede Anfrage im Hauptthread des Spiels nach einem Update, damit die Antworten konsistent sind.
    • Lese Menüs generisch aus dem UI-Baum, sodass der Agent sieht, was ein Spieler sehen würde. Lasse zerstörerische Schaltflächen (Löschen) weg.
    • Ein Agent kann dann ganz ohne Pixel spielen.
  • Außerprozess-Backend: Halte den spielinternen Teil dünn und platziere das Gehirn außerhalb (HTTP/Dateiablage). Dieses Muster skaliert auf KI-NPCs und spielübergreifende Mashups.

Abstürze und Aufräumen

  • Crash-Reporter (BugSplat BsSndRpt64.exe, CrashReportClient.exe, UnityCrashHandler64.exe) können hängen bleiben und Steam sagen lassen "Läuft bereits". um win ps zum Finden, um win kill <pid> zum Entfernen.
  • Verwende niemals pkill -f oder wildcard taskkill /IM. Das Muster kann deine eigene Shell oder andere Anwendungen treffen.
  • Nach einem Absturz lies zuerst das Loader- oder Spiel-Log (das mod-any-game-Skill listet sie), dann das Windows-Ereignisprotokoll (Anwendungsprotokoll) für native Abstürze.

Linux und macOS

  • Linux (X11): xdotool search --name "Spiel" windowactivate --sync key Escape, xdotool mousemove --window $W 640 360 click 1. Screenshots: import -window $(xdotool search --name Spiel) shot.png, oder ffmpeg x11grab.
  • Linux (Wayland): ydotool + grim. Proton-Spiele sind Windows-Spiele unter Wine: Startoptionen (WINEDLLOVERRIDES, PROTON_LOG=1) in Steam setzen.
  • macOS: screencapture -l <windowid> shot.png (Fenster-ID via GetWindowID oder AppleScript), osascript / cliclick für Eingaben. Für Eingaben und Bildschirmaufnahme sind Berechtigungen für Barrierefreiheit und Bildschirmaufnahme für das Terminal erforderlich.

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

Verwandte Skills