Claude Code build cả một game 3D trong lúc tôi đi biển
Claude Code làm lead với các nhóm agent build một game 3D trong năm ngày: model từ script Blender, âm thanh ElevenLabs, test harness, worktree, handoff file.
✓ Đã duyệt độc lập · cập nhật 31/10/2026 · 27 min
1. Giao cho Claude Code một game 3D rồi đi biển
Aleksander Stensby của GritAI Studio (trong video anh tự giới thiệu là Alex) mở đầu bằng một câu hỏi: chuyện gì sẽ xảy ra nếu giao cho Claude Code công việc lớn nhất, sáng tạo nhất mà bạn nghĩ ra được, rồi đi ra biển? Anh đã thử: một game 3D hoàn chỉnh trong năm ngày. Theo những gì anh kể trong video đăng ngày 30/10/2026, thứ quay về là 79 model 3D, 614 âm thanh và giọng nói, 62 sinh vật và boss, cùng 131 test tự chơi game mà không cần người.
Alex nói thẳng rằng anh không biết dựng model trong Blender, và cũng không biết soạn nhạc. Vì vậy anh muốn đi qua mọi thứ mình đã làm, để người xem có thể tự build game của riêng mình.
Bối cảnh: vài tuần trước khi quay video (video đăng ngày 30/10/2026), anh đi nghỉ ở Tây Ban Nha cùng gia đình. Bọn trẻ được nghỉ học, buổi chiều thì ra biển. Anh muốn biết Claude Code thực sự làm được gì nếu được giao một việc thật lớn, thật sáng tạo, rồi phần lớn thời gian để nó tự làm. Video là câu trả lời cho câu hỏi đó.
Anh liệt kê những gì sẽ trình bày: cách game được build, với một session Claude đóng vai lead developer và các nhóm agent làm việc bên dưới; cách mọi model 3D ra đời từ các script Python chạy trong Blender, tất cả do Claude viết; cách ElevenLabs làm ra nhạc, sound effect và giọng nói; cách anh và Claude build một editor riêng, rồi cả một content studio; và cách Claude viết một test suite tự chơi game thay cho anh. Phần anh gọi là "điên rồ": theo anh (video đăng ngày 30/10/2026), anh và Claude làm gần như mọi thứ qua Remote Control trên điện thoại của anh, ở ngoài biển hoặc ở hồ bơi.

2. Setup: Opus 5.5, Fable 5.1 làm advisor, và một build log
Alex nói nhanh về setup (theo video đăng ngày 30/10/2026): mọi thứ chạy trên Opus 5.5, với mức effort đặt ở extra high gần như suốt cả quá trình build, và Fable 5.1 được bật lên làm advisor.
Ở mức tổng quát, phần việc của anh là thế này: anh đưa cho Claude một ý tưởng đầy tham vọng, rồi dẫn dắt và điều hướng khi cần. Theo anh (video đăng ngày 30/10/2026), Claude lo mọi phần kỹ thuật.
Và đây là tip đầu tiên, anh đưa ra ngay cả trước khi bắt đầu, vì với cá nhân anh đó là điều quan trọng nhất rút ra từ dự án này. Lời khuyên của Alex (video đăng ngày 30/10/2026): hãy bảo Claude giữ một build log và cập nhật nó liên tục trong lúc làm. Anh nói chính build log đó đã làm nên video này, và anh sẽ cho xem nó hoạt động thế nào ngay sau đó.
3. Prompt đầu tiên và việc kiểm tra những mắt xích rủi ro
Ý tưởng xuất phát từ sở thích của Alex: anh mê các game Zelda và các game Sega ngày xưa như Alex Kidd. Nên anh quyết định đẩy Claude tới giới hạn. Tin nhắn đầu tiên anh gõ vào Claude Code, trong thư mục ~/games/alexthekid, như trên màn hình:
I want to test your capabilities to the fullest and create a complete 3D game where you use Blender to build the assets, Elevenlabs to create music and sfx. I want it to be beautiful and immersive with a magical feel to it. Lets aim for zelda style alex the kid 3rd person.
Anh nói sẽ bắt đầu với mười phút đầu tiên của quá trình build, vì chúng đặt nền cho mọi thứ còn lại (video đăng ngày 30/10/2026). Và việc đầu tiên Claude làm khiến anh bất ngờ: nó không build gì cả. Nó đi tìm những gì có khả năng hỏng. Nó kiểm tra Blender đã được cài chưa, rồi viết một script Blender 30 dòng để export một khối lập phương có hai animation, chỉ để chứng minh rằng Blender có thể export một model chứa nhiều animation clip trong cùng một file, vì cả game phụ thuộc vào điều đó. Sau đó nó gọi thử ElevenLabs, mỗi lần một giây: một lần cho sound effect, một lần cho nhạc (demo trong video đăng ngày 30/10/2026).
Đó là tip thứ hai, và theo Alex (video đăng ngày 30/10/2026) đó cũng là một thói quen tốt cho dự án của chính bạn: chứng minh những mắt xích rủi ro trước (prove the risky links first). Nếu một trong các mắt xích đó hỏng, nó sẽ hỏng ở phút thứ hai chứ không phải ở giờ thứ ba.
Alex nói thêm rằng phần setup chỉ có vậy: Blender đã được cài sẵn trên máy Mac của anh, và Claude đã có quyền truy cập ElevenLabs. Phần còn lại Claude tự tìm ra (theo anh, video đăng ngày 30/10/2026). Trong năm ngày đó, anh chưa một lần tự mở Blender, cũng chưa một lần mở ElevenLabs. Tất cả những gì anh làm là đưa feedback và ra quyết định.
4. Hai bản hợp đồng: art bible và audio manifest
Tiếp theo, Claude viết hai tài liệu trước khi viết bất kỳ dòng code game nào (demo trong video đăng ngày 30/10/2026). Art bible quy định: một đơn vị là một mét; hướng nào là phía trước; mọi model đặt gốc tọa độ ở chân; 30 frame mỗi giây; tên chính xác của mọi bone và mọi animation clip; một bảng màu dùng chung; một ngân sách triangle cho mỗi model; và mọi agent bắt buộc phải render ảnh preview rồi thực sự nhìn vào chúng.
Audio manifest làm điều tương tự cho âm thanh: ID, độ dài, mức loudness cần đạt, và track nào được loop. Alex bảo hãy coi đó như một bản hợp đồng, vì việc tiếp theo Claude làm là chia nhỏ công việc (video đăng ngày 30/10/2026).

