Codex, Opus, Gemini try to build Counter Strike

In the last week we’ve had three major model updates: Gemini 3 Pro, Codex Max 5.1, Claude Opus 4.5. We thought we’d give them a challenge:

Build a basic version of Counter Strike. The game had to be a 3D UI and it had to be multiplayer.

If you're curious, pop open (an ideally large computer screen) and you can try out each model's handiwork yourself:

  1. Codex Max 5.1: https://cscodex.vercel.app/
  2. Claude Opus 4.5: https://csclaude.vercel.app/
  3. Gemini 3 Pro: https://csgemini.vercel.app/

The Setup

We signed up for the highest-tier plan on each model provider and used the defaults set for their CLI. For Codex, that’s 5.1 codex-max on the medium setting. For Claude it’s Opus 4.5. And with Gemini it's 3 pro.

We then gave each model about 7 consecutive prompts. Prompts were divided into two categories:

Frontend: At first agents only having to worry about the game mechanics. Design the scene, the enemies, the logic for shooting, and some sound effects.

Backend: Once that was done agents would then make the game multiplayer. They would need to build a selection of rooms. Users could join them and start shooting.

A High-Level Overview

So, how'd each model do?

In a familiar tune with the other Anthropic models, Opus 4.5 won out on the frontend. It made nicer maps, nicer characters, nicer guns, and generally had the right scene from the get-go.

Once the design was done, Gemini 3 Pro started to win in the backend. It got less errors adding multiplayer and persistence. In general Gemini did the best with making logical rather than visual changes.

Codex Max felt like an “in-between” model on both frontend and backend. It got a lot of “2nd place” points in our book. It did reasonably well on the frontend and reasonably well on the backend, but felt less spiky than the other models.

Scorecard:

Codex Claude Gemini
Frontend
Boxes + Physics 🥉 🥇 🥈
Characters + guns 🥉 🥇 🥈
POV gun 🥈 🥇 🥉
Sounds 🥈 🥇 🥈
Backend
Moving 🥈 🥉 🥇
Shooting 🥉 🥇 🥉
Saving rooms 🥈 🥉 🥇
Bonus 🥈 🥉 🥇

Detailed Prompts:

1. Boxes and Physics

Goal number 1 was to set up the physics for the game. Models needed to design a map with a first-person viewpoint, and the ability to shoot enemies.

Prompt
I want you to create a browser-based version of counter strike, using three js.
For now, just make this local: don't worry about backends, Instant, or anything like that.
For the first version, just make the main character a first-person view with a crosshair. Put enemies at random places. Enemies have HP. You can shoot them, and kill them. When an enemy is killed, they respawn.
Make everything simple polygons -- rectangles.

Visual comparison:

Codex Claude Gemini

Visually, Claude came up with the most interesting map. There were obstacles, a nice floor, and you could see everything well. Gemini got something nice working too. Codex had an error on its first run [1] but fixed it quickly.

2. Characters

Next, we asked the models to style up the characters.

Prompt
I want you to make the enemies look more like people. Use a bunch of square polygons to represent a person, and maybe a little gun.

Results comparison:

Codex Claude Gemini

Here, Claude did the best job. The characters looked quite human compared to the others.

3. Gun in our field of view

We then asked each model to add a gun to our first-person view.

Prompt
I want you to make it so I also have a gun in my field of view. When I shoot, the gun moves a bit.

Recoil comparison:

Codex Claude Gemini

Both Claude and Codex got the gun working well, but Claude’s design looked much better.

4. Adding sounds and animations

We were almost done the frontend.

Prompt
I want you to use chiptunes to animate the sound of shots. I also want to animate deaths.

All models added sounds but misunderstood the “animate deaths” prompt similarly.

5. Sharing positions

We asked them to make it multiplayer.

Prompt
I want you to use Instant presence. Don't save anything in the database, just use presence and topics.

Progress comparison:

Codex Claude Gemini
Moving 🥈 🥉 🥇

Gemini excelled here, while Codex and Claude took more time to adjust.

6. Making shots work

The next step was to implement shooting.

Prompt
Now let's make shots work. When I shoot, send the shot as a topic, and make it affect the target's HP.

Results comparison:

Codex Claude Gemini
Shooting 🥉 🥇 🥈

Claude executed this promptly, while the others needed more adjustments.

7. Multiple maps

Finally, we pushed for support for multiple rooms.

Prompt
I want you to make it so the front page is a list of maps... Make the UI look like the old counter strike map selection screen.

UI comparison:

Codex Claude Gemini

Conclusion

At the end, all models built a real multiplayer FPS, with zero code written by hand! That’s pretty cool!

Parting thoughts

Models have improved significantly, able to take high-level feedback and iterate on their work efficiently. While we’re not there yet, the potential for automated coding continues to grow.