iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
Vibe Coding

從 Vibe Coding 到系統架構:Gemini x Claude Code 雙 AI 協同開發 Godot 2D Roguelike 卡牌遊戲實戰系列 第 16 篇

Day 16:【AI 判斷】AI 說「這個做不到」,真的做不到嗎?

  • 分享至 

  • xImage
  •  

美術素材導入到一半,我遇到一個很小、卻很煩的問題。
遊戲畫面上的:

⚔ 🛡 💀 ⚡ 🏆

這幾個 emoji,在 Godot 編輯器裡看起來正常,匯出成網頁版之後,卻全部變成空白方塊。
原因也不難理解:專案使用的中文字型沒有這些 emoji 字元。

我問 Claude Code 怎麼處理。
它先幫我盤點 Kenney 的素材庫,最後回報:

生命/護甲圖示與條狀貼圖,Kenney 尚無合用來源。

接著給了三個方案:

  1. 直接拿掉這些裝飾
  2. 改用幾何符號替代
  3. 加入一個十幾 MB 的 emoji 字型

三個方案都不太理想。
我沒有從裡面挑一個。
只回了一句:

kenney 沒有適合的圖?

然後重新查了一次。
結果答案是:

有。

而且就在一個剛好很容易漏掉的素材包裡。


一、一句反問,結論當場翻案

重新查 Kenney 的素材目錄後,我找到了 Board Game Icons。

它的包名是:

board-game-icons

這個素材包裡剛好有:

sword
shield
skull
fire
crown_a

正好可以對應原本畫面上的:

⚔  🛡  💀  ⚡  🏆

另外,UI Pack RPG Expansion 裡也有現成的血條貼圖,而且已經切成左、中、右三段。

原本想用 emoji 解決的問題,現在可以直接改成圖片。
而且整套圖示加起來只有 3.7 KB。

不用拿掉裝飾,也不用改成比較勉強的幾何符號,更不用為了幾個 emoji 背上一個十幾 MB 的字型。

有趣的是,board-game-icons 這個包名,跟前面已經看過的 game-icons 只差了一個:

game-icons
board-game-icons
      ↑
    board-

剛才如果只注意到 game-icons,真的很容易就漏掉。
所以這次我推翻原本的結論,只做了一件事:
再問一句:「Kenney 沒有適合的圖?」


二、問題不是「沒查」,而是「查了一部分,就講成全部」

我後來沒有只停在「原來有素材」。
我繼續追問 Claude Code:

為什麼剛才會說沒有?

答案反而比找到素材更有意思。
它確實有查。
但它當時只打開了一個叫 game-icons 的素材包。
裡面的內容主要是:

  • 方向鍵
  • ABXY
  • L1 / R1
  • 其他遊戲控制器相關圖示

看完之後,它判斷這個包不是我需要的心盾劍圖示。
到這裡其實沒有問題。
問題出在下一步。
它把:

「這個素材包沒有」

變成:

「Kenney 沒有合適的來源」。

也就是:

一個素材包
     ↓
game-icons 沒有
     ↓
Kenney 沒有

中間少了一大段。
Kenney 有上百個素材包,但那次其實連整個目錄都沒有查完。
所以真正的問題不是「查得不夠仔細」。
而是:

查到的資料範圍,跟最後下結論的範圍不一樣。

所以:

「我找過了,沒有」跟「我查過完整清單,沒有」是兩句不同的話。

兩句話聽起來都很肯定。但背後做過的事情,可能完全不同。


三、這次攔下來的,不是 AI 的指令,而是 AI 的判斷

前幾天我講「攔截」時,大部分都是攔 AI 的行為。
例如 Claude Code 要執行:

git init -b main

我可以在按下 Allow 之前先看一下。
它要修改檔案,我可以看 diff。
這些東西都有一個具體的動作,可以停下來看。
但這次不一樣。

「Kenney 沒有合適的來源」不是一個指令。
它是一個結論。

沒有確認視窗告訴我:

「AI 現在準備做出一個可能錯誤的判斷,要不要攔截?」

所以如果我當時直接接受了,很可能就會開始從三個備案裡面選一個。
而三個備案其實都比「找到正確素材」差。
這也是我覺得這次經驗比較特別的地方:

