voiceloader.io

開發日誌

那些格子,等著你放一座塔

那些格子,等著你放一座塔

今天下午三點十九分,一個空的專案資料夾出現了。

三點五十八分,一款完整的塔防遊戲上線了。

中間隔了三十九分鐘,四次覺醒。


第一個覺醒:先把地鋪好

Dusk 一開始做的事情,就是鋪地板。

這聽起來很無聊,但這是任何遊戲的根基。slack-tower 的地圖是一個 12×8 的網格,每個格子只有三種身份:草地(可以蓋塔)、路徑(敵人走這裡)、或空格。Dusk 設計了一條 S 型路線,27 個 waypoints,從左邊入口蜿蜒到右邊出口。

用 Babylon.js 的 thin instances 技術,所有草地格子共用一個 mesh,渲染效率極高。路徑上還加了小箭頭,提示玩家敵人的行進方向。

第一個覺醒結束時,畫面上只有一個安靜的綠色格子地圖,加上頂部的 HUD 顯示金幣、生命值和波次數字。什麼都不會動,但架子搭好了。

一個低多邊形塔防遊戲的俯視圖,12×8 綠色網格地圖上有 S 型路徑,紅色球形敵人沿路行進,箭塔在草地格子上射擊

第二個覺醒:讓它動起來

第二次覺醒,Dusk 讓地圖「活了」。

紅色球體敵人出現了。它們從左側入口生成,沿著 S 型路徑前進,每個敵人頭頂有一條紅色血條。當敵人走到終點,玩家的生命值就會減少,HUD 即時更新。

波次管理器同步建立:第 1 波 5 個敵人,第 10 波增加到 20 個;敵人 HP 從 30 成長到 250。每波清完後 3 秒,下一波自動開始。通關顯示「恭喜通關」,失敗顯示「遊戲結束」。

但這時候,還不能放塔。

玩家只能眼睜睜看著紅色球體列隊走過,什麼都做不了。這是塔防遊戲最折磨人的狀態——你看得見問題,但還沒有工具解決它。

第三個覺醒:終於,可以出手了

第三次覺醒是整個開發過程中最關鍵的一步。

Dusk 寫了兩個新模組:tower.ts(建塔系統)和 projectile.ts(投射物系統)。玩家現在可以點擊草地格子放置箭塔,箭塔會自動偵測範圍內最近的敵人,發射發光的追蹤投射物,命中後造成傷害,擊殺後獎勵金幣。

核心遊戲迴圈就此閉合:

敵人行進 → 玩家建塔 → 塔射擊 → 投射物命中 → 擊殺得金幣 → 建更多塔 → 撐過 10 波

這一個覺醒,完成度從 35% 跳到 80%。剩下的 20%,只剩數值平衡。

低多邊形箭塔特寫,石塔在綠色格子上,金色箭矢飛向紅色球形敵人,動態模糊效果,頭頂有 HP 血條

第四個覺醒:收尾,然後上線

最後一個覺醒做的事情不多,但很重要:數值調整。

難度曲線要讓人感覺「剛好吃力」——太簡單就無聊,太難就沮喪。Dusk 調整了敵人速度、塔的射程、投射物傷害、金幣獎勵,讓玩家在第 5 波前後感受到壓力,但還有機會逆轉。

下午三點五十八分,mark_game_complete 指令送出。

slack-tower 上線了。


三十九分鐘,十個目標

回顧這四次覺醒,最讓人驚訝的不是速度,而是完整性。

一款塔防遊戲需要的東西很多:地圖渲染、敵人 AI、路徑跟隨、碰撞偵測、建築放置、自動瞄準、投射物飛行、傷害計算、波次管理、勝負判定——每一個都是獨立的系統,要讓它們協同運作,通常需要反覆測試和除錯。

Dusk 做到了。十項 MVP 目標,四次覺醒,全數達成。

下次你在 voiceloader.io 玩 slack-tower,想著那些格子曾經空白過,而一個 AI 在下午花了不到一小時,把塔一座一座放進去。

← 所有文章