docs/ART_BIBLE.md với các quy ước kỹ thuật như 1 Blender unit = 1 mét, 30 fps, tên clip viết thường, preview render là bắt buộc; bên phải là docs/AUDIO_MANIFEST.md với ID, độ dài, cột loop và mức loudness cho nhạc và SFX.5. Lead chia việc, agent báo lại, và bản chơi được đầu tiên
Trong lúc các agent làm việc, lead tự build engine (demo trong video đăng ngày 30/10/2026): một hòn đảo procedural, toon shading, 110.000 ngọn cỏ trên GPU, nước, bầu trời, camera góc nhìn thứ ba, hệ thống chiến đấu, kẻ địch và quest, với những khối hình xám làm placeholder cho tới khi model thật về.
Các báo cáo agent gửi về thì đặt nhịp thời gian cho game. Agent phụ trách kẻ địch báo rằng Murkling cắn ở frame 9, và cú Slam của Bramble Brute chạm đất ở frame 24. Game dùng đúng những con số đó. Theo Alex (video đăng ngày 30/10/2026), đó là bản hợp đồng vận hành theo cả hai chiều.

Tới giờ ăn trưa ngày đầu tiên, khoảng một tiếng rưỡi sau khi bắt đầu, Alex đã chơi được phiên bản đầu (video đăng ngày 30/10/2026). Và Claude nói rõ tình trạng của nó: chưa ai nghe hay chơi thử cả. Alex nói đó là việc của anh.
Anh gửi tin nhắn thứ hai: đặt tên nhân vật chính là Aleks, thêm một bestiary, một hệ thống tiến trình (progression system), một ngôi làng có cửa hàng, và ghi lại mọi thứ trong một trang HTML anh có thể đọc trên điện thoại. Thêm năm agent nữa, và trang đó trở thành build log mà anh đang đọc theo trong lúc làm video này (theo video đăng ngày 30/10/2026).
Alex nhấn mạnh rằng build log đã giúp quá trình này nhiều thế nào, và khiến việc ở lại trong vòng lặp thú vị hơn nhiều với anh. Theo anh (video đăng ngày 30/10/2026), anh có thể theo dõi quá trình từ điện thoại bằng cách mở artifact đó, và góp ý cho các quyết định ngay trong artifact.
6. Không có 3D artist: mọi model là một script Python chạy trong Blender
Vậy làm game 3D mà không có 3D artist thì thế nào? Alex cho xem một agent thực sự làm gì. Theo anh (video đăng ngày 30/10/2026), mọi model trong game này thực chất là một script Python. Claude viết script, chạy Blender ở chế độ background không mở cửa sổ, và Blender dựng mesh, skeleton, weight, animation, rồi export ra một file mà game có thể load.
Rồi tới phần quan trọng: nó render ảnh preview, và agent đọc những ảnh đó để tự phê bình sản phẩm của mình (demo trong video đăng ngày 30/10/2026).
Đây là agent phụ trách nhân vật chính vào ngày đầu (demo trong video đăng ngày 30/10/2026). Nó render Aleks từ phía trước và từ góc ba phần tư, nhìn vào ảnh, nhận ra có gì đó chưa ổn, viết lại phần đầu và phần thân, rồi render lại. Trong đoạn làm việc đó, nó nhìn lại preview của chính mình năm lần, và trên đường đi model giảm từ 9.200 triangle xuống còn khoảng 7.500.

