25 Oct 2026articleTR · EN · NLREA · Ghidra · OpenRW · three.js

I made a Turkish GTA with AI in 2 days (first version)

I didn’t write this game, my agent did. I didn’t write a single line of code: I had AI open up a game engine, learned how it works, then had my own version built. It’s called Operation Tea.

1. I DIDN’T WRITE THIS GAME

The story of Operation Tea: the Black Dragon mafia is smuggling our tea out of the Black Sea region, and we rescue it. Cars explode, you can fall into the sea and drown, and there’s okey in the coffeehouse. Yes, it’s a bit absurd on purpose.

To be honest: this is the first version of the game. The graphics are odd, there are bugs, and I left some of them in on purpose. In this post I’ll first explain what reverse engineering is and why AI is so good at it, then how I built the game in seven steps and which repos I used.

2. WHAT IS REVERSE ENGINEERING, AND WHY IS AI SO GOOD AT IT?

When a program is written, it starts as code that people can read. Then the computer translates it into its own language, machine code. Reverse engineering means translating that back: getting inside the application and understanding the engine.

Here’s the nice part. The architecture behind today’s AI models, the Transformer, was invented in 2017 for translation. So reverse engineering is actually AI’s most natural job. Think of it as an interpreter; only the languages aren’t English or Turkish, they’re machine language and human language.

So where does the model know machine language from? Nobody sat down and taught it. There are millions of open source projects online, with both the readable and the compiled version of the same code. The model sees those during training.

And there’s a twist. The AI model itself is also a locked program: it’s made of billions of numbers and nobody can directly read what it’s thinking. Anthropic has a team that does nothing but try to open these models up. In one of their studies they saw that the model doesn’t just go word by word, it plans ahead. So it works both ways: we use AI to open up programs, and other people open up the AI.

3. WHAT DO REA AND GHIDRA DO?

You might ask: if the model was trained on all the code on the internet, why do we need REA? Here’s why: the model knows machine language in general. But it has never seen the closed program in front of you; that program isn’t in its training data. And that file isn’t even text the model can read, it’s a pile of millions of bytes.

Games are the best example. When you download a game you don’t get its code; you get files in a different format plus data files. A closed box. The model is very smart, but in front of that box it’s blind.

REA is a bridge, actually an MCP. It connects your agent to reverse engineering tools like Ghidra, IDA or Hopper. Ghidra was written by the US National Security Agency, the NSA, and later made open source. It works like this: Ghidra takes the pile of bytes and turns it into something that looks like code. But that code is very ugly, no names, hard to understand. The model reads that ugly code and asks Ghidra questions: “what does this function do?” Layer by layer it works its way to the core of the program.

Same brain. But you know how you open Google Maps to find your way around a city? For the agent, REA is that map.

4. WHAT CAN’T REA DO?

  • It can’t see code running on a company’s server. It only sees the file on your computer.
  • It doesn’t produce an exact clone. It lets the agent understand the engine’s logic; then you write it from scratch.
  • There’s no magic in a large, complex program: the model has to go function by function, step by step.

A moment I actually lived through: the game’s physics function was so big that the model failed to read it twice. And it didn’t make anything up; it honestly said “I can’t read this.” Then it saved the output to a file and read it piece by piece. To me, that’s the most valuable part of the tool.

5. HOW THIS GAME WAS BORN

When REA came out, the first thing I told Claude was: “go and see whether we can get anything out of this.” The first thing that came to mind was GTA. But you can’t open GTA: it’s a closed game, there’s a copyright issue, and the company is one that files lawsuits.

So we chose OpenRW. People rewrote the GTA III engine from scratch with their own code; not a copy, a separate implementation. We used REA to read five parts of the engine: how cars are driven, how physics is calculated, how you get into a vehicle, whether there are police and traffic, and how the garage works.

REA gave a clear “no” on some things: this engine has no drifting, no explosions, no police system. We added those ourselves. So if cars explode in the game, that’s our silliness, not GTA’s. And since we couldn’t copy anything directly, we built a mixed Chinese and Turkish world; after a day or two of work, out came the Black Dragon mafia and Black Sea tea.

Is this really a game made with reverse engineering? I don’t think so. But it helped in places.

6. HOW I MADE THE GAME IN 7 STEPS

1. I picked an open source engine. Not a commercial game, an open source engine. That way I stayed legal and I also had an answer key. Let me say it right away: you don’t need REA for something like this. I used it to make things easier and as an example.

2. I gave REA a narrow task. “Only use REA tools. Don’t look at the internet. Don’t look at the source code. Don’t run the program. Show evidence for every claim. If you don’t know, say you don’t know.”

3. I had it checked. A separate agent compared REA’s output against the real source code. Like grading an exam paper with the answer key. Result: 39 of 48 claims were correct. Not bad, but it has mistakes too; it’s not something to trust blindly.

4. I had the game written for the browser. I didn’t write code, I only gave prompts: “I want this, make it for me.” Claude built the game with open source libraries.

5. I had the characters and cars designed. I used fal for the designs, then we turned them into 3D models so they’d show up in the game. I gave photos of cars I liked online as examples; the first drafts came out as exact copies, down to the logo. The reviewer agent caught that and changed it. Claude was also very careful about copyright, so unfortunately I couldn’t put the exact cars I liked into the game.

6. I played and found the bugs myself. The gun spun like a propeller, the map didn’t look like a map, the car didn’t drive well, and at one point all the characters were the same. I wanted the main character to be Turkish; the agent gave him a mustache. In the 3D model the wheels were stuck to the body and didn’t turn. The lesson: if you put this kind of detail in the prompt from the start, you won’t have to ask for the same thing two or three times.

7. I had it tested. A bot played the game for me; honestly, it played worse than I do. I gave the bugs it found to the agent and told it to leave some of them in.

7. THE REPOS I USED

  • REA: not necessary, but it was fun.
  • Ghidra: the real decompiler behind it.
  • OpenRW: an open source rewrite of the GTA III engine. We didn’t take code from it; we had REA read the compiled version and checked what it said against the source code.
  • three.js: the library that draws 3D in the browser; the game is drawn with it.
  • Rapier: car physics.
  • glTF Transform: for shrinking the 3D models.
  • Playwright: the tool behind the bot that plays the game for me.

What really did the work was three agents: one worked on the REA side, one reviewed, and one checked whether the 3D models looked good. Could better tools have been used? Definitely. If you have suggestions, leave them under the video; I’m curious too.

8. THE RIGHT WAY, AND THE NEXT VERSION

This is the first version of the game. In the next one I’ll upgrade the characters, the city, the cars, everything. If I continue this game, what should I add first?

The full video: https://youtu.be/Nr2f_IN68cg

Writing

Every build, written down

22 posts on agents, memory, Claude Code and security — each in Turkish, English and Dutch.

All posts →
Next post

100 companies breached: is your AI agent safe?

AI is finding security holes faster than they get fixed, and attackers now use AI agents themselves. Here is how I protect Claude Code with three questions: what can my agent do, what can it read, and whose word does it follow?

Read →
Contact

Let’s build something

selmakocabiyik@selmaai.dev
© 2026 Selma Kocabıyıkselma.codes