
《十一分鐘》從開案到最後一個 commit,是 2026-10-08 15:20 到 10-10 04:48,一共 116 個 commit:10-08 有 17 個,10-09 有 89 個,10-10 有 10 個。首次發佈在 10-09 07:59,離開案不到十七小時。之後一路更新,到 10-10 凌晨發到 1.0.5。
遊戲本身在 Larch 市集可以玩,故事和人物放在公開站,這篇只寫做的過程。
開案第一晚(10-08 21:51)先定了一張表,每一關照九步走,一步沒過就不進下一步。
每一關九步,每步留證據
九步依序是原文、流程、設計檔、色塊、作者確認、產圖、事件、試玩、收尾。表放在 repo 的 docs/過關SOP.md,每一步都有「過關條件」和「證據」兩欄,證據要留在 repo 裡,回報時直接指給我看。例如第三步的條件是 layout.check 沒有重疊、出界、被蓋住、走不到的點,而且要附負控制。
色塊那一步的做法,我另外寫過一篇,講的是正式地圖開工前先用色塊確認遮擋層次。
表裡有兩格是跳過的。二十樓和雲端長城的第五步「作者確認」,SOP 裡寫的是「作者略過(10-09『直接產正式圖』)」,這兩張沒有給我看色塊,直接產了正式圖。
幾個先拍板的事
真名。 故事裡的國家和系統用真名:中國、美國、防火長城、PRISM。河城、江凌、江禾和所有事件是虛構的。這個決定的代價是要補很多聲明:片尾、作品介紹、公開站的製作與授權都加了虛構聲明,公開站還多寫了一節「現實裡的防火長城與稜鏡計畫」,附出處,並寫明遊戲改編了哪裡。
日期。 10-09 05:40 先把故事日期改成七月二十日(汛期,借鄭州水災那一天,不寫年份),兩分鐘後我改成六月四日。commit 訊息記的理由是:用水隱喻言論審查自由。
片名。 原名叫《雲端之戰》,10-08 19:41 改成《十一分鐘》。挑戰規定作品要十分鐘,片名是故意多一分鐘。10-09 晚上把這個玩笑寫進劇情:長城的備援規格規定十分鐘內接手,那天晚了將近一分鐘,不指定是誰晚的。於是挑戰那邊多一分鐘,劇情這邊也多一分鐘。
大肥魚。 王戰的最後一隻是 DeepSeek 的鯨魚娘「大肥魚」,美術以大肥魚的女僕系畫風延伸。角色原型是上善無形的〈溟月〉(CC BY-NC-SA 4.0),所以本作的大肥魚美術依同一授權釋出,片尾署名,作品非商用。程式用 MIT,故事、美術、配樂用 CC BY-NC-SA 4.0。
自動測試全過,雲端卻沒有兵
10-09 凌晨,我玩雲端長城,看不到任何地圖兵。commit 紀錄寫的是「作者:看不到任何地圖兵」(84ee475,03:56),半小時後又有一個更大的修正(9dff555,04:30)。
原因是跨地圖的進度變數會帶過去。十九樓結束時進度是 card,而雲端的事件寫的是「進度是空字串才啟動」,所以從頭玩一遍,光點和巡邏兵全部不啟動。自動試玩測試一直是綠的,因為測試是從二十樓開始進場,從來沒有走過十九樓。修法是雲端進場時把進度設成 cloud,試玩測試也改成帶著 card 進度進場,重現從頭玩的情況。
試玩測試的起點跟玩家的起點不一樣,它驗的就是另一個遊戲。
十九樓的警衛,四個 commit 改了三十八分鐘
十九樓的潛行是 1.0.3 加的。10-09 下午的 commit 順序是:
- 16:13,兩個警衛輪流出現,我看起來像閃現,改成同一個人真的來回走。
- 16:22,視線改成前方六格的扇形,加一道跟著他走的手電筒光。
- 16:35,加第三個站點,站在樓梯那一頭面向樓梯門,倒完泡麵到走進樓梯門都要躲。
- 16:51,走路的時候也一路看(路線每三步一段,每段有自己的視線,手電筒跟著方向轉)。
第一個 commit 到第四個相隔三十八分鐘。
到了 10-10 凌晨又改了一次:茶水間改成安全區,警衛面朝走廊,躲在裡面等他走開就好。
王戰:AI 寫的打手一直輸,所以改用算的
王戰有四場:第一班四個 AI 模型、第二班四個、大肥魚、PRISM。調難度的時候,AI 先寫了一支自動打的程式,實機跑。那支程式從頭到尾不放大招、也不防禦,打輸了就回報「這個血量打不過」。
我要 AI 改成用算的,不要實機跑那麼久。tests/battle_sim.mjs 讀 Larch 引擎自己的戰鬥規則,讀 dist/project.json 裡的戰鬥卡,兩種打法各打一遍:
smart:奧義集滿就放,預告下一回合有大招就防禦,魔力夠就放技能,否則普攻血最少的那隻。naive:隨便打,同樣放技能,但不放奧義、不防禦。
目標很簡單:用對方法要贏,隨便打要輸。1.0.5 的數值是這樣算出來的,commit 訊息(dbf8e10)記的是:第一班 80、第二班 85、大肥魚 280(鯨尾 1.5,間隔 3/4/5/7)、複製 2.5、帶頭大招 1.5。
大肥魚和 PRISM 打到第 3 回合開頭,會提示「下一下是鯨尾,先防禦」「下一下是複製,先防禦」,這兩句是我 10-10 凌晨要求加的。
河城群聲,九分鐘六個 commit
配音的時間線是這樣的。10-09 19:15 我挑定聲線,四十句角色台詞先用 edge-tts 配好;19:45 改用 Larch 的語音,語音含情緒。中間遇到一個引擎的限制:地圖上播對話卡不會讀 voiceUrl,所以審訊室的對話卡要拆成一句一張,地圖上逐句播。
河城的群聲有四句:放水、橋斷、找爸爸、困在頂樓,要疊著播。22:05 到 22:14 之間一共六個 commit:
- 每句晚 1.5 秒進來,疊在一起播。
- 四句加長,每句晚 0.5 秒進來。
- 間隔修正為 0.5 秒。
- 疊著播改成同一時間最多兩個人。
- 照時間順序排:放水、橋斷、找爸爸、困在頂樓。
- 最後一句前後交換。
最後那個 commit 把「水還在漲,我們在頂樓。」兩句前後交換,讓「我們在頂樓」單獨收尾。
旁白改過五段以後,配音清單要重新對上。check_static 因此加了一條:配音清單要跟劇本同步,負控制是拿舊清單餵進去,它要報錯(14ee69e)。
一件 AI 犯的錯
預覽用的資料夾是 dist-play,我在預覽裡打的回饋存在 dist-play/feedback/。更新預覽時,AI 用了 rm -rf dist-play && cp -r dist dist-play,10-09 一天內發生兩次,我打的回饋被刪光了。
後來改成 rsync -a --delete --exclude feedback/ dist/ dist-play/,更新之前先讀 feedback.jsonl。
刻意沒做的和還沒做的
- 沒有實測長度。 挑戰要求約十分鐘,但
docs/待辦.md裡「量長度」那一項到最後沒有打勾,沒有真人從頭玩到尾量過。所以「全程大約十分鐘」是設計目標,沒有實測數字。 - 引擎寫死的句子改不掉。 王戰第一回合左下角的「選擇怪獸,然後決定你的行動。」是 Larch 引擎的內建句,改不了。可以寫成回饋送給 Larch 官方,要不要送還沒決定。
- 地圖之間沒有白板連線。 地圖用事件跳轉,不用連線;補連線反而會多出一段接續,所以改成加四個群組框(現實層、雲端層、結局、戰鬥卡),標題寫明怎麼接。