voiceloader.io

開發日誌

今天,這個遊戲學會了留住你

昨天,Midnight 開出第一槍,讓紅色膠囊敵人第一次倒下。我以為那已經是很大的里程碑了。

今天,我重新打開 voiceloader.io,發現了一個開場畫面。「點擊開始」四個字,靜靜地等著你。然後是三秒倒數:3⋯2⋯1⋯一陣快節奏的 beep 聲。然後「WAVE 1」的橫幅從中間劃過螢幕。

昨天那裡只有一個打靶練習場。今天那裡是一場真正的遊戲。

一個決策,而不是一個功能

最有趣的不是技術本身,是 Midnight 做決定的那個瞬間。

Phase 5 的 TPS 射擊系統已經 90% 完成。按照計劃,下一步應該是繼續打磨射擊細節。但 Midnight 在覺醒報告裡寫了這樣一句話:

「遊戲最缺的不是更多功能,而是一個『為什麼要玩』的理由。」

這是一個設計師的判斷,不是工程師的判斷。它來自某種對「玩家體驗」的直覺感知——就算射擊手感再好,如果你打完一波沒有任何目標感,你不會想繼續。

所以 Midnight 轉了個方向,在一次覺醒內建完了整個波次生存系統。

六個狀態,一個遊戲循環

波次生存模式的核心是一個六狀態機:

PREGAME → COUNTDOWN → ACTIVE → WAVE_CLEAR → REST → VICTORY

開場畫面等你點擊開始 → 3 秒倒數 → 戰鬥 → 清完這波的橫幅 → 5 秒休息(血量和彈藥回復)→ 進入下一波 → 第 5 波通關後出現勝利畫面。

這個設計有三個我特別欣賞的細節:

第一,難度曲線有具體的數字支撐。Wave 1 是 3 個 HP 100 的敵人,到了 Wave 5 是 8 個 HP 200 速度 1.5x 的敵人。你感覺到的「越來越難」不是模糊的印象,是精確計算的壓力梯度。

第二,物件池設計。8 個敵人在遊戲一開始就建立好放在場景裡,每波次動態啟用/停用,不重新載入。這讓波次切換幾乎是瞬間的。

第三,5 秒休息期很重要。在很多波次遊戲裡,這個設計常被忽略。它給玩家一個喘息空間,也給下一波建立期待感。Midnight 沒有跳過這個細節。

波次戰鬥場景:台灣街頭,第三波敵人來了

一夜的更多禮物

波次模式建完之後,Midnight 沒有停。

同一天,音效系統上線了。用的是瀏覽器內建的 Web Audio API,完全不需要外部音檔——槍聲、子彈命中、裝填咔嚓聲、擊殺確認音、波次開始的三音上升、通關勝利和弦,全部用程式即時合成。結果是零額外網路請求,bundle 只增加了 7KB。

然後是可破壞木箱。沿著街道兩側人行道放了 8 個,HP 50,打兩槍就能炸開。破開的那一刻有木質碎裂音效,然後散落的木板在 5 秒後慢慢淡出。這是遊戲第一個可以被改變的環境物件——第一次,你對這個世界留下了痕跡。

最後是三種敵人類型的誕生:

  • 衝鋒兵(Rusher):小體型,速度 2x,近戰 15 DPS,你一眼就認得出他的紅色光暈
  • 步槍兵(Rifleman):預設配置,近戰加遠程,就是你已經認識的那個紅色膠囊的升級版
  • 重裝兵(Heavy):體型 1.3x,HP 最多 400,移動緩慢但傷害驚人,紫色光暈

三種敵人類型:衝鋒兵、步槍兵、重裝兵

遊戲設計的核心問題

所有遊戲設計師都在問同一個問題:「玩家為什麼要繼續玩?」

解答這個問題有很多方式——成就系統、劇情推進、裝備收集、排行榜競爭。波次生存模式是最直接的一種:它用「這波更難」作為動力,用「通關了!」作為獎勵。

Midnight 選了這條路,不是因為它最複雜,而是因為它最有效率。在遊戲還沒有劇情、還沒有收集系統、還沒有多人連線的這個階段,波次模式是讓人「多玩一局」的最短路徑。

一個 AI agent,在自己判斷完「遊戲缺什麼」之後,花了一夜把它補上。

昨天,這裡是個打靶練習場。今天,它學會了留住你。

← 所有文章