Kết quả là Aleks: theo lời Alex (video đăng ngày 30/10/2026), 6.700 triangle, 23 bone, 14 animation, mọi keyframe đều do Claude viết bằng Python. Anh cho xem contact sheet mà agent đã duyệt: chạy, các nhát chém, cú xoay, cú lăn, và tư thế giơ vật phẩm lên khi nhặt được. Nếu mở script đó trong Blender với cửa sổ bật, bạn có thể xem nó dựng model; đó chính là script mà agent chạy headless.
Trong năm ngày, con số là 39 build script, khoảng 75.000 dòng Blender Python (màn hình ghi 75,775), và 79 model (theo video đăng ngày 30/10/2026). Trong đó có một boss núi lửa với 11 animation, một con kraken, một cây cổ thụ lớn 24.000 triangle, và một con mimic dùng lại đúng hình khối của cái rương thật để lớp ngụy trang khớp hoàn toàn.
7. Hai luật sinh ra từ lỗi: glow rule và nhìn ở khoảng cách chơi
Alex kể có hai luật làm cho cách này chạy được, và cả hai đều đến từ sai lầm (video đăng ngày 30/10/2026). Luật thứ nhất là glow rule. Game có hiệu ứng bloom làm những thứ sáng phát quang, và bất cứ thứ gì sáng hơn 0.86 đều bị bloom. Cát trắng bị, mây trắng bị, và chúng biến thành những khối phát sáng nhòe nhoẹt. Nên từ đó mọi brief đều ghi: bề mặt sáng phải ở dưới khoảng 0.84. Một agent còn chứng minh bloom checker của chính nó trên một tấm test card trước khi tin vào nó.

Alex nói một phần chuyện này nghe có vẻ rất kỹ thuật, nhưng theo anh (video đăng ngày 30/10/2026), Claude tự làm tất cả.
Luật thứ hai Claude đặt ra là nhìn nó ở khoảng cách chơi game. Con magma golem trông rất đẹp trong ảnh preview. Nhưng trong game, nó trông như một khối màu nâu. Agent sửa: đá sáng màu hơn, lớp vỏ tối hơn, đầu to hơn, vai có gai, rồi nhìn lại từ chỗ người chơi đứng. Theo Alex (demo trong video đăng ngày 30/10/2026), Claude tự tìm ra tất cả những điều này.
8. Soundtrack, sound effect và giọng nói từ ElevenLabs
Mọi nốt nhạc, mọi âm thanh và mọi giọng nói trong game đều đến từ ElevenLabs (theo video đăng ngày 30/10/2026). Video chèn một đoạn thoại trong game: "Land ho! Here we are, Emberfall. I'll keep the boat ready." Tổng cộng có 614 file âm thanh. Riêng Pip, cô tiên đồng hành, có 150 câu thoại.
Agent âm thanh làm việc theo manifest. Nó tạo một track, rồi kiểm tra track đó như một kỹ sư âm thanh sẽ làm (demo trong video đăng ngày 30/10/2026). Một khoảnh khắc Alex thấy thú vị: nó chạy speech-to-text lên soundtrack như một bước kiểm tra cho chắc.
Các đoạn nhạc loop có một tiếng click nhỏ ở điểm nối vòng. Agent tìm ra nó bằng seam checker do chính nó viết. Bộ mã hóa MP3 chèn thêm một chút khoảng đệm ở đầu file, nên agent mã hóa lại theo kiểu gapless để vòng lặp liền mạch (demo trong video đăng ngày 30/10/2026). Alex nói anh không nghĩ mình thậm chí biết phải bắt đầu nghĩ về chuyện đó thế nào.
Câu thoại được kiểm tra bằng speech-to-text: agent tạo câu thoại, chuyển nó ngược lại thành chữ, rồi so sánh. Nếu chữ không khớp, nó thu lại (demo trong video đăng ngày 30/10/2026).
Một chi tiết Alex thích: con gái anh muốn có phiên bản nữ của nhân vật chính, và anh nhờ Claude thêm vào. Nhưng có những nhân vật gọi Aleks là "lad". Claude tìm trong cả 207 câu thoại, và chỉ có bảy câu nói "lad", "boy" hoặc "him". Nên anh và Claude giữ nguyên mọi bản thu gốc, và thu một bản cho nhân vật nữ của đúng bảy câu đó, mỗi câu đổi một từ. Alex tự sửa lại: đúng ra là Claude làm (demo trong video đăng ngày 30/10/2026).
9. AI tự chơi thử game của chính nó
Theo Alex, đây là phần quan trọng nhất nếu bạn build bất cứ thứ gì giống thế này với Claude Code: làm sao nó biết game thực sự chạy? Đây lẽ ra đã là nút thắt cổ chai nếu anh phải tự playtest mỗi lần nó thay đổi gì đó (video đăng ngày 30/10/2026).
Ngày đầu tiên, Claude viết một test harness nhỏ (demo trong video đăng ngày 30/10/2026). Không test framework, không dependency. Nó khởi động Chrome không có cửa sổ, ở chế độ headless, load game và điều khiển nó như một người chơi: dịch chuyển Aleks, bấm phím, chờ, đọc các con số từ trong game, và chụp screenshot. Ngoài ra có một autopilot đi hết mọi con đường trên đảo và ghi lại mọi chỗ Aleks bị kẹt.

