<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://lrhodes404.github.io/wwow-devblog/</id><title>Westworld of Warcraft</title><subtitle>Building a server full of AI-driven World of Warcraft characters: reverse engineering a legacy game client, emulating its protocol and physics, and developing the whole thing with coding agents.</subtitle> <updated>2026-09-13T18:50:11-04:00</updated> <author> <name>Lamar Rhodes</name> <uri>https://lrhodes404.github.io/wwow-devblog/</uri> </author><link rel="self" type="application/atom+xml" href="https://lrhodes404.github.io/wwow-devblog/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://lrhodes404.github.io/wwow-devblog/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Lamar Rhodes </rights> <icon>/wwow-devblog/assets/img/favicons/favicon.ico</icon> <logo>/wwow-devblog/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Where It Stands</title><link href="https://lrhodes404.github.io/wwow-devblog/posts/where-it-stands/" rel="alternate" type="text/html" title="Where It Stands" /><published>2026-09-13T09:00:00-04:00</published> <updated>2026-09-13T09:00:00-04:00</updated> <id>https://lrhodes404.github.io/wwow-devblog/posts/where-it-stands/</id> <content type="text/html" src="https://lrhodes404.github.io/wwow-devblog/posts/where-it-stands/" /> <author> <name>Lamar Rhodes</name> </author> <category term="History" /> <summary>After some time ironing out all of the previous bad solutions and jank code I wrote or generated, I was able to get the solution to where it was measuring things properly and had the test frameworks as I described them. This is the status post. It is accurate as of writing and it will be wrong soon, which is the intended outcome. The shape of the solution Shared libraries and native componen...</summary> </entry> <entry><title>The Cull</title><link href="https://lrhodes404.github.io/wwow-devblog/posts/the-cull/" rel="alternate" type="text/html" title="The Cull" /><published>2026-09-12T09:00:00-04:00</published> <updated>2026-09-12T09:00:00-04:00</updated> <id>https://lrhodes404.github.io/wwow-devblog/posts/the-cull/</id> <content type="text/html" src="https://lrhodes404.github.io/wwow-devblog/posts/the-cull/" /> <author> <name>Lamar Rhodes</name> </author> <category term="History" /> <summary>The fastest period in this project’s history was also the one that required the most deletion. That is not a paradox once you have watched it happen, but it surprised me at the time. First, verification On 2026-07-24 I had the physics port independently re-verified against the binary, using Ghidra rather than the tooling that produced the original decompilation. The point was to check the wor...</summary> </entry> <entry><title>Decompile the Binary</title><link href="https://lrhodes404.github.io/wwow-devblog/posts/decompile-the-binary/" rel="alternate" type="text/html" title="Decompile the Binary" /><published>2026-09-11T09:00:00-04:00</published> <updated>2026-09-11T09:00:00-04:00</updated> <id>https://lrhodes404.github.io/wwow-devblog/posts/decompile-the-binary/</id> <content type="text/html" src="https://lrhodes404.github.io/wwow-devblog/posts/decompile-the-binary/" /> <author> <name>Lamar Rhodes</name> </author> <category term="History" /> <summary>The old bots were built by decompiling the engine and reading memory values. So why not have the agent dump the WoW.exe binary and reverse-engineer it? That is the whole idea, and I want to be clear that it is not a clever one. Reverse engineering the client is how this entire field has always worked — it is how the offsets in every bot I have ever used were found. What changed was not the tec...</summary> </entry> <entry><title>Enter Claude</title><link href="https://lrhodes404.github.io/wwow-devblog/posts/enter-claude/" rel="alternate" type="text/html" title="Enter Claude" /><published>2026-09-10T09:00:00-04:00</published> <updated>2026-09-10T09:00:00-04:00</updated> <id>https://lrhodes404.github.io/wwow-devblog/posts/enter-claude/</id> <content type="text/html" src="https://lrhodes404.github.io/wwow-devblog/posts/enter-claude/" /> <author> <name>Lamar Rhodes</name> </author> <category term="History" /> <summary>By this point, I have a solution that contains multiple projects all covering various aspects of the Westworld of Warcraft goal. Most are “spec’ed out”, where every aspect of what the codebase did was documented, and what was missing or expected to be implemented. I’m finding myself wanting to do other activities as I feel like I’m spinning my wheels with countless attempts to isolate the colli...</summary> </entry> <entry><title>The Wall</title><link href="https://lrhodes404.github.io/wwow-devblog/posts/the-wall/" rel="alternate" type="text/html" title="The Wall" /><published>2026-09-09T09:00:00-04:00</published> <updated>2026-09-09T09:00:00-04:00</updated> <id>https://lrhodes404.github.io/wwow-devblog/posts/the-wall/</id> <content type="text/html" src="https://lrhodes404.github.io/wwow-devblog/posts/the-wall/" /> <author> <name>Lamar Rhodes</name> </author> <category term="History" /> <summary>This meant I HAD to get the physics working. Collision and physics were going to be calculated in the background client so it could operate like the original client as far as traversing terrain, but also with behavior-relevant information like how large the interact distance is for a particular unit or game object. So this meant that even if we had all of these things in place, we would still ...</summary> </entry> </feed>
