Spencerbench

Portal, ported to WebGL
5 times over

Each of these is an independent, from-scratch reimplementation of Portal (Valve, 2007) that runs in a browser — reading the original retail game data, with no Source engine involved. Every port was written by a different AI model working on the same problem. Pick one and see how far it got.

Opus 5

claude-opus-5

Reads the shipped .bsp, .vtf and .mdl files directly in the browser and loads them through a generated asset manifest. The most complete of the five: all 18 campaign maps.

18 maps4.3 GB of datastreams retail data
Play →

Fable 5.1

claude-fable-5-1

Resolves every asset through a virtual filesystem layered over the retail content, the same way Source does. Full campaign map list with in-game level changes.

18 maps4.3 GB of datastreams retail data
Play →

Grok 4.6

grok-4.6

Takes the opposite approach: a Python pipeline converts each map ahead of time into meshes, lightmaps and raw texture buffers the browser can upload straight to the GPU.

18 maps6.3 GB of dataoffline cook pipeline
Play →

Grok 4.7

grok-4.7

Parses Source formats live from a flat asset tree. A focused vertical slice - one fully playable test chamber with portals, doors and colour correction.

1 map4.3 GB of datastreams retail data
Play →

Astra

gpt-6-astra

Compiles one chamber down to purpose-built web formats - packed geometry, a baked HDR lightmap and PNG textures - then renders it with a small hand-written WebGL2 pipeline.

1 map78 MB of databaked single chamber
Play →
Before you click. These are works in progress, not finished games — expect missing effects, rough physics and the occasional crash. You need a desktop browser with WebGL2. Click the canvas to capture the mouse, then WASD to move and Esc to release it. The first load of a chamber pulls tens of megabytes of map and texture data, so give it a moment.