前面能攔的是「AI 要做什麼」,這次要攔的是「AI 認為什麼是找不到的」。


四、什麼時候,我會開始懷疑「真的沒有嗎?」

這次之後,我開始比較注意一種回答。
如果 AI 說:

「沒有。」

我不會因此認為它一定錯。
但如果同時出現下面這幾種情況,我會多問一句。

訊號 我為什麼會多問一句
否定式結論 「沒有」「不支援」「做不到」都需要比「有」更完整的證據
從局部推到整體 查的是一個包、一個檔案、一次測試,結論卻涵蓋整個素材庫、函式庫或平台
馬上出現替代方案 原本的方法走不通後,立刻開始叫你選其他方案,代表「原路不通」這件事可能還沒有被充分確認

這次剛好三個都有。
Claude Code 說:

「Kenney 尚無合用來源。」

這是一個否定式結論。
但實際上只查到 game-icons,卻把結論擴大到整個 Kenney。

接著又給了三個替代方案。
所以我才會回:

kenney 沒有適合的圖?

這句話看起來很簡單。
但它其實是在要求:
「你說沒有,那你查過的範圍到底有多大?」


五、我前一天其實已經做過一次正確的素材篩選

其實前一天我才剛做過一次素材篩選。

當時為了把原本的純文字卡牌換成有邊框的卡片,我找了四個看起來相關的素材包。
最後只有一個真正符合需求。

另外三個:

  • 一個是為淺色介面設計的按鈕組
  • 一個是完整的一副撲克牌,沒有我要的空白卡框
  • 一個就是遊戲手把按鍵圖示,不是心盾劍

這些東西光看素材包名稱和預覽圖,其實不一定判斷得出來。
我必須真的下載、解壓縮,再把裡面的檔名列出來看。
所以那次的結論之所以比較可靠,是因為:

候選素材
   ↓
逐一打開
   ↓
確認內容
   ↓
比較需求
   ↓
得出結論

這次卻變成:

看到一個相關素材包
   ↓
發現沒有
   ↓
直接推論整個素材庫

同一天裡,剛好出現了兩種完全不同的「搜尋」。
一種是真的把候選範圍查過。
另一種只是查到一個樣本。

差別不在於 AI 有沒有搜尋。
而在於:

它到底查了多少,卻說了多大的一句話。


六、從「攔指令」走到「攔判斷」

Day 01 我寫過我的學習方式:
攔截 → 追問 → 親手重做。

一開始的「攔截」很好理解。
Claude Code 要安裝 Godot、建立 Git、執行指令,我就停下來看看。

但做到現在,我發現「攔截」其實還有另一種形式。
有時候 AI 沒有要做任何危險的事情。
它只是很自然地告訴你:

「沒有。」
「這個做不到。」
「這個不支援。」

如果我直接接受,後面整條路就會跟著改變。

這次就是最簡單的例子。
如果我接受「Kenney 沒有合適圖示」:

Kenney 沒有
    ↓
拿掉裝飾?
    ↓
幾何符號?
    ↓
十幾 MB emoji 字型?

但只多問一句:

「真的沒有嗎?」
        ↓
重新查目錄
        ↓
Board Game Icons
        ↓
找到 sword / shield / skull / fire / crown
        ↓
3.7 KB

最後的結果差很多。

所以現在看到 AI 給出一個很肯定的「沒有」,我會多注意一件事:
它是真的查完了,還是只是查到目前看到的東西沒有?
這兩件事,從回答的語氣裡通常看不出來。


明天 Day 17,繼續來看另一種「天花板」。
這次 AI 不是說「找不到」,而是直接認為目前的版面效果已經到極限。
我又問了一句。
結果那個它自己寫下來的「天花板」,就這樣消失了。


💬 你有沒有遇過 AI 說「這個做不到」,後來才發現其實只是它還沒找到方法?


上一篇
Day 15:【事件系統】RewardScene 三選一:9 關構築牌組的最小實作
下一篇
Day 17:【UI 設計】AI 聲稱的「天花板」,可能是他自己設的。
系列文
從 Vibe Coding 到系統架構:Gemini x Claude Code 雙 AI 協同開發 Godot 2D Roguelike 卡牌遊戲實戰 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言