iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Software Development

Roblox Studio AI 協作開發大全系列 第 13

第 13 章:Prompt 修 Bug:從錯誤訊息回到 Assistant

  • 分享至 

  • xImage
  •  

本章目標

第 9 到第 12 章,你已經讓 AI Adventure Island 有了第一批真正的系統:

  • 水晶收集 Script。
  • 玩家 leaderstats.Crystals 狀態。
  • AdventureHUD
  • RemoteEvent client/server flow。

這也代表你開始會遇到真正的 bug。

例如:

  • 碰到水晶沒有反應。
  • Output 顯示找不到 AdventureIsland
  • HUD 沒有更新。
  • GuideButton 按了沒有提示。
  • RemoteEvent 被 discarded。
  • Script 跑在錯誤位置。
  • Assistant 修一次後,另一個功能壞掉。

這一章不新增功能。

這一章要建立一套 debug prompt 格式,讓你可以把錯誤訊息、目前 Script、預期行為、實際行為整理成 Assistant 能處理的資訊。

本章成果是一套可重用模板:

預期
實際
Output
相關 Explorer 路徑
相關 Script
剛才做過的修改
限制範圍
請 Assistant 做什麼

你要學會從:

不能動,幫我修。

改成:

Playtest 時按 GuideButton,HintLabel 沒有更新。Output 顯示 Remote event invocation discarded。這是 RequestGuideHint 的位置與 LocalScript / ServerScript,請只修 RemoteEvent listener,不要重做 HUD 或任務系統。

這是 AI 開發能否長期維護的差異。

Assistant 在 Studio 中解釋選取的程式碼。

圖 13-1 除錯 prompt 應附上程式碼、錯誤訊息與重現步驟;Assistant 的解釋仍需用 Output 和 Playtest 驗證。

Context Pack

本章依據以下 Roblox 官方文件撰寫:

官方 Output 文件說明,Output 會顯示:

  • Script errors。
  • Roblox Engine messages。
  • print()
  • warn()

並且可以打開:

Show Context
Show Source
Show Timestamp

這對 AI 協作非常重要。

如果你把錯誤訊息貼給 Assistant,但沒有 script name、line number、client/server context,Assistant 只能猜。

官方 Script Editor 文件也提醒,Script Editor 會提供 syntax highlighting、autocomplete、Script Analysis、documentation pop-ups。這些工具可以在你問 Assistant 前先提供第一層線索。

官方 debugging 文件則提供 breakpoint、logpoint、watch、call stack 等工具。本章不會完整教 debugger,但會教你什麼時候需要從 Output 進一步升級到 breakpoint 或 logpoint。

開場情境

假設第 12 章完成後,專案結構如下:

ReplicatedStorage
  Remotes
    RequestGuideHint

StarterGui
  AdventureHUD
    MainFrame
      CrystalCountLabel
      ObjectiveLabel
      GuideButton
      HintLabel
    AdventureHUDController

ServerScriptService
  CrystalCollectionService
  GuideHintService

現在你 Playtest。

你收集了三顆水晶。

HUD 顯示:

Crystals: 3

你按下 GuideButton,但 HintLabel 沒有更新。

這時候有兩種問法。

差的問法:

Guide button 不會動,幫我修。

好的問法:

Playtest 時我已收集 3 顆水晶,HUD 顯示 Crystals: 3。
按下 StarterGui.AdventureHUD.MainFrame.GuideButton 後,HintLabel 沒有更新。
Output 顯示 Remote event invocation discarded。
RequestGuideHint 位於 ReplicatedStorage.Remotes。
AdventureHUDController 有 FireServer,但 GuideHintService 可能沒有 OnServerEvent listener。
請只修 RemoteEvent listener,不要重做 HUD、CrystalCollectionService 或任務系統。

同樣是找 Assistant,結果會差很多。

第一個 Prompt

本章第一個 prompt 不是叫 Assistant 修 bug。

是叫 Assistant 幫你做 debug plan。

請輸入:

【Ch13 主任務|診斷 RemoteEvent】
我正在除錯 AI Adventure Island 的 GuideButton RemoteEvent flow。

請先不要修改任何 Instance 或 Script。

