A fully autonomous gold farming operation: 18 bots across GPU-VPS and local NUCs, from behavior tree execution to eBay fulfillment, with zero human intervention and zero anti-cheat detections.
I wanted to build a fully autonomous system that could farm virtual currency in an MMO, sell it on a real marketplace, and deliver it to buyers — all without human intervention. The engineering challenge: coordinate 18 bot instances across distributed infrastructure, read game state without triggering anti-cheat detection, and bridge the gap between an in-game economy and a real-world marketplace.
I engineered an 8-repository distributed system spanning 3 languages (C#, Python, Lua):
| Component | Purpose | Key Tech |
|---|---|---|
| TreeNetRunner | Game-independent behavior tree execution engine with Blazor monitoring UI | C# .NET 8 · Groot2 XML · MediatR |
| SocketPulse | Custom IPC library for low-latency command/response between tree runner and game client | C# · ZeroMQ ROUTER/DEALER · Reflection-based command discovery |
| WarrIO.NET | Game client interface — pixel-based state reading, runtime Lua addon generation, 150+ sensors, 114 action handlers | C# .NET 7 · Win32 GDI · OpenCV · Lua codegen |
| WarrIO.Profiles | Behavior tree definitions: 337 waypoint routes, 120+ node types, 25+ zones, both factions | BehaviorTree++ XML · JSON waypoints |
| WarrIO.NavMesh | Pathfinding server with TSP-optimized multi-waypoint routing | Python · FastAPI · Recast/Detour (C# DLL via ctypes) · 630 MB mesh data |
| WarrIO.Server | Central coordination: inventory tracking, gold order lifecycle, Redis Pub/Sub broadcasting | Python · FastAPI · Redis · SQLite · CQRS |
| WarrIO.Ebay | Fully automated eBay auction management, buyer communication, and order fulfillment | Python · FastAPI · eBay REST + Trading API · GPT-4o |
| SocketPulseHub | Fleet deployment and orchestration across 18 bot instances | Python · FastAPI · Docker · Git-based IaC |
Pixel-Based Game State Encoding. Instead of memory reading (easily detected by anti-cheat), I generate Lua addons at runtime that encode 150+ game state values as pixel colors. The C# client reads the top pixel row via Windows GDI BitBlt — no memory hooks, no DLL injection, no shared signatures. Result: zero anti-cheat detections across 18 bots over 6 years.
Game-Independent Framework. TreeNetRunner sends named commands over ZeroMQ and receives success/failure/running responses. It has no knowledge of any specific game. Command handlers are discovered via reflection — drop a new IAction class into the assembly and it's automatically available as a behavior tree node. The entire framework is reusable for any application that accepts the SocketPulse protocol.
LLM-Powered Buyer Parsing. Buyers send freeform eBay messages like "pls send to björk on thunderstrike thx." GPT-4o extracts structured character names and server names, enabling fully automated gold delivery. Turned a 95% automated pipeline into 99.5% automated.
End-to-End Autonomous Pipeline. eBay purchase → order detection → GPT-4o character extraction → Redis Pub/Sub broadcast → atomic order claiming → in-game navigation to mailbox → gold delivery → screenshot upload → buyer confirmation → eBay fulfillment. Zero human intervention.
| Challenge | Mitigation & Result |
|---|---|
| Anti-cheat detection | Pixel-based state encoding via runtime Lua addon generation → 0 detections in 6 years |
| Game-independent extensibility | SocketPulse IPC + reflection-based command discovery → new actions added in minutes |
| Freeform buyer messages | GPT-4o extraction with structured output → 95%+ automatic parsing success |
| Distributed bot coordination | Redis Pub/Sub + atomic SQL order claiming → no distributed locks needed |
| Navigation in 3D game world | Recast/Detour pathfinding + TSP optimization → dynamic routing across 1,291 map tiles |
| Fleet deployment at scale | Git-based IaC + pull-based updates → add a bot by committing a JSON file |
┌─────────────────────────────────────────────────────┐
│ SocketPulseHub (Orchestrator) │
│ Deploys configs to 18 bot instances │
└──────────────────────┬──────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Bot Inst 1│ │Bot Inst 2│ │ ... ×18 │
│ │ │ │ │ │
│TreeNet │ │TreeNet │ │TreeNet │
│Runner │ │Runner │ │Runner │
│ ↕ ZMQ │ │ ↕ ZMQ │ │ ↕ ZMQ │
│WarrIO.NET│ │WarrIO.NET│ │WarrIO.NET│
│ ↕ Pixels │ │ ↕ Pixels │ │ ↕ Pixels │
│Game Client│ │Game Client│ │Game Client│
└─────┬────┘ └─────┬────┘ └─────┬────┘
│ │ │
└─────────────┼─────────────┘
▼
┌─────────────────────┐
│ WarrIO.Server │
│ Redis · SQLite │
│ Pub/Sub · CQRS │
└──────────┬──────────┘
▼
┌─────────────────────┐
│ WarrIO.Ebay │
│ eBay API · GPT-4o │
│ Order State Machine│
└─────────────────────┘