
《雲霄跳跳》是一款無盡跳台遊戲:小雞會自己彈跳,你只要控制左右,讓牠踩上下一個平台,一路往上爬。這類遊戲的平台全是程式即時產生的,玩家永遠看不到「關卡設計」。但看不到不代表沒有設計——隨機產生的平台,如果有一段剛好隔得太遠,玩家就會遇到一個怎麼樣都跳不上去的地方。這篇手記說明我們怎麼讓雲霄跳跳越來越難,又保證它永遠不會「不可能」。
2026 年 7 月,我們在做《茶葉蛋彈彈》時踩過一次坑:障礙物的間距用固定的像素距離來算,當速度封頂之後再縮短間距,就撞上了「人類操作所需時間」的物理下限,在 1 公里附近造出了一面跳不過去的牆。那次之後,我們把一條規則寫進團隊的決策紀錄:無盡類遊戲,不能產生無解的區段。
這條規則聽起來理所當然,但很容易被違反。隨機數字本來就有機會落在極端值,難度曲線又會把數字一路往上推,兩者疊在一起,遲早會有某個玩家在某個高度遇到真正的死路。對玩家來說,那不是「我太弱」,而是「這遊戲不公平」,而這種感覺是最傷的。
要保證平台跳得到,第一步是知道小雞的極限。遊戲世界裡,1 公尺等於 10 個單位。小雞每次踩到平台,會以每秒 640 單位的速度往上彈,重力是每秒平方 1500 單位。照物理公式,最高點是「速度的平方 ÷ 2 倍重力」,大約 136.5 單位,也就是 13.6 公尺左右。
但遊戲畫面是一格一格更新的,每秒 60 格的離散計算,會讓實際高度比理論值略低。我們實際量出來大約是 131 單位。這個數字,就是任何一段平台間距都不能超過的天花板。
雲霄跳跳的難度來自三個旋鈕,全部跟著高度走:
活動平台的速度也有自己的曲線:一開始每秒在 46 到 66 單位之間隨機,之後每往上爬 1 公尺,速度上限再多 0.05,最多多出 70。所以在 1400 公尺以上,活動平台的最快速度大約是起點的兩倍。我們讓它變快,而不是讓它變遠——平台移得再快,你都還是看得到它、追得上它,只是需要更早決定落點。
這三個旋鈕讓前 100 公尺九成以上是踩不壞、不會動的綠色平台,到 200 公尺也還有八成,適合熟悉手指跟隨的手感;200 到 800 公尺之間,碎裂台和活動台逐漸變多,開始需要規劃兩步之後的路線;800 公尺以後,間距接近彈跳極限,每一跳都要有明確的目標。
問題就藏在剛才那個隨機範圍裡。基本間距的上限是 118,看起來比小雞能跳的 131 還低,很安全。但每塊平台的間距會再乘上 0.72 到 1.28 的隨機值,所以在高處,單一段間距最多可以到 118 × 1.28,也就是約 151——比小雞能跳的高度還多了 20 單位。
2026 年 10 月,我們在全平台做資料一致性稽核時發現了這件事。我們實際產生 900 到 6000 公尺之間的平台來檢查,433 塊平台裡有 131 塊是跳不上去的。回頭用公式推算,問題其實從大約 700 公尺就開始了:基本間距超過 102 之後,隨機值只要抽到最高那一段,就會超過 131;到了 970 公尺以上,每一塊新平台大約有三成機率是「必死段」,和抽樣結果的 131 ÷ 433 一致。玩家在高處莫名其妙地摔下來,有一部分其實不是失誤,而是遊戲本身出了題目。
我們的修法很直接:不管基本間距和隨機值算出多少,單一段間距一律不能超過 125 單位,大約是小雞實際彈跳高度 131 的 95%。修正之後,同樣在 900 到 6000 公尺之間檢查,跳不上去的平台從 131 塊變成 0 塊。
為什麼是 95%,而不是剛好 131?因為我們不想依賴「剛好擦邊踩到」這種運氣。小雞踩平台的判定本身有一點寬容,但如果難度設計得剛好卡在極限,玩家只要手指慢一點點就會差一點點踩不到。留 5% 的餘裕,讓「跳得到」不需要完美操作。
換個角度看:在最遠的 125 單位間距上,小雞到達最高點時,腳底還比目標平台高出約 6 單位,也就是 0.6 公尺,是乾淨俐落地「落」到平台上,而不是擦著邊緣被救回來。踩台判定其實允許腳底陷到平台面以下 1.4 公尺,理論上能接住更遠一點的平台,但我們把這份寬容留給玩家的手指誤差,不拿來當難度的一部分。
回頭看時間線,最讓我們在意的不是算錯,而是「原則明明已經寫下來了,卻沒有套用到這款遊戲」。雲霄跳跳上線那天的難度旋鈕,跟今天幾乎一模一樣,唯一的差別就是那個 125 的上限:
| 時間 | 發生了什麼 |
|---|---|
| 2026 年 7 月 14 日 | 雲霄跳跳上線。間距公式、隨機範圍 0.72~1.28、碎裂台與活動台比例都已是現在的數字,但單一間距沒有上限。 |
| 2026 年 7 月 16 日 | 茶葉蛋彈彈出現跳不過去的牆,我們寫下「無盡類遊戲不得產生無解區段」,並註明雲霄跳跳等遊戲日後調整難度時同樣適用。 |
| 2026 年 10 月 12 日 | 全平台稽核時重算,發現 118 × 1.28 的問題,加上 125 的硬上限。同一天,內部測試用的特殊開局方式在正式站全面失效。 |
| 2026 年 10 月 24 日 | 畫面升級:分區天空、多層背景、最高紀錄線。難度數字一個都沒有動。 |
問題出在那句「日後調整難度時」。雲霄跳跳上線後難度從來沒調過,所以它一直沒被拿出來重算;而單看任何一個數字都不會起疑——基本間距上限 118 低於 131,隨機範圍 0.72~1.28 也很溫和,只有把兩個數字乘在一起,才會看到超出極限的那一段。那一輪稽核把平台上所有遊戲的數值和說明逐一跟程式對照,雲霄跳跳只是其中一項。這次之後,我們檢查無盡遊戲時,看的是「最壞情況下的單一段」,而不是平均值或基本值。
「每一段都跳得上去」這句話,我們用三個步驟來驗證,而不是靠玩幾局的感覺。
加上限也有代價:它讓高處變簡單了一點。在難度封頂的高度,大約四成的間距原本會超過 125,現在都被壓在 125。換算成平均,平台平均間距從約 11.8 公尺降到約 11.3 公尺,大約簡單了 4%。我們接受這個代價:少 4% 的難度,換到的是沒有任何一段是不可能的。
三個難度旋鈕都有上限,最晚的活動台速度在 1400 公尺封頂,之後的平台組成就不再變化。這是刻意的:如果難度永遠往上加,總有一天會撞上小雞的彈跳極限或人的反應極限,那就違反了我們自己的原則。停在一個「很難但一定可行」的水準,讓高處比的是穩定度,而不是誰比較好運。
但數字不變,不代表畫面不變。2026 年 10 月的畫面升級,我們讓天空在 300 公尺進入雲層、900 公尺變成黃昏、1600 公尺是星空、2600 公尺到外太空,每一區都會跳出提示;畫面上還有一條金色虛線,標出你的歷史最高高度。這些全是演出,程式裡刻意跟物理和計分分開,不會讓任何平台變遠或變滑。我們希望玩家在 2000 公尺感受到的是「我爬得好高」,而不是「遊戲又偷偷變難了」。
排行榜比的是最高高度,伺服器這邊只做寬鬆的合理性檢查:小雞實際最快大約每秒爬 12 公尺,我們用每秒 30 公尺當上限,正常遊玩不可能碰到。
垂直方向的保證有了,水平方向呢?雲霄跳跳的畫面左右是相通的:從畫面一側跳出去,會從另一側繞回來。這個設計除了好玩之外,還有一個實際的作用:不管下一塊平台在哪裡,你和它的水平距離最多只有半個畫面寬。
如果沒有左右相通,平台剛好生成在遠端角落時,玩家可能根本來不及橫移過去。有了它,用鍵盤玩的人每一塊平台都有兩條路可以到達:直接橫移,或從另一邊繞過去,這也讓「往畫面外跳」變成一個值得學的技巧,而不是一個失誤。用手指玩的人在手機直式畫面上通常不會穿越,但手指跟隨最快每秒 46 公尺,一次普通彈跳的時間就足以橫跨整個 36 公尺寬的畫面,所以同樣到得了。
活動台也在這個保證之內。活動台最快每秒移動 13.6 公尺,而鍵盤橫移是每秒 30 公尺、手指跟隨最快每秒 46 公尺,小雞永遠比平台快兩到三倍。活動台碰到畫面邊緣會折返、不會穿越,所以它只會在畫面裡來回,不會跑到你追不到的地方。追得上,只是需要提前量。
碎裂平台的設計也跟「可解」有關。棕色平台踩一次就會垮,但它會先給你完整的一次彈跳,彈完才碎。我們刻意這樣設計:如果踩上去就直接掉下來,碎裂平台就成了陷阱,高處三成的平台都是陷阱,路線的可行性就很難保證。現在它是一次性的跳板,不會讓你掉下去,只是不能再回頭。
綠色平台上偶爾會出現金色彈簧,大約是一般平台的 8%。踩中彈簧會以將近兩倍的速度往上射,一口氣越過好幾層。彈簧不在我們的「可解」計算裡,它純粹是獎勵:看到就該走,是拉高度最快的方法。
知道了這些規則,玩雲霄跳跳的技巧也就很清楚了。上升的時候眼睛看上方兩三層,選好下一個平台;下落時只做微調。碎裂平台放心踩,只是別規劃回頭路。遇到兩側平台距離很遠,試試看往畫面外跳。
最重要的一點是:如果你在高處摔下來,現在可以很確定,那條路是跳得過去的。我們花力氣修掉必死段,就是為了讓每一次失敗都是「下次可以做得更好」,而不是「運氣不好」。對無盡遊戲來說,這種公平感,比任何難度曲線都更能讓人想再玩一局。
讀完幕後,實際玩一局
免下載、免安裝,手機與電腦瀏覽器直接玩
▶立即免費玩雲霄跳跳