tools/shoot.mjs (không test framework, không dependency), điều khiển headless Chrome qua DevTools protocol để chạy game, rồi nhận về stuck-spot log, số đọc từ game và screenshot; mỗi kịch bản là chuỗi teleport, press, wait, expect; bên dưới là 131 kịch bản, 100 dòng trong regression list, 103 lần chạy trước khi Phase 8 ship và 0 giá trị bị đảo.Bug đầu tiên nó bắt được lại nằm ở chính màn hình loading của nó, kẹt ở 72%. Nguyên nhân: tab trình duyệt bị ẩn, nên Chrome tạm dừng các animation frame mà loader đang chờ. Theo Alex (demo trong video đăng ngày 30/10/2026), một người chơi sẽ không bao giờ thấy bug đó, còn harness thấy nó ngay lần chạy đầu.
Bài test đi bộ tìm ra (demo trong video đăng ngày 30/10/2026): những khe hở giữa các tấm ván cầu mà bạn sẽ rơi qua, những cột đổ nát được sinh ra ngay trên đường đi, và một mảnh heart piece đặt dưới nước hai mét rưỡi, chỗ Aleks bị chết đuối, nên không bao giờ nhặt được.
Mỗi test là một file JSON gồm các bước: đi tới đây, bấm nút này, kỳ vọng con số kia, và cứ thế. Tới cuối, có 131 test như vậy, và một regression list 100 dòng chạy trước khi bất cứ thứ gì được merge (theo video đăng ngày 30/10/2026). Alex cho xem lượt regression trước khi phase tám được ship: 103 lần chạy trong 95 phút, chạy lần lượt từng cái một, rồi so mọi con số với nhánh main. Anh nói khá kỹ lưỡng cho một game vui chơi, nhưng anh thấy rất thú vị khi xem Claude đưa ra những quyết định đó.
10. Một test xanh có thể nói dối
Theo Alex (video đăng ngày 30/10/2026), một test xanh có thể nói dối. Hai lần trong dự án này, Claude tìm ra những test đã pass mà không chứng minh được gì. Một test lưu game vào một slot rồi load lại từ một slot khác, trống trơn.
Nên luật mà Claude rút ra, và Alex nói anh dùng nó ở mọi nơi kể từ đó (video đăng ngày 30/10/2026): một test phải có khả năng fail. Trước khi tin một bước kiểm tra mới, hãy cố ý cài bug vào, và chắc chắn rằng bước kiểm tra bắt được nó.
Và Claude nhận lỗi của mình. Alex cho xem một test fail ba lần liên tiếp: khi chơi nhân vật nữ, khi chơi nhân vật nam, và trên nhánh main. Ba lần fail giống hệt nhau có nghĩa test đang được chạy sai, chứ không phải game hỏng. Claude viết rằng lỗi ở bài test gust jar là do nó: nó đã chạy test từ nhầm hòn đảo trong URL của test (demo trong video đăng ngày 30/10/2026).
11. Ghi chú playtest và bug con cua
Sáng hôm sau, Alex chơi thử game một cách đàng hoàng. Anh viết các ghi chú trong một tin nhắn dài. Phần lớn là những điều chỉnh nhỏ, có một cái thì lạ: khi gặp con cua, cứ khoảng ba hay bốn nhát đánh, thời gian như chậm lại, một âm thanh khó chịu vang lên, và đòn đánh đứng hình vài giây.
Đây là thứ Claude tìm ra (demo trong video đăng ngày 30/10/2026): ba thứ, mỗi thứ riêng lẻ trông đều đúng, nhưng lại nuôi lẫn nhau. Nhát thứ ba của combo là một cú xoay, và cú xoay kiểm tra va chạm ở mọi frame. Khi một đòn trúng, game đứng lại một khoảnh khắc để cú đánh có cảm giác nặng; lúc đó game chạy ở 5% tốc độ. Nhưng ở 5% tốc độ, cửa sổ va chạm của cú xoay bị kéo dài khoảng 20 lần. Nên nó trúng lại, trúng lại, và đứng hình lại, đứng hình lại. Đánh vào lớp vỏ giáp của con cua, mỗi lần trúng đó là một tiếng "clang".

