1. Step 1. Refining the spec to specifics
The portal is dismantled, the map is there — and Tommy, with a clear conscience, returns to the dream. In his hands he has a fair spec from Alex — five points: first-person view, movement, place a block, remove a block, a small enclosed world. But before handing it to Sam, Alex pushes the spec one more step — toward the things the agent really needs, so it doesn’t have to guess.
“Five points are the core,” Alex says. “But let’s add exactly what to control and where it lives, otherwise Sam will start asking follow-up questions again. The mouse turns the head, WASD — walking. Left click — break a block, right click — place one. The world is a flat 20×20 platform made of cubes, say, and a wall around the edge so you don’t fall into the void. And let it be one index.html; you open it with a double-click — like all your toys. And one last thing: 3D by hand from scratch is thousands of lines of wrestling with graphics. There’s a ready-made library for that — three.js. Name it right in the spec, otherwise the agent will decide on its own how to build it — and may start writing everything by hand.”
Tommy puts together the final spec — by himself now, Alex only tweaks the wording:
Build a browser voxel world in one index.html.
- first-person view; mouse — look around, WASD — walk;
- world: a flat 20×20 platform of cubes, with a wall around the edge;
- left click — break the block I'm looking at; right click — place one;
- opens with a double-click on the file, no installation required;
- 3D — on the ready-made three.js library, load it via CDN.
2. Step 2. A ready-made library instead of an engine from scratch
Tommy presses Enter. Sam asks no questions — the spec is clear — and right away writes how he’s going to build it:
“I’m loading three.js with a classic tag from a CDN, not as a module: that way the page is guaranteed to open with a double-click, straight from the disk. I’ll do the mouse camera rotation myself — three.js does have a ready-made piece for that, but only as a module, and a module won’t run from the disk.”
Tommy grins — familiar story. Just like with chess: don’t write the rules of the game by hand, take a ready-made one chess.js, where everything is already figured out. Same here, only for 3D.
“Oh, I’ve already been through that,” he says out loud. “No need to reinvent the wheel — just take a ready-made one.”
He doesn’t even need to figure out what’s inside the library. The main lesson was learned back with chess: if the task is typical, then almost certainly someone has already written a library for it. Your job is not to write the engine, but to name the right ready-made one for the agent. And along the way, Sam noticed on his own something Tommy hadn’t even thought about: how to plug it in so that the “double-click” from the spec really works.
3. Step 3. The agent assembles the world step by step
From here Sam just does the work — and Tommy sees each step in the chat as a separate action:
Tommy doesn’t pore over the names — Pointer Lock, raycast — they tell him nothing. But he catches the overall logic: the agent connected a ready-made library, wrote the file and then fixed it up itself — so the “crosshair” doesn’t lag behind when you aim at a cube. Not magic from nowhere, but understandable pieces assembled from ready-made parts.
And then “done” arrives. And right there Tommy is hit for a second: his finger hovers over launch.
“Well,” he says out loud. “Either now, or I dreamed the whole year for nothing.”
He clicks.
The screen goes dark. A black square, a fraction of a second.
And then the picture appears — and it is as if it pulls him inside. He doesn’t look at the world from above like a map — he’s standing right in it, seeing everything in first-person. In front of him are blocks. He presses “forward” — the world shifts, as if he really took a step. He turns — and around him the cubic landscape unfolds in every direction.
“No way,” he breathes.
He reaches to place a block — the block appears exactly where he aimed. He hits the neighboring one — it disappears, leaving a void. Tommy doesn’t believe it and checks: he places another, breaks one, places three in a row, builds a crooked little tower, walks around it in a circle — the tower stands there, doesn’t go anywhere, and he is really walking around it.
“I stared at this picture for a year,” he says to the empty room, walking around the tower once more. “And now I’m walking on it with my own feet.”
Not “something like.” Not a demo for the sake of a checkmark, not a picture you can only look at. Exactly the thing he spent a year thinking of as unattainable — and it is obeying his hands, right now. At least its first part.
4. Result: a working project
And right in the middle of this, a thought jerks him. Without leaving the world, he opens a second tab nearby — that same morning video from day one. He rewinds to the wish board, to the crooked screenshot in the corner. He puts the two screens side by side.
On the left — the little cube from the board of his future. On the right — the thing he has just been walking on.
They are the same.
Tommy moves his eyes from one to the other and back. The same blocks. The same first-person view. The same cubic ground to the horizon. A year ago, the older Tommy brushed past that screenshot in a voice note, in passing, and let slip: “this could all be yours in the future.”
“‘In the future,’” Tommy repeats and smirks. “Well, here it is. Today.”
On the first day, between that little cube on the board and himself there was a chasm he couldn’t even measure: behind his back there were zero lines of code, not a single thing built. Back then he wouldn’t have believed it for a second. He would have snapped back and closed it.
But he didn’t get here by magic. The same road as to the snake, to the landing page, to the radar: wanted it, cut the dream down to a feasible spec, stated the task in words, the agent built it, launched it, checked it by hand. The same assembly line — just this time, at the other end there wasn’t a toy, but that same impossible dream.
“Maybe by the agent’s hands,” he says out loud. “Maybe small. Maybe a crooked tower of two or three blocks. But I built it. I wanted it myself, set the task myself, carried it through myself.”
A year ago he wouldn’t have said that without sarcasm. And now — he did it.
5. The same trick on bigger tasks
And here the second wave hits him — no longer about the past, but about the future. If a bare box of cubes was assembled in half an hour — then what if he doesn’t stop? He opens the chat and, not planning to launch anything yet, throws Sam the next dream, the full one from childhood:
A rough plan for the future. I want to grow this world into GTA in cubes:
cars you can drive; a city of block buildings;
pedestrians; day turns into night; missions.
Sam answers calmly, without “impossible”:
“Each item is a separate chunk of work, and each one is solvable: car physics, city generation, simple pedestrian bots, a day-and-night cycle. It builds the same way — one feature per pass, with ready-made libraries. Not in a day, but it builds.”
Tommy rereads it and feels a strange calm. A year ago, “GTA in cubes” was a magic spell, behind which there was — emptiness and “I’ll never be able to handle something like that.” And now, under the same words, there is a list of tasks, each within reach. The dream stopped being unattainable and became just work that needs to be done. He closes the chat: today — the core, the rest later. But now he is sure that “later” will really happen.
GO TO FULL VERSION