目前預期:
- 玩家收集 3 顆水晶後,HUD 顯示 Crystals: 3。
- 玩家按下 AdventureHUD.MainFrame.GuideButton。
- LocalScript 呼叫 ReplicatedStorage.Remotes.RequestGuideHint:FireServer()。
- ServerScriptService.GuideHintService 收到 OnServerEvent。
- Server 檢查 player.leaderstats.Crystals >= 3。
- Server 用 FireClient 回傳提示文字。
- LocalScript 收到 OnClientEvent 後更新 HintLabel.Text。

目前實際:
- HUD 的 Crystals 已經顯示 3。
- 按 GuideButton 後 HintLabel 沒更新。

我接下來會貼 Output 和相關 Script。

請你先列出我要檢查的順序:
1. Explorer 路徑。
2. LocalScript 是否有 FireServer。
3. Server Script 是否有 OnServerEvent。
4. Client 是否有 OnClientEvent。
5. Output 中要找哪些錯誤。

請不要直接重寫整個系統。

這個 prompt 的目的是讓 Assistant 先幫你建立診斷順序。

你不是一出錯就重寫。

你先縮小問題在哪一段:

Button Activated?
FireServer?
OnServerEvent?
server validation?
FireClient?
OnClientEvent?
TextLabel update?

這是 debugging 的基本能力。

Assistant 可能產生的結果

好的 Assistant 回答應該會把流程拆成檢查點:

1. 確認 ReplicatedStorage.Remotes.RequestGuideHint 只有一個。
2. 確認 AdventureHUDController 是 LocalScript,且位於會複製到 PlayerGui 的 AdventureHUD 裡。
3. 在 GuideButton.Activated 裡加入 print("[Client] GuideButton activated")。
4. 在 FireServer 前加入 print("[Client] Firing RequestGuideHint")。
5. 確認 GuideHintService 在 ServerScriptService,且 Enabled=true。
6. 在 OnServerEvent 中加入 print("[Server] RequestGuideHint received", player.Name)。
7. 確認 server 有使用 FireClient(player, message)。
8. 在 client OnClientEvent 中加入 print("[Client] Guide hint received", message)。
9. 確認 HintLabel 路徑與名稱。

這比直接貼一整段新程式更有價值。

因為它讓你知道:

哪個環節有訊號
哪個環節訊號中斷

如果 Output 只出現:

[Client] GuideButton activated
[Client] Firing RequestGuideHint

但沒有 server log,問題大概在:

  • RemoteEvent 不是同一個。
  • Server listener 沒有接上。
  • Server Script 沒有執行。

如果 Output 出現 server log,但沒有 client reply,問題可能在:

  • Server 沒有 FireClient
  • Client 沒有 OnClientEvent
  • Client 收到但 HintLabel 路徑錯。

Debug prompt 的價值就在這裡。

它把「壞了」拆成可驗證步驟。

元件拆解

Output

Output 是你和 Assistant 溝通 bug 的第一份證據。

官方文件說,Output 會顯示 errors、engine messages、print()warn()

Output 視窗中的訊息區、搜尋、過濾與來源資訊。

圖 13-2 除錯時保留 Output 的完整訊息、來源與 client/server context;只截最後一句通常不足以定位問題。

請養成三個習慣:

1. Playtest 前清空 Output。
2. 開啟 Show Context 和 Show Source。
3. 複製完整錯誤,不要只抄最後一行。

錯誤訊息通常包含:

context
script name
line number
error message
stack trace

如果 Output 顯示:

ServerScriptService.GuideHintService:12: attempt to index nil with 'WaitForChild'

不要只跟 Assistant 說:

WaitForChild 壞了。

要貼:

完整錯誤:
ServerScriptService.GuideHintService:12: attempt to index nil with 'WaitForChild'

相關行:
local remotes = ReplicatedStorage:WaitForChild("Remotes")
local requestGuideHint = remotes:WaitForChild("RequestGuideHint")

Assistant 需要 script line 和上下文。

Script Editor

Script Editor 是你確認錯誤位置的第二個工具。

它可以:

  • 顯示語法 highlight。
  • 提供 autocomplete。
  • 顯示 Script Analysis。
  • 跳到變數或 function 宣告。
  • 搜尋同名 RemoteEvent 或 Script。

當 Assistant 產生新程式後,不要只看它有沒有貼完。

你應該打開 Script Editor 檢查:

Script 名稱是否正確?
變數名稱是否和 Explorer 裡的 Instance 名稱一致?
有沒有紅線或 warning?
同一個 function 是否被重複定義?
有沒有多個同名 RemoteEvent?

第 13 章不要求你不用 AI。