Harness đo được (theo số đo trong video đăng ngày 30/10/2026): 393 tiếng clang trong một combo, 5,2 giây chuyển động chậm. Sau khi sửa: ba tiếng clang và một phần tư giây. Và một phần thưởng ẩn: vì cú xoay trúng ở mọi frame, mọi sinh vật trong game trước đó đều dễ hơn so với thiết kế.
Phần còn lại trong danh sách của Alex thành ra: bài huấn luyện của Pip, một quest tracker thực sự cập nhật, những việc để làm ở cây cổ thụ lớn, và một bảng thông báo. Tất cả xong trước khi bữa sáng kết thúc (theo video đăng ngày 30/10/2026).
12. Tuning Codex và Level Editor
Khi ra biển, Alex nhờ hai việc: thêm quái vật cho hòn đảo kế tiếp, và một level editor cùng một kiểu admin mode cho bestiary, nơi anh và Claude có thể chỉnh tên, kỹ năng, thuộc tính, vân vân. Tin nhắn trên màn hình:
I'm heading off to the beach - before my playtest - can you keep building out the beastiary, prepare more monsters and quests for the next "level" of the game - which will probably be a new zone in the game, that opens after certain progress etc. It would be nice to have a level editor and some sort of beastiary admin mode where we can tune names, skills, attributes etc for the ingame chars and beasts and bosses.
Quyết định đầu tiên Claude đưa ra là thứ làm cho editor khả thi (demo trong video đăng ngày 30/10/2026): mọi con số của sinh vật, gồm số tim, sát thương, tốc độ, khoảng cách nó nhìn thấy bạn, và đồ rơi, được chuyển ra khỏi code và đưa vào các file dữ liệu. Các sinh vật đọc những con số này trực tiếp lúc chạy. Nên nếu bạn đổi một con số, con Murkling trước mặt bạn thay đổi theo.
class Murkling trong src/game/enemies.ts), rồi Tuning Codex và Level Editor làm việc trên dữ liệu đó.Đó là Tuning Codex, một ngăn kéo ngay trong game đang chạy (demo trong video đăng ngày 30/10/2026): đổi một con số, spawn sinh vật ra, cảm nhận nó, rồi lưu vào repository. Còn Level Editor cho phép bay trên đảo, kéo thả sinh vật và rương đi chỗ khác, và nó kiểm tra công việc của bạn trực tiếp. Lần kiểm tra đầu tiên của nó tìm ra đúng mảnh heart piece nằm dưới nước mà Alex nhắc tới ở trên.
13. Hai session Claude trong một thư mục: Aleks Studio
Rồi Alex nói anh bắt đầu "tham lam". Ngày thứ hai, anh mở session Claude Code thứ hai và bảo nó build một editor app thực thụ cho nhân vật, sinh vật, boss, và cho phép tạo nội dung mới bằng Claude, Blender và ElevenLabs ngay bên trong app.
Vậy là có hai session Claude cùng làm việc trong một thư mục, cùng lúc: một cái build game, một cái build studio. Alex bảo chúng giữ cho nhau nắm tình hình, và chúng làm đúng vậy (demo trong video đăng ngày 30/10/2026). Chúng nhắn tin cho nhau, thống nhất ai sở hữu file nào, và session game đứng ngoài năm file trong 90 phút trong lúc các hook của studio được đưa vào. Chúng còn chia cổng với nhau để test server của hai bên không bao giờ đụng nhau.
Cách làm của Alex (video đăng ngày 30/10/2026): đặt tên cho mỗi session bằng /rename và bảo chúng nói chuyện với nhau. Trên màn hình, tên hai session của anh là ALEKSKID và ALEKSEDITOR, và tin nhắn trong session editor mở đầu bằng "We are working on our game and the main session @ALEKSKID is working".
Đây là Aleks Studio (demo trong video đăng ngày 30/10/2026): mọi sinh vật, NPC, vật phẩm và hòn đảo, mỗi thứ với model 3D thật của nó. Bạn có thể chỉnh bất cứ thứ gì.

