五天發了六次版,我最兇的 QA 是個會說「打不到啦」的小朋友

你有沒有過那種,寫了一堆很驕傲的 commit、跑過幾百個測試、覺得自己這版很穩,結果交到真實使用者手上三分鐘就被打回原形的經驗?

我有。而且我那個真實使用者,身高大概到我腰。

五天,六次版

先看一下節奏。我這款橫向動作小遊戲,從 v0.1.0v0.2.0,一共發了六次版:

  • v0.1.0 / v0.1.1——6/14,同一天連發兩次。第一次把桌面跨平台 release workflow 接上,結果 macOS 打 dmg 偶發失敗,馬上補一個 retry 3 次的 CI 修正再發一版。出師就翻車,滿經典的。
  • v0.1.2 / v0.1.3——6/15,又是一天兩版。多層視差背景、二階進化、全敵人攻擊 telegraph。
  • v0.1.4——6/16。stage9 隱藏終局、三王同台三條血條。
  • v0.2.0——6/18。stage8 大地巢窟、無限接關、一拖拉庫手感打磨。

五天六版,平均不到一天一版。聽起來很拼,但其實大多是小步快發——一個能玩的東西就發出去,讓人玩,而不是憋一個大版本憋兩週。這個節奏後來救了我,因為我發現最好的 bug report 不會寫在 issue 裡,它會從一個小朋友嘴裡跳出來。

童言童語就是最誠實的 bug report

事情是這樣。某一版我讓家裡的小朋友玩。我心裡其實有點得意,想說 telegraph 也做了、平衡也調了,應該很順吧。

他玩了大概三分鐘,講了兩句話。

第一句:「打不到啦!」

他角色明明就站在怪旁邊,手指狂按,怪就是不太會掉血。我當下還想解釋「你要對準一點」,然後愣住——這不就是我自己 debug 半天那個「圖大判定小、一直打空」的 hurtbox 問題嗎?我看判定框看了老半天才搞懂的事,他三分鐘、五個字就講完了:打不到啦。

第二句:「我怎麼一下就死掉了?」

這句更直接。Boss 衝過來、一套帶走,他血條還沒看清楚就 game over。這也是真的——早期 Boss 速度跟威力都太高,難以命中又會秒殺玩家。大人玩會皺眉頭、心裡嘀咕「這王是不是過強」,但會忍;小朋友不忍,他直接問你「為什麼我一下就死掉」。

我那時候突然意識到一件事:小朋友是最好的 QA,因為他完全不會幫你找藉口。 大人玩到不順,會自我懷疑「是不是我手殘」、會腦補「設計大概有他的用意」;小朋友不會,他只忠實回報身體的感受——打不到、死太快、這裡無聊。那是最乾淨的訊號,沒有任何雜訊。

那些抱怨,後來都變成 changelog 條目

回頭看這六版的 changelog,「打不到啦」跟「怎麼一下就死掉」這兩句童言童語,其實貫穿了好幾版的修正:

  • v0.1.3:Boss 速度與威力全面下修,「不再難以命中或秒殺玩家」。←「一下就死掉」
  • v0.1.4:放大敵人受擊框,修正「圖大判定小、一直打空」。←「打不到啦」
  • v0.2.0:起身推擊傷害歸零(修單人被耗死)、Boss 倒地無敵期禁止出招(修玩家無敵中還被扣血)。←還是「莫名其妙就死掉」的延伸

我寫 commit 的時候用的是很工程的語言——「hurtbox {16,10}{28,26}」「maxHpMul 下修」。但翻譯成人話,就是那個小朋友喊的兩句。我花好幾天用判定框跟測試去逼近的東西,他用直覺一秒就摸到了。

一點心得

發了六次版,如果要我總結一條,不是什麼 CI 或 release 流程的技巧(雖然那個 dmg retry 確實救了我幾次),而是:

再多的測試,都測不出「手感」這個東西;手感只能靠真人玩出來,而最誠實的真人,是那個不會幫你打圓場的小朋友。 831 個單元測試會告訴你「judgment 判定數學上正確」,但不會告訴你「玩家覺得打不到」。這兩件事之間的鴻溝,只有把搖桿交到一雙小手上才會現形。

所以我決定了,以後每發一版,都讓他先玩。他要是說「好好玩」,我才敢按 deploy;他要是皺眉頭說「打不到啦」,那不管測試多綠,我都知道——這版還沒好啊。

先不說了,我得去問他 v0.2.0 的無限接關好不好玩了。希望這次他不要再死太快,不然我又有得忙了。

這六個版本發於 2026 年 6 月 14 到 18 日,文章整理於 v0.2.0 發版當晚。