我把兩個 AI 推進 3D,想看它們終於分家|第四回合:同一份 3D 機器狗平台遊戲題目,兩套 AI coding 設定各自從零獨立做——結果它們又想到一塊去了

前三回合我一路加碼想逼兩個 AI 分家,這回直接換一個維度、把它們推進 3D,本以為全新的立體世界總該逼它們各走各路。結果它們又收斂了:同一套工具、幾乎一樣的自刻物理與鏡頭、一樣的六關。真正各走各路的,只剩最表層那隻狗的手感與長相。骨頭一樣,肉不一樣。

分享
我把兩個 AI 推進 3D,想看它們終於分家|第四回合:同一份 3D 機器狗平台遊戲題目,兩套 AI coding 設定各自從零獨立做——結果它們又想到一塊去了

封面概念圖:同一份「3D 機器狗平台遊戲」題目,被一雙手從平面的紙上抬進一個立體的 3D 空間;兩套 AI 各自爬進這個新維度,長出兩隻長相截然不同的機器狗(左邊冷調圓潤、右邊明亮方塊),但牠們腳下卻踩著同一副骨架——同一套 3D 函式庫、同一種自刻的物理與環繞鏡頭、同樣切成六關。

前三回合,我一直在做同一件有點傻的事:把一模一樣的一份遊戲開發題目,一字不改地丟給兩套完全不同的 AI 開發設定,讓它們關起門來各做各的,最後我親手玩過兩款成品,看它們像不像。而我心裡真正想看到的,其實是它們分家——我想看兩個不同的 AI,走出兩條不一樣的路。

可它們就是不肯。

第一回合,題目最簡單(一款 2D 小遊戲),它們收斂得像雙胞胎,嚇了我一跳。第二回合,我把題目變難、變開放(一款 2D 策略遊戲),它們才終於在「沒有標準答案的地方」分了岔。第三回合,我甚至耍了個手段:只對其中一套偷偷追加「務必華麗」的美術硬指令——結果那道指令只換來一層漂亮的皮,底層那副遊戲骨架,兩邊照樣蓋成同一個樣子。

所以這一回合,我決定不再小打小鬧,直接祭出我手上最狠的一招:換一個維度。

我要它們做的,不再是平面上的遊戲,而是一款真正的 3D 遊戲——一個有前後左右、有高低遠近、鏡頭可以繞著角色轉的立體世界。而且對這兩套 AI 來說,這都是生平第一款 3D 作品。3D 的工程重量,比 2D 重了不只一個檔次。我幾乎篤定:這一次,全新的維度總該把它們逼分家了吧?

結論先講,因為它就是這篇文章的靈魂:沒有。它們又想到一塊去了。 而且這一次,我連手段都沒耍——題目對兩邊完全對稱,是一場乾乾淨淨的公平比較。


這次的題目:兩隻機器狗,各自的第一款 3D 遊戲

先把題目講清楚,你才知道後面在比什麼。這一回合,兩邊拿到的是完全一樣的一份需求,沒有任何一句偏心的加料(這點跟上一回合很不一樣,等一下我會回頭說)。

我要的是一款 3D 機器狗平台跳台遊戲。玩過《超級瑪利歐 64》的人會秒懂:你操控一隻角色,在一座座浮在空中的平台之間又跑又跳,沿路把散落的收集物撿乾淨,閃過危害,最後抵達終點。這種「一路跳台、沿途收集」的類型,遊戲圈有個暱稱叫 collect-a-thon(收集大會串)。只是這回主角不是水管工,而是一隻機器狗。