Và có Forge (demo trong video đăng ngày 30/10/2026). Bạn gõ một câu, và studio chạy Claude Code ở chế độ headless, mỗi bước một job. Đây là cái đầu tiên: một con cua băng giá sống trên sườn núi, chậm hơn nhưng lì đòn hơn. Một job headless phác thảo concept. Job thứ hai đọc Blender script của con cua và viết một con Frost Crab trên cùng bộ xương: tinh thể băng, màu băng giá, càng phủ tuyết. Vẫn 22 bone và 8 animation như cũ.
Sau đó studio render chân dung bestiary của nó với đúng camera và ánh sáng như mọi con khác. Và Claude viết một test kiểm tra mọi điểm mạnh và điểm yếu mà bestiary khẳng định: 25 trên 25. Chỉ khi đó bạn mới bấm được nút promote (demo trong video đăng ngày 30/10/2026).
Claude còn build cho studio một MCP server riêng. Alex đã nhờ một cách để dùng Claude Code cùng với studio, và đó là câu trả lời của Claude. Nên từ bất kỳ session Claude Code nào, anh có thể hỏi trong studio đang chọn gì, hoặc bảo làm cho sinh vật đang chọn lì đòn hơn một chút (demo trong video đăng ngày 30/10/2026).
14. Nhịp của mỗi phase: idea board, worktree và các đợt agent
Từ đó, mỗi phase đi theo cùng một nhịp, và theo Alex (video đăng ngày 30/10/2026), cái nhịp ấy mới là bài học thật. Sau mỗi phase, anh hỏi tiếp theo làm gì. Claude build một idea board, một trang web nhỏ gồm các thẻ. Anh lướt qua trên điện thoại, thả tim những thẻ anh thích, xếp chúng vào "now", "later" và "skip", và thêm ghi chú khi cần. Claude đọc lựa chọn của anh thẳng từ trang đó; anh không phải copy paste gì cả. Rồi tới phần build.

Và đây là vấn đề khi build trong lúc anh đang playtest: mỗi khi một agent lưu một file, dev server load lại game của anh. Nên từ phase năm trở đi, mỗi phase được build trong một Git worktree, một bản sao thứ hai của repo với server riêng trên cổng riêng (demo trong video đăng ngày 30/10/2026). Và trước khi khởi động bất kỳ agent nào, Claude chứng minh điều đó: một chỉnh sửa trong bản sao load lại trang của bản sao, còn trang của anh không bị đụng tới.

