第 9 到第 12 章,你已經讓 AI Adventure Island 有了第一批真正的系統:
leaderstats.Crystals 狀態。AdventureHUD。RemoteEvent client/server flow。這也代表你開始會遇到真正的 bug。
例如:
AdventureIsland。GuideButton 按了沒有提示。這一章不新增功能。
這一章要建立一套 debug prompt 格式,讓你可以把錯誤訊息、目前 Script、預期行為、實際行為整理成 Assistant 能處理的資訊。
本章成果是一套可重用模板:
預期
實際
Output
相關 Explorer 路徑
相關 Script
剛才做過的修改
限制範圍
請 Assistant 做什麼
你要學會從:
不能動,幫我修。
改成:
Playtest 時按 GuideButton,HintLabel 沒有更新。Output 顯示 Remote event invocation discarded。這是 RequestGuideHint 的位置與 LocalScript / ServerScript,請只修 RemoteEvent listener,不要重做 HUD 或任務系統。
這是 AI 開發能否長期維護的差異。

圖 13-1 除錯 prompt 應附上程式碼、錯誤訊息與重現步驟;Assistant 的解釋仍需用 Output 和 Playtest 驗證。
本章依據以下 Roblox 官方文件撰寫:
官方 Output 文件說明,Output 會顯示:
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 不是叫 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 回答應該會把流程拆成檢查點:
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,問題大概在:
如果 Output 出現 server log,但沒有 client reply,問題可能在:
FireClient。OnClientEvent。Debug prompt 的價值就在這裡。
它把「壞了」拆成可驗證步驟。
Output 是你和 Assistant 溝通 bug 的第一份證據。
官方文件說,Output 會顯示 errors、engine messages、print() 和 warn()。

圖 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 是你確認錯誤位置的第二個工具。
它可以:
當 Assistant 產生新程式後,不要只看它有沒有貼完。
你應該打開 Script Editor 檢查:
Script 名稱是否正確?
變數名稱是否和 Explorer 裡的 Instance 名稱一致?
有沒有紅線或 warning?
同一個 function 是否被重複定義?
有沒有多個同名 RemoteEvent?
第 13 章不要求你不用 AI。
它要求你用 AI 前先把 Studio 已經提供的資訊收集起來。
第 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()。如果 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 不是測新功能。
它是練習收集 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:
剛才修改:
限制範圍:
這就是本章最重要的產物。
以下是本書後續會反覆使用的 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 開發最重要的維護能力。
你學到:
print() 和 warn() 要包含 context、script、事件名稱。到這裡,第三部完成了從 Script、玩家狀態、UI、client/server 到 AI 除錯工作流的基礎。
下一章會進入第四部:遊戲玩法逐步完成。我們會開始做第一條任務線,讓 NPC、收集狀態、UI 和 server 狀態真正串成一個完整 gameplay loop。
嗨!我是 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 體驗,我每個月會開放:
參加方式:
確認完成後,我會邀請你加入並設定 50 點額度。名額有限,歡迎把握機會!