其餘的要求,我一樣寫得白話,但每條都很硬:

  • 純網頁、瀏覽器直接打開就能玩,不必安裝。技術上用一套叫 Three.js 的工具——你可以把它想成「一套讓網頁畫得出立體 3D 畫面的繪圖工具箱」。
  • 一切 3D 造型都要用程式當場「長」出來:機器狗也好、整個世界也好,全都得用最基本的方塊、圓柱、球這些幾何積木,在程式裡一塊一塊拼出來。明文禁止使用任何現成的 3D 模型檔、禁止貼任何現成的外部貼圖。 一切都是程式碼親手捏的。
  • 風格要走 stylized 低多邊形(低面數的卡通風,稜角比較分明的那種簡約 3D),但光影要好看,視覺為重。
  • 至少六個關卡,而且關卡內容要用一張「資料清單」描述、而不是寫死在程式裡。
  • 一具可以自由旋轉的第三人稱環繞鏡頭:能繞著狗轉著看,而且當鏡頭被牆擋住時,要會自動拉近、不讓玩家被牆遮瞎。
  • 用瀏覽器自己的小倉庫(localStorage)記住玩家的進度。

這裡有一個細節我得先誠實標出來,因為它跟後面的重點直接相關:上面那條「所有造型都得用程式長出來」,是我在題目裡就白紙黑字要求的。所以待會兒你看到兩邊「都用程式捏機器狗」,那部分的一致,是我指定的,不算它們自己撞到一起。真正驚人的收斂在別的地方——先記住這條線,等一下對照就清楚了。


兩位參賽者,和那句每回合都得講的醜話

老規矩,先把兩位請上台,給對稱的介紹:

  • 設定 A:一套叫 Codex 的 AI 開發工具,搭配一顆代號 GPT-5.6 SOL 的模型。它做出來的遊戲叫《KORA: Skybound Circuit》(珂拉:天穹迴路),公開網址 https://captain-balung.github.io/kora-robot-dog/
  • 設定 B:一套叫 Claude Code 的 AI 開發工具,搭配一顆代號 Fable 5 的模型。它做出來的遊戲叫《Bolt 波特:能量核心大冒險》,公開網址 https://captain-balung.github.io/bolt-robot-dog/

兩款都在 2026 年 7 月 11 至 12 日完成,各自從一張白紙開始,不共用任何一行程式碼,也都是這兩套設定的第一款 3D 作品。

接著是那句每回合都得原封不動再講一次的醜話:這不是一場乾淨的「模型對決」。

你可能很想把它讀成「GPT-5.6 SOL 對決 Fable 5,看哪顆模型比較強」。這樣讀是錯的。因為 Codex 和 Claude Code 是兩套不同的開發外框:它們怎麼把我的題目轉成給模型的指示、配了什麼工具、跑多久、用什麼節奏來回,全都不一樣。所以我比的其實是「工具+模型」綁在一起的一整包——工程上叫 bundle(組合包)。就像兩位廚師一個用專業廚房、一個用露營爐,菜有差你也不能全算在「廚師」頭上。這場實驗好玩,但它從頭到尾都不是一場乾淨的擂台賽。這句話我每一篇都要講,因為它太容易被忘記。


我親手玩了:兩款都是貨真價實、能玩的 3D 遊戲

紙上談兵沒意思,我把兩款都玩了一輪。第一個、也是最讓我佩服的事實是:它們都不是半成品,也不是徒有其表的空殼——是兩款真的能坐下來玩的完整 3D 平台遊戲。

流程幾乎一致:進去先是主選單,一隻 3D 機器狗站在浮空的平台上等你;選關(各有六個關卡、都取了主題名字)之後正式進場——用鍵盤的 WASD 移動、拖曳滑鼠就能繞著狗轉動鏡頭、空白鍵跳躍還能再補一次「二段跳」、按鍵讓狗吠一聲、沿路收集零件、閃避危害、掉血了會扣命,畫面上方有分數與時間的狀態列,過關還有結算。你在一款正經 3D 平台遊戲裡預期會有的零件,兩邊都真的裝上去、也都真能開局往下玩。