它要求你用 AI 前先把 Studio 已經提供的資訊收集起來。

print、warn、logpoint

第 9 章你已經用過 print()

第 13 章你要更有策略地使用它。

不要亂印:

print("test")
print("here")
print("aaaa")

請印可定位訊息:

print("[Client][AdventureHUDController] GuideButton activated")
print("[Client][AdventureHUDController] Firing RequestGuideHint")
print("[Server][GuideHintService] Received RequestGuideHint from", player.Name)
print("[Server][GuideHintService] Crystal count =", crystalCount)
print("[Client][AdventureHUDController] Received hint:", message)

這些訊息有三個資訊:

context: Client 或 Server
script: 哪個 Script
event: 發生什麼事

如果你不想改程式碼,也可以用 debugging 文件提到的 logpoint。Logpoint 會把訊息印到 Output,但不暫停 script。

適合:

  • 檢查變數值。
  • 不想插入臨時 print()
  • 想確認某一行是否執行到。

Breakpoint、Watch、Call Stack

如果 Output 不夠,你可以使用 debugger。

本章只建立基本判斷:

Output / print
  適合確認事件有沒有發生、錯誤在哪個 Script/line。

Logpoint
  適合確認某行執行時的變數值,但不想暫停遊戲。

Breakpoint
  適合暫停在某行,逐步看 function 怎麼走。

Watch
  適合追蹤變數或 expression 的值。

Call Stack
  適合確認 function 是從哪裡被呼叫的。

你不需要第一天就精通 debugger。

但你要知道:當 Assistant 修了三次還修不好時,不要繼續盲目貼 prompt。

你要改成收集更強證據:

這個 function 有沒有被呼叫?
player 是 nil 嗎?
RemoteEvent 是不是同一個 Instance?
HintLabel 路徑是否正確?
crystalCount 當下是多少?

這些證據比「還是不行」有用太多。

Playtest

收集可用錯誤資料

本章的 Playtest 不是測新功能。

它是練習收集 debug prompt 資料。

請用第 12 章 GuideButton flow 做一次:

1. 清空 Output。
2. 開啟 Show Context。
3. 開啟 Show Source。
4. Playtest。
5. 收集 3 顆水晶。
6. 按 GuideButton。
7. 複製 Output 中所有相關錯誤和 print。
8. 打開 Explorer,確認 RequestGuideHint、AdventureHUDController、GuideHintService 的位置。
9. 複製相關 Script 片段。
10. 寫出預期和實際。

把資料整理成:

預期:

實際:

Output:

Explorer 路徑:

相關 Script:

剛才修改:

限制範圍:

這就是本章最重要的產物。

修正 Prompt

以下是本書後續會反覆使用的 debug prompt 模板:

【Ch13 修正 1|診斷 GuideButton 資料流】
我正在除錯 Roblox Studio 專案 AI Adventure Island。

請先分析,不要直接重做整個系統。

## 預期行為
(寫清楚應該發生什麼)

## 實際行為
(寫清楚實際發生什麼)

## Output / Developer Console
###
貼上完整錯誤、warning、print,包含 context、script 名稱、line number
###

## 相關 Explorer 路徑
###
貼上相關 Instance 階層,例如 ReplicatedStorage.Remotes.RequestGuideHint
###

## 相關 Script
###
貼上相關 Script,或至少貼出相關 function
###

## 剛才做過的修改
(例如:我剛新增 GuideButton,或剛把 RemoteEvent 移到 ReplicatedStorage)

## 限制範圍
請只修正這個 bug。
不要新增 DataStore、完整任務系統、商店、背包或重做整個 HUD。

## 請你回覆
1. 可能原因排序。
2. 要檢查的 Studio 路徑。
3. 最小修改方案。
4. 修改後的完整 Script 或 patch。
5. Playtest 驗收步驟。

再提供幾個具體版本。

RemoteEvent 沒反應:

問題:GuideButton 按下後 HintLabel 沒更新。
Output:貼上 remote discarded 或沒有 server log 的情況。
請檢查 FireServer、OnServerEvent、FireClient、OnClientEvent 是否都接在同一個 RequestGuideHint。
不要讓 client 自己改 Crystals.Value。

HUD 不更新:

問題:leaderstats.Crystals 已經變成 2,但 HUD 仍顯示 Crystals: 0。
請檢查 AdventureHUDController 是否等待 player.leaderstats.Crystals,是否連接 crystals.Changed,是否更新正確 TextLabel。
不要改 CrystalCollectionService 的 server state。

水晶重複觸發:

問題:碰 Crystal_01 後 Output 連續印很多次,Crystals 一次增加多個。
請檢查 CrystalCollectionService 的 debounce。
每顆水晶應該在收集後立即 CanTouch=false,5 秒後才恢復。
不要使用單一全域 debounce 阻擋所有水晶。

Script 放錯位置:

問題:Script 沒有執行。
請檢查 Script 類型與位置。
Server logic 應放 ServerScriptService。
UI update 應放會複製到 PlayerGui 的 LocalScript。
RemoteEvent 應放 ReplicatedStorage.Remotes。

這些不是一次性內容。

後面每章都會用。

工程整理

完成本章後,請在 manuscript 或自己的專案筆記中保存一份 debug 模板。

建議新增到工作筆記:

Debug Prompt Template
1. 預期
2. 實際
3. Output / Developer Console
4. Explorer 路徑
5. 相關 Script
6. 剛才修改
7. 限制範圍
8. 要求 Assistant 回覆:原因、檢查、最小修正、驗收

也建議建立一個 bug 紀錄格式:

Bug ID:
Date:
Feature:
Symptom:
Output:
Root cause:
Fix:
Regression test:

這會讓你從「AI 幫我修」進步到「我和 AI 一起維護系統」。

當專案變大,記憶 bug 比修 bug 更重要。

如果你不知道曾經修過什麼,很容易讓 Assistant 把已修好的地方改壞。

本章總結

這一章,你沒有新增功能,但建立了 AI 開發最重要的維護能力。

你學到:

  • Output 是第一份 bug 證據。
  • Show Context 和 Show Source 能幫你分辨 client/server 與 script line。
  • Script Editor 可以先暴露語法與分析問題。
  • print()warn() 要包含 context、script、事件名稱。
  • Logpoint 可在不暫停程式的情況下輸出變數。
  • Breakpoint、Watch、Call Stack 適合深入追蹤 function 流程。
  • Developer Console 可在 Studio 測試或 live session 查看 log、memory、network 等資訊。
  • 好的 debug prompt 要包含預期、實際、Output、Script、Explorer 路徑、剛才修改與限制範圍。

到這裡,第三部完成了從 Script、玩家狀態、UI、client/server 到 AI 除錯工作流的基礎。

下一章會進入第四部:遊戲玩法逐步完成。我們會開始做第一條任務線,讓 NPC、收集狀態、UI 和 server 狀態真正串成一個完整 gameplay loop。


關於 Wolke

嗨!我是 Wolke,曾任 Google Developer Expert(GDE,2019–2023)LINE API Expert

我熱衷於研究 AI Agent、n8n 自動化工作流與全端開發架構,致力於將 AI 技術轉化為真正能落地的生產力工具。

如果你喜歡這篇文章,歡迎透過以下方式與我交流:

📚 技術著作
《實用的 Gemini API 開發點子書》:帶你運用 Gemini App、Google AI Studio、Gemini CLI 與 Antigravity IDE,打造 AI Agent 與實用產品。

📝 技術部落格
歡迎追蹤我的 Medium,我會持續分享 Agentic Automation、架構設計與實際開發的踩坑心得。

🎤 技術講座與合作
我持續受邀至技術社群及研討會,分享 AI Agent、自動化工作流、DevOps 與全端開發實戰。

我曾於 DevOpsDays Taipei 2026 主講「不再只是寫腳本!讓 AI 代理人成為你的 SRE 最佳夥伴」工作坊。

如果你的企業、社群或學校正在尋找相關主題講者,歡迎私訊聯繫,洽談講座與工作坊合作!

🎮 我的 Roblox 遊戲

🎁 免費贈送 OpenAI 或 Claude AI 額度

為了鼓勵大家實際動手打造自己的 Roblox 體驗,我每個月會開放:

  • 10 個名額
  • 每人 50 點 AI 額度
  • 名額送完為止

參加方式:

  1. 訂閱本系列文章。
  2. 分享任一篇系列文章。
  3. 私訊分享截圖及你的 AI 帳號 Email。

確認完成後,我會邀請你加入並設定 50 點額度。名額有限,歡迎把握機會!


上一篇
第 12 章:Client / Server 分工
下一篇
第 14 章:任務系統
系列文
Roblox Studio AI 協作開發大全14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言