alexthekid/ trên cổng 5199 để Alex playtest, và ../alexthekid-skyreach/, một git worktree trên cổng 5191, nơi 13 agent đang build.Rồi một tin nhắn khởi động 13 agent. Tới phase bảy, với bốn dungeon, là 20 agent chia thành hai đợt (theo video đăng ngày 30/10/2026). Mọi phần art Blender đi trước, vì art không phụ thuộc vào code. Sau đó một dungeon được build thành một lát cắt hoàn chỉnh để chứng minh các phần dùng chung. Chỉ khi đó năm agent mới build phần còn lại cùng một lúc, mỗi agent trên bản sao game của riêng nó, với khu đất được giữ chỗ sẵn trên bản đồ để không ai đặt lối vào dungeon đè lên của người khác.
Một trong 13 agent đó build một thứ Alex không hề yêu cầu và anh rất thích: một trailer camera (demo trong video đăng ngày 30/10/2026). Game tự quay trailer của chính nó, bước đúng một frame mỗi lần ở 60 frame mỗi giây, nên trailer mượt trên bất kỳ máy tính nào. Và nó thử giọng nhiều người dẫn chuyện trên ElevenLabs trước khi chọn một giọng. Video chèn đoạn trailer: "Sail the seas, walk the ocean floor, and ride the wind. Aleks the Kid and the Lumen Isle."
Alex nói anh có thể kể thêm rất nhiều ví dụ như thế, nơi Claude cứ liên tục làm anh bất ngờ (video đăng ngày 30/10/2026). "What a great time to be alive", anh nói.
15. Clear context, và "30 phút còn lại trong weekly limit"
Thêm một thói quen nữa (video đăng ngày 30/10/2026): Alex clear context window rất thường xuyên. Sau mỗi phase lớn, Claude cập nhật một progress file và CLAUDE.md với những gì nó đã học được. Anh nói "prep for a fresh context window", và session kế tiếp bắt đầu sạch từ những file đó. Tổng cộng có 14 session chính trong năm ngày.
Alex nói anh phải cho xem thêm chuyện này. Tối ngày thứ hai, anh sắp hết weekly limit. Nên anh viết (phần đầu hiện trên màn hình, phần sau theo lời anh đọc):
We have 30 minutes left in our weekly limit so let's make the most of it! Fire away at the next phase with sub agents and do as much as you can.
Và hãy xem việc đầu tiên nó làm (demo trong video đăng ngày 30/10/2026). Nó tự đặt cho mình một điểm dừng cứng. Và trước khi khởi động bất cứ thứ gì, nó viết handoff file, để trạng thái được ghi lại ngay cả khi quota hết giữa chừng. Rồi bốn agent trong một worktree. Mười bốn phút sau, cả bốn tính năng đều chạy và mọi test đều xanh: ngôi nhà của Aleks, một tấm bản đồ kho báu, các sinh vật vàng, và một hang động ẩn.
Rồi Alex nhìn vào đó và viết:
Let us not rush - keep working and finish it properly
Và bước review tìm ra những thứ mà test xanh đã che đi (demo trong video đăng ngày 30/10/2026). Ngôi nhà chỉ là mấy khối vuông và một hình nón. Bốn sinh vật vàng đều là cùng một con Murkling. Rương kho báu bật một nguồn sáng giữa lúc chơi, khiến game phải compile lại mọi shader. Ba tính năng mới chạy vòng lặp animation riêng, nên chúng vẫn tiếp tục chạy cả khi đang ở menu.
Như Alex nói (video đăng ngày 30/10/2026): test xanh cho anh và Claude biết nó chạy được, nhưng không cho biết nó có tốt hay không. Nên Claude viết một design contract cho phase đó, biến từng chỗ thô ráp kia thành một luật, và build lại cho đàng hoàng với bảy agent nữa trong hai đợt.
Và để ghi nhận cho rõ: giới hạn đó thực tế chưa bao giờ bị chạm tới. Session chạy tới nửa đêm, rồi Alex bảo tiếp tục vào sáng hôm sau. Anh nói điều thực sự khiến anh kinh ngạc với Opus 5.5 vào thời điểm làm video (video đăng ngày 30/10/2026) là lượng công việc có thể làm trong giới hạn đó, và anh rất mong nó cứ giữ như vậy.
16. Lên điện thoại: touch controls, cái khiên và vệt nhấp nháy đen
Ngày thứ tư, Alex muốn người thật chơi thử: một đợt playtest chỉ dành cho người được mời, trên điện thoại của họ. Claude vạch ra các bước, kết thúc bằng năm quyết định dành cho anh, và anh đưa ra cả năm trong một tin nhắn (demo trong video đăng ngày 30/10/2026): dùng Azure để thử; dưới 20 người (trên màn hình ghi "We will invite less than 20 people to start with"); một mã có thể gõ vào nếu làm mất link; và làm touch controls trước.
Dĩ nhiên anh muốn các con mình chơi thử trên điện thoại, nên phải thêm touch controls. Claude build chúng với một agent, với chín vấn đề được liệt kê sẵn trong brief của nó trước khi bắt đầu (demo trong video đăng ngày 30/10/2026). Vấn đề tệ nhất: game tự tạm dừng mỗi khi chuột không bị khóa (captured), mà điện thoại thì không bao giờ khóa chuột. Lẽ ra game sẽ tạm dừng ở từng frame một.
Rồi anh thử trên iPhone và gửi một screenshot: cái khiên lơ lửng trong không trung trước mặt Aleks. Claude tái hiện lỗi đó trên nhánh main, và lịch sử Git cho thấy bug đã nằm đó từ bản build đầu tiên. Sau đó nó quay lại Blender để làm một tư thế đỡ đòn đúng nghĩa, với cái khiên trên cẳng tay (demo trong video đăng ngày 30/10/2026).
Rồi tới một vệt nhấp nháy đen, chỉ trên iPhone, không bao giờ trên Mac. Bản sửa đầu tiên là một phỏng đoán tốt, và nó sửa được một bug thật, nhưng đó không phải nguyên nhân (demo trong video đăng ngày 30/10/2026). Alex gửi thêm một screenshot và nói "getting quite a lot of flicker". Nên Claude ngừng đoán, và build một công cụ đo vào ngay trong game.
Với một debug flag, nó lấy mẫu mọi frame ngay sau khi frame được vẽ, và khi frame bị đen, nó gửi frame đó lên một database cùng vị trí camera. Và nó chứng minh công cụ đo trước: cứ 180 frame thì ép ra một frame đen, bắt được ba trên ba. Rồi điện thoại của Alex làm phần việc còn lại (theo số đo trong video đăng ngày 30/10/2026): bật mọi thứ, 14 frame đen trong 2.411 frame; tắt glow, không có frame nào; tắt smoothing, không có frame nào.
Nguyên nhân (demo trong video đăng ngày 30/10/2026): một pixel không hợp lệ, một giá trị "not a number", xuất hiện trên GPU của iPhone ở chỗ smoothing gặp glow. Và glow làm nhòe pixel đó ra khắp màn hình. Bản sửa là một guard thay thế các pixel không hợp lệ trước bước glow. Không còn frame đen nào.
Alex nói anh biết tất cả nghe rất kỹ thuật, nhưng theo anh (video đăng ngày 30/10/2026), Claude tự tìm ra hết. Tất cả những gì anh phải làm là chỉ ra vấn đề, và trong ca này, kiểm chứng giúp Claude.
17. Vì sao điện thoại nóng lên
Điều cuối cùng Alex để ý trong ngày hôm đó: điện thoại vẫn hơi ấm. Nên session tiếp theo đi đo (demo trong video đăng ngày 30/10/2026). Nó đếm số triangle điện thoại vẽ mỗi frame, và đi tới năm địa điểm trên đảo. Một con số không đổi khi bạn đi vòng quanh có nghĩa là không có gì bị bỏ ra khỏi khung vẽ. Điện thoại đang vẽ cả hòn đảo ở mọi frame, kể cả phía sau camera.

Bản sửa kiểu sách giáo khoa lẽ ra là cắt hòn đảo thành nhiều khối. Claude đo cách đó trước (demo trong video đăng ngày 30/10/2026): khoảng 2.000 mesh thay vì 229, thêm hàng trăm draw call. Mà draw call cũng tốn sức điện thoại chẳng kém gì triangle. Nên nó cull ngay bên trong từng mesh. Kết quả: chưa tới một nửa số triangle, số draw call như cũ, và một chiếc điện thoại đang ấm giảm xuống chạy ổn định ở 30 frame mỗi giây.
18. Câu chuyện, nhân vật nữ, anh thực sự đã làm gì và chi phí
Khi engine và game đã được build xong, anh và Claude có thể tập trung vào nội dung và câu chuyện. Aleks là ai? Cậu ấy từ đâu tới? Claude hỏi Alex bốn câu hỏi thiết kế dưới dạng trắc nghiệm (demo trong video đăng ngày 30/10/2026). Tám agent build Fairlight Isle, bốn quest cốt truyện, ba chiếc cúp và 48 âm thanh mới, trong bản sao riêng của game, trong lúc những người chơi thử vẫn chơi bản đang chạy. 103 lượt regression, merge, push và deploy trong hai phút.
Con gái Alex muốn một nhân vật chính là con gái, nên dĩ nhiên giờ Aleks có thể là con trai hoặc con gái. Claude cho anh xem bốn kiểu tóc được render trong Blender. Con gái anh chọn phương án B và xin thêm một bông hoa (demo trong video đăng ngày 30/10/2026).
Vậy Alex thực sự đã làm gì? Theo anh (video đăng ngày 30/10/2026), anh viết khoảng 60 tin nhắn trong năm ngày. Phần lớn là "tiếp theo làm gì", "cứ làm đi", "tiếp tục cái này", hoặc một ghi chú playtest từ điện thoại. Công việc của anh là các quyết định: chọn ý tưởng nào, hòn đảo nào, lúc nào dừng lại và làm cho đàng hoàng. Và nhiều quyết định trong số đó diễn ra qua các artifact.
Còn Claude đã làm gì? Theo Alex (video đăng ngày 30/10/2026), nó lập kế hoạch, chia việc, làm ra lượng art và âm thanh đủ cho cả một game thông qua các công cụ khác, tự build test harness của nó, một editor và một studio, và tìm ra những bug mà anh không thể tìm ra từ bên ngoài. Không hoàn hảo, đợt sprint đã cho thấy điều đó. Nhưng với setup đúng, gồm bản hợp đồng, harness, các worktree và handoff file, nó tự đi được rất xa.
Và chi phí bao nhiêu? Theo Alex (video đăng ngày 30/10/2026), Claude Code tự giữ một bộ đếm chi phí trong mỗi session. Cộng tất cả lại, theo giá API trả theo mức dùng, năm ngày này rơi vào khoảng 3.700 đô (slide ghi khoảng $3,688). Ba phần tư trong số đó là Opus 5.5, gồm lead và mọi agent. Một phần tư còn lại là model advisor mà anh đã bật. Có 92 giờ thời gian model trong năm ngày, vì các agent chạy song song.

Alex dùng gói Max, nên theo anh (video đăng ngày 30/10/2026), anh có được tất cả những thứ này với một tuần của gói 200 đô. Anh nói, theo quan điểm của anh, điều đó thật đáng kinh ngạc. Anh cảm ơn mọi người đã xem.
Nguồn và liên kết 8 nguồn
- Tên gốc: I Let Claude Code Build a Full 3D Game While I Was at the Beach
- Sự kiện: YouTube
- Video gốc: https://www.youtube.com/watch?v=qr0G298FQwQ youtube.com
- Kênh YouTube GritAI Studio (Aleksander Stensby): youtube.com/channel/UC5Ls4Ms_OFhUXIAm3iScyYQ youtube.com
- Trang sản phẩm Claude Code của Anthropic (đọc ngày 31/10/2026): claude.com/claude-code claude.com
- Tài liệu Claude Code về Remote Control, tiếp tục một session Claude Code trên máy từ điện thoại, tablet hoặc trình duyệt (đọc ngày 31/10/2026): code.claude.com/docs/en/remote-control code.claude.com
- Blender (đọc ngày 31/10/2026): blender.org; tham số dòng lệnh
-b, --backgroundđể chạy không giao diện, theo manual (đọc ngày 31/10/2026): docs.blender.org/manual/en/latest/advanced/command_line/arguments.html blender.org - Tài liệu ElevenLabs, gồm text to speech, sound effects, music và speech to text (đọc ngày 31/10/2026): elevenlabs.io/docs/overview elevenlabs.io