帶 AI 救活 2012 年老遊戲:報錯消失後,我們差點改壞原版任務
我只是想回主城聽音樂、牽著草原羊駝散步,卻得先讓沒有原始碼的六支舊服務端跑起來。帶 AI 把遊戲救活後,封版比對又抓到我們昨天的修法:報錯消失了,原版任務卻差點被改壞。
[!IMPORTANT] 研究邊界與安全聲明 本文記錄之逆向分析與相容性調校,全程僅於個人封閉本機環境(
127.0.0.1)進行老舊軟體數位保存(Digital Preservation)與舊系統(Legacy System)相容性研究。文中已隱去特定商業作品名稱與網路位址;本專案不公開、不散播、亦不提供任何受著作權保護之執行檔、封包或資料庫下載,且絕不涉及任何私服架設或商業營運。文內提及之「v1.0.0 基準版」純屬個人本機相容性研究的封存里程碑。
一條看似打錯字的任務指令,被 AI 修到客戶端日誌不再報錯,直到封版前核對服務端才發現,那個修改會直接覆寫原本的傳送目的地。若你也常讓 AI 修缺原始碼或文件的舊系統 bug,當它回報完成,該去哪確認沒改壞別處?
起點是我只想在自己電腦把一款 2012 年的 3D MMORPG 跑起來,回主城聽音樂、用 GM 工具補發草原羊駝坐騎散步。手邊沒有 C++ 原始碼,只有編譯好的客戶端、六支舊 Linux 服務端與四座 PostgreSQL 資料庫,要搬到 2026 年的 Windows 11 與現代容器(把舊執行環境打包隔開的工具)上跑。以前有些靠逆向客戶端把伺服器端還原出來,現在 AI 用小模型就能做到,當然也不排除是這些遊戲太早期、技術沒那麼完善。
沒有原始碼,先讓六支舊服務端與客戶端跑起來
Linux 服務端一進現代環境碰到名稱解析就崩潰,先讓容器不做反查才解決;角色列表載不出來,則是殘留舊連線設定(失效公網 IP)加連接埠衝突。
客戶端啟動原需約 67 秒片頭加約 12 秒預載共約 79 秒;不改主程式、只動已驗證設定,調整預載設定並略過必播片頭與 logo 就壓到約 3 秒。中文亂碼沿資料庫編碼、傳輸、顯示逐段修,無損還原八萬多筆資料。載入時切視窗閃退,則是因介面未初始化完、失焦觸發介面流程。
讓 AI 改遊戲找到突破口就順了,沿途還會看到離譜技術債;幸好自己對遊戲有開發概念,不然 AI 常繞一大圈,token 經不起燒。
昨天修好的錯字,今天核對服務端得改回去
我讓不同 AI 模型在同一環境(透過 model-relay)依客戶端、服務端與資料、前後差異分工查證。
10 月 20 日客戶端報未知任務指令,AI 當錯字改成拼法相近的傳送指令,報錯就消失了。隔天(10 月 21 日)封存 v1.0.0 基準版前,我的標準是玩家玩到的要仍是原版;若修復可能改變玩法或計算結果,先標記爭議附證據、不自行保留,並以實際程式、二進位差異(執行檔直接比對)與運行結果為準,不信文件的「已完成」。
沒原始碼時,我讓 AI 反組譯服務端程式(把執行檔拆回可讀指令),看處理該指令的程式段實際寫哪個欄位。一查發現報錯在客戶端、執行在服務端:原指令負責寫重生區,改錯不只漏設重生點,還會覆蓋前一步的傳送目的地;再比對該遊戲 2012、2024、2026 三個版本的同任務原文皆相同,兩相印證後隨即還原。
當天 AI 三次說「100%」同日都被推翻;拿 AI 動手前的原始備份對帳,抓出「該改沒改、做過頭、被執行期污染、無法證明」四類問題,AI 最後回「Ready for Review」並列出待人工實機確認項。
| 判斷位置 | 看得到的結果 | 能下的結論 |
|---|---|---|
| 只看客戶端日誌 | 未知指令的報錯消失 | 客戶端不再報這條錯 |
| 核對服務端行為 | 原指令處理重生區,改寫後會覆寫傳送目的地 | 昨天的修法改變了任務,需要還原 |
| 與原始備份比對 | 找回這一處修改及其理由 | 把誤改腳本恢復為原版 |
效能數字也一樣:先看量到的是哪一端、哪個情境
待機時服務端由寫入呼叫送出的資料量(非硬碟落盤量),四支為零、兩支各約每秒 10 bytes,共約每秒 20 bytes,比修補前少約三個數量級(約千分之一),但並非六支都零寫入。另外對遊戲的福袋抽獎資料表自寫查詢測出約 149 倍速度差,但服務端啟動時就一次載入整張表,玩家登入不查,這 149 倍不會讓登入變快。多模型調度做法見〈想在 Claude Code 混用 Gemini 與 GLM,為甚麼一改設定檔就全亂套?〉。
下次 AI 說修好了,封存前先問這三個問題
下次 AI 幫你把報錯修到消失(報錯消失,不等於沒改壞),封存前先照這三個問題對過一遍:
- 這條錯誤由誰回報,行為由誰執行? 分清客戶端、服務端與資料的責任,再決定改哪裡。
- 這項修改改變了哪些原有行為? 把「讓它能跑」與「想改玩法」分開,才能驗收保存範圍。
- 與原始備份相比,每一處差異都有理由嗎? 封存前重看差異,尤其查只因名稱相近、報錯消失就放行的修法。
若團隊常讓 AI 修程式、想整理驗收步驟,可看 AI 工作流健檢;有完整原始碼與自動化測試的系統怎麼驗收,可讀〈AI 幫你寫的測試全綠,為甚麼上線還是壞掉?〉。