我要特別說一句:要在單一一次工作階段裡,把「3D 角色控制」「會自動避牆的環繞鏡頭」「3D 立體碰撞」「跳台玩法」「六個關卡」這一整套兜起來、還跑得動,是非常不簡單的工程。 這比前幾回合的 2D 難了一大截——2D 的世界是一張平面棋盤,3D 卻要同時處理前後、左右、上下三個方向的運算,光是「鏡頭該擺哪、被牆擋住怎麼辦」就夠人頭痛了。兩套 AI,都在一次工作階段裡把這件事做出來了。

先看兩邊的主選單長什麼樣:

設定 A《KORA》的主選單:一隻造型圓潤的白色機器狗,站在冷藍色調的發光格線浮台上;深藍的天空、柔和的邊緣光,左側是「AURORA FOUNDRY ARCHIPELAGO / KORA / SKYBOUND CIRCUIT」的標題與幾顆選單按鈕,整體靜謐精緻,像一張氛圍插畫。

設定 B《Bolt 波特》的主選單:一隻稜角分明、色塊乾淨的方塊感機器狗,站在明亮的綠色草地上,藍天當背景;左側浮著一塊深色面板寫著「BOLT 波特 · 能量核心大冒險」與選單按鈕,活潑討喜。(與上圖是同一件事——主選單——的兩種畫法。)

一眼就看得出來,兩隻狗、兩個世界,長得完全不是同一個調。這正是這一回合真正的分岔點,等一下我會細講。但在那之前,先看看它們的相同之處——那才是嚇到我的地方。


那個「原來如此」:連跳進 3D,它們都還是收斂了

好,現在把兩份開發紀錄並排攤開。先鄭重聲明:以下是它們各自回報的自述,我沒有逐一翻原始碼覆核,請當成「參賽者自己的說法」讀。而我在題目裡明文要求過的那條「一切造型用程式長出來」,那部分的一致是我指定的、不算數;我要講的,是我一個字都沒指定、它們卻自己撞在一起的那些。

把兩邊的紀錄一條一條對過去,我起了一身雞皮疙瘩:

  • 它們都伸手抓了同一套 3D 工具箱——Three.js(只是版本略有不同)。市面上能畫 3D 網頁的工具不只一套,它們卻不約而同挑了同一套。
  • 它們都沒有用現成的「物理引擎」(一種幫你自動算重力、碰撞、掉落的套裝工具),而是各自親手刻了一套幾乎一樣的碰撞物理——親手處理狗撞到牆、踩到平台、爬上斜坡這些事。
  • 最讓我停下來的是這一條:它們都各自親手刻了那具「會避牆的第三人稱環繞鏡頭」。而且兩邊的紀錄還不約而同地寫到同一個理由——現成的鏡頭控制工具,並沒有「一邊跟著狗跑、一邊在被牆擋住時自動拉近」這種功能,所以只好自己從頭寫一具。兩個不同的 AI,各自遇到同一道牆,各自得出同一個「那我自己來」的結論。
  • 它們都做了會載著玩家一起移動的移動平台旋轉平台;都把六個關卡用一張資料清單(技術上叫 JSON,可想成一張規格清楚的表單)描述、再讓程式照表把關卡長出來;都用瀏覽器的小倉庫存進度;都用程式當場合成音效;都在單一一次工作階段裡完成。

你發現了嗎?我在題目裡指定的,其實只有「用程式捏造型」這一條。至於「該用哪一套 3D 工具箱、要不要自己刻物理、要不要自己寫鏡頭、切成幾關」——這些我一個字都沒提。它們卻在這些我留白的地方,一格一格地撞進了同一格。

這就是這篇文章我最想給你的那個「原來如此」:我一路加碼,就是想逼它們分家——從簡單到開放、從加指令到現在乾脆換一個維度——結果那副「該用哪套工具、該怎麼刻物理與鏡頭、該切幾關」的骨架,強到連跳進一個全新的 3D 世界都打不散。 深層的收斂活了下來。真正各走各路的,只剩一層東西——待會兒揭曉。

那這副骨架的收斂,到底從哪來的?我的體會是這樣:兩套 AI 學習的養分,是同一片網路——人類工程師這些年寫在無數開源專案、教學、討論串裡,關於「一款 3D 網頁平台遊戲該怎麼搭」的集體經驗。當全世界的工程師遇到「網頁要畫 3D」大多會想到 Three.js、遇到「現成鏡頭不夠用」大多會選擇自己寫,那麼兩個讀遍了這片集體經驗的 AI,自然會在同一個路口做出同一個選擇。它們不是抄對方,而是抄了同一位老師——那位老師,就是整個網路上的人類工程經驗。


那真正分家的是什麼?手感與長相

如果骨架這麼收斂,這一回合難道就沒有分岔了嗎?有的。而且分得很清楚——只是它不在骨頭那一層,而在這一層:手感與長相。

先看長相。兩隻狗、兩個世界,是兩種截然不同的品味:

  • 設定 A 的《KORA》=圓潤、冷調、有氛圍。 機器狗造型比較圓滑,整個世界是一座冷藍色的「天空鑄造廠」,浮台是會發光的半透明格子,打光柔和、帶著邊緣光,整體靜謐而精緻,像一張氛圍濃厚的概念插畫。
  • 設定 B 的《Bolt 波特》=方塊、明亮、活潑。 機器狗走的是稜角分明的「方塊感」低多邊形(有點像《天天過馬路》那種可愛的方塊風),世界是白天、藍天、綠草地,色塊乾淨、打光比較平實,活潑而討喜。

有趣的是,我在題目裡只寫了「stylized 低多邊形」這一句。兩邊都老老實實符合了這句話——都是低面數、都走風格化——只是它們對「這句話到底該長什麼樣」各有各的想像:一個把它想成冷冽精緻的氛圍插畫,一個把它想成明亮可愛的方塊積木。同一句形容詞,長出兩張完全不同的臉。

這份差別一路延伸到遊玩畫面:

設定 A《KORA》的遊玩畫面:第三人稱視角跟在圓潤的白色機器狗身後,腳下是會發光的半透明藍綠色格子浮台,遠處還有一層層待跳的平台;上方是分數、時間的狀態列,冷調而靜謐。

設定 B《Bolt 波特》的遊玩畫面:第三人稱視角跟在方塊感的機器狗身後,腳下是明亮的綠色草地浮台,藍天當背景;左上角是三顆愛心與關卡名、右上角是收集進度,清新一目了然。(與上圖是同一件事——遊玩畫面——的兩種畫法。)

一個冷冽如夜、一個明亮如晝。你更喜歡哪一種,取決於你是哪種人、那天想要什麼氛圍——這道選擇題,我留給你。

除了長相,兩邊在「手感」的講究上,各自報了不同的細節(一樣提醒:以下是各自回報的自述,非我逐一覆核):

  • 設定 A(Codex/GPT-5.6 SOL) 自報那隻狗用了 54 個模組化的網格拼成、有 8 類動作;還做了 coyote time 和跳躍緩衝這類很講究「跳起來手感」的小設計——白話說,就是讓你「剛走出平台邊緣的那一瞬間還來得及跳」「按跳的時機差一點點也還算數」,是老練的平台遊戲才會偷偷埋的體貼。它還用一種叫 InstancedMesh 的技巧優化效能、支援手把操作;自報這一輪約花了 57 分鐘,實測第一關約有 56fps(畫面每秒更新約 56 次,算是順的)。
  • 設定 B(Claude Code/Fable 5) 自報那隻狗用了 9 段程序動畫;它的紀錄很坦白,詳列了這一輪抓修的 6 個問題——色彩一度發白、鏡頭前後方向裝反了、撿零件時判定用狗腳底吃不到浮空的骨頭、斜坡爬不上去、選單面板擋住了狗……它也大方列出「已知的簡化」:沒做一個可自由探索的中央大廳、沒做衝刺鍵、沒做某種進階的光暈後製、沒做手機觸控。自報這一輪約花了 30 分鐘,約 56 至 57fps(在軟體渲染的環境下跑)。

你會注意到一件事:兩邊的耗時差很多(A 約 57 分鐘、B 約 30 分鐘)。我必須對稱、小心地讀它,別讓它變成暗示:「快」不等於比較好,「精緻」也不等於比較好。 慢一點的那邊,或許把時間花在更細的手感打磨與效能優化上;快一點的那邊,或許把力氣收在先把整套流程跑通、再誠實列出哪些先簡化掉。它們只是把心思放在不同的地方,兩份紀錄各有各的用功之處。我把它們並排講出來,是要讓你看見「不一樣」,不是要幫你分高下。

順帶提一個誠實的更正:前幾回合我常看到一道很分明的差別——「一邊用真正的網頁按鈕做選單(對讀螢幕的輔助工具比較友善)、另一邊整個畫在畫布上(輔助工具讀不出來)」,也就是所謂的無障礙(a11y,讓看不見螢幕的人也用得了的設計)。但這一回合那道差別被拉近了:兩邊的選單和狀態列,都改成把網頁元件疊在 3D 畫面之上。所以這一關,我不能硬套前幾回合的老結論說「A 比較無障礙」——事實上這回兩邊在這件事上靠得很近。這點我得誠實更正,因為照著慣性寫,就是在騙你。


所以,把它們推進 3D,我到底看到了什麼?

回到最開頭那個我一直想證明的念頭:換一個維度,總該把它們逼分家了吧?

答案是:沒有,至少沒逼散那副最深的骨架。 我把它們從平面推進立體、推進一個工程重量翻倍的全新世界,本以為新維度會逼它們各自摸索、各走各路;結果它們還是各自關起門來、卻不約而同地抓了同一套工具、刻了幾乎一樣的物理與鏡頭、切成一樣的六關。真正分家的,只剩最表層那一件事——手感與長相,那層品味的紋理。

如果這四回合的實驗,要收束成一句能刻在牆上的話,那會是這樣:

骨頭一樣,肉不一樣。

那副骨頭——該用哪套工具、該怎麼把一款遊戲搭起來——的收斂,來自它們共讀的同一片網路,也就是人類工程師集體累積下來、關於「這種遊戲該怎麼做」的做法。這份集體經驗強大到,就算你把題目從 2D 換成 3D、把工程難度整個翻上去,它們照樣會在同一個路口做出同一個選擇。

而那層肉——那隻狗長什麼樣、那個世界是冷是暖、跳起來是什麼手感——的分岔,則來自各自 bundle 的品味。同樣一句「stylized 低多邊形」,一個把它讀成冷冽的氛圍插畫,一個把它讀成明亮的方塊積木。這層品味,是我到目前為止,唯一能穩定看到它們真正不一樣的地方。

我沒有要在這裡宣布誰贏,老實說玩完兩款我自己也選不出來:想在安靜的晚上,跟著一隻圓潤的機器狗慢慢跳過一座冷藍色的天空鑄造廠,我會開《KORA》;想要明亮、輕快、可可愛愛地帶著方塊小狗蹦蹦跳跳,我會開《Bolt 波特》。你偏好哪一款,取決於你是哪種人、那天想要什麼——這道選擇題,從頭到尾都是你的。

如果說前三回合我學到的是「簡單會收斂、開放會分岔、一句華麗只買得到皮」,那第四回合補上的是最後一塊:連換一個維度,都撼不動那副最深的骨架。 下次你聽到有人說「不同的 AI 想法應該很不一樣吧」,也許可以想起這兩隻同骨不同皮的機器狗,然後反問一句:它們真正不一樣的,是那副從網路上共同學來的工程骨架,還是只有最表面那層各自的品味與長相?這兩件事,值得你分開來看。

Read more