我想讓下棋有小當家那種特效
814f235..cbc9971 ↗
第一次用 spec-kit,一個 commit 進來 87 個檔案兩萬三千行。接下來四天就是住進那包程式碼裡,決定哪些要留。
AbstractFirst time using spec-kit. One commit dropped 87 files and 23,366 lines, and the next four days were spent living inside that generated code deciding what to keep.
那時候在想什麼
那時候 spec-kit 很流行,我想拿個專案來練練手。
挑黑白棋是因為我從以前就很愛玩。Windows XP 內建那個可以連網路對戰,MSN 也能直接跟聯絡人下,還有一段時間網路上很流行 Java 的下棋平台。這是少數我能下贏的遊戲。
不過真正想做的東西其實不是黑白棋本身。我想讓下棋的每一手都有具象化的特效。這個概念不算新穎,中華一番的小當家或是日式麵包王就是這樣,做出來的料理因為太好吃,吃的人會爆出一堆特效。我玩黑白棋的時候也想要那種感覺,下出神之一手,畫面就要跟著炸開。
還有就是想看看 AI 到底厲害到什麼程度,能不能把我腦子裡的東西做出來。
實際做了什麼
第一個 commit 只有 .gitignore 和一行 README。
第二個 commit 叫 add,一次進來 87 個檔案、23,366 行。裡面有一個 specs/001-8-8-ai/ 資料夾,含 spec.md、plan.md、tasks.md、research.md 和三份 contracts。整個專案是從那份 spec 長出來的,不是我一行一行寫的。
接下來四天就是住進那包程式碼裡。
前半段全在改版面,八個 PR 連著合。vw 改成 rem、meta viewport、手機的 HUD 排版、按鈕文字換行,全部是 codex 開的分支:
codex/update-.game-board-size-settings |
然後 9/13 晚上突然跳去做多語系,之後就再也沒回頭改過 CSS。這個沒什麼深刻的理由,就是想到什麼加什麼。玩法跟畫面都做到一個瓶頸了,那就做多語系吧。
那天晚上 22:53 開始,一路做到隔天早上 04:19,合了十個 PR。翻譯字典、語言選單搬進設定、連擊計數的多語系、大招字幕的多語系,最後把連擊從三連擊擴到七連擊。
這四天二十個 PR 全部是 codex/* 分支。當時 claude 跟 chatgpt 我都有訂閱,codex 是 chatgpt 剛推出的東西,我就拿這個專案來試試看它能不能改。結果發現問題蠻多的。
有一個現在回頭看很明顯的痕跡,src/ 底下同時躺著五支進入點:
main.ts main-simple.ts main-new.ts main-battle.ts main-complete.ts |
這四天只有 main-complete.ts 在動,被改了十二次,其他四支一次都沒碰。codex 和 claude 混著用,程式碼就開始亂了。這件事我當時沒特別注意,是後來才慢慢想起來的。
試過但沒留下
9/14 晚上 21:33,我把光束砍了。effects-system.ts 少了 232 行,effects-types.ts 裡三個型別一起拿掉。
那個光束是跟著第一次那包一起生成進來的,我留了兩天才砍。為什麼砍我現在其實想不太起來,可能是手感不佳,也可能是辨識度的問題,畫面上分不清楚剛才發生了什麼。
還有一些東西是連做都沒做出來的。我當時想加特殊棋子,還想在棋局勝負之外多一條玩家血條,血條打穿歸零算輸,或者棋局終局也算,兩種結束方式並存。當時的 AI 做不出來這個。
有些卡住的地方不是技術問題。2025 年 9 月 14 號前後,我女朋友,也就是我現在的太太,癌症動手術。那幾天我在醫院來回跑,開發就停了。這一片的 commit 停在 9/14 晚上,接下來 log 上有一段四十五小時完全空白,那已經是下一片的開頭了。
現實會讓前進的路線停滯,這跟做不做得出來是兩回事。
結論
回頭看,這四天做的東西大部分沒有留下來。光束砍了,五個 main 檔案在幾天後被一起刪掉,特殊棋子和血條當時根本沒實現。
不過也不是毫無意義。super-reversi2 是從這裡長出來的,那個「下棋要有特效」的想法後來變成八大門派的絕招系統。沒有前面這次概念實驗,根本走不到現在。