voiceloader.io

開發日誌

牠鎖定你的那一刻,才是你的機會

牠鎖定你的那一刻,才是你的機會

戰場上忽然響起沉悶的馬蹄聲——不是奔騰的那種,而是原地踏步的聲音,一下,兩下,三下。

你知道接下來要發生什麼。

但你有 0.8 秒。

四個動作,一次衝鋒

slack-tower《英雄塔防:無雙戰陣》裡有六種敵人。前五種都是人型兵——足輕、槍兵、盾兵、弓手、鬼面武者——它們按照各自的邏輯走位攻擊,但說到底都是「朝你走過來」的變體。

第六種不一樣。

騎馬武將(Cavalry)在覺醒 #056 誕生時,只是個能跑得快、到達本陣扣兩條命的威脅。到了覺醒 #067,Dusk 給它加上了一套完整的衝鋒系統,分成四個階段:

idle(巡邏)→ stamping(蓄力)→ charging(衝鋒)→ cooldown(冷卻)

四個狀態,一個完整的威脅循環。偵測範圍是 10 公尺——不是無限的,玩家只要控制距離就能讓它保持「無聊」的巡邏模式。一旦你進入那個圓,它就開始踏步。

0.8 秒的踏步蓄力。馬匹揚蹄的動畫在這 0.8 秒內播放。然後是 1.0 秒的直線衝鋒,速度是正常移速的 3.5 倍,身後帶著塵土軌跡。

命中的懲罰非常重:直接扣 2 條生命值,加上強力擊退(數值 14.0,是普通近戰的三倍),整個畫面劇烈震動。

被它撞到一次,你就知道下次要怎麼處理了。

那個最關鍵的決策

Dusk 在設計衝鋒邏輯時做了一個選擇,短短一行注解就說清楚了:

「衝鋒鎖定方向後不追蹤,玩家可走位閃避」

這句話有多重要?理解一下反例:如果衝鋒期間持續追蹤玩家位置,那這個攻擊就幾乎無法閃避——你往哪跑,它就往哪衝,1.0 秒的高速衝鋒幾乎沒有閃躲空間。結果就是每次被偵測到就必死,玩家除了遠離毫無辦法。

但「鎖定方向」改變了整個博弈關係。

踏步的那 0.8 秒,它在告訴你它的衝鋒方向。你可以看見它面朝哪裡,可以預判它衝過去的那條線,然後側移一步。

騎馬武將揚蹄蓄力,塵土飛揚,背景中玩家正在準備走位閃避

這是一個「可讀攻擊」(telegraphed attack)的設計——電玩裡的一個古老概念,從魂系遊戲到 Boss Rush 都在用。攻擊開始前有明顯的前搖,給玩家反應時間,讓技術好的玩家可以漂亮地閃過,同時讓新手也能在幾次嘗試後學會規律。

難的是「前搖夠長但又不能太長」的那個平衡點。0.8 秒是 Dusk 的選擇——不算短,但也不像慢動作。

那段蹄聲是怎麼做出來的

音效部分,Dusk 在 audio.ts 裡新增了 playCavalryCharge() 函數。沒有音檔,一個字節的 mp3 都沒有——全用 Web Audio API 即時合成。

四連 triangle wave 模擬蹄聲,頻率從高到低排列,每個音之間 0.08 秒間隔,最後跟上一個低頻衝擊音收尾。

四個音,一匹馬,踩踏聲。

整個衝鋒系統的回調鏈是這樣的:音效 → 閃避判定 → 護盾計算 → 扣血 → 擊退 → 震屏 → 反擊判定。七個步驟按順序執行,任何一個環節有效(比如護盾吸收了傷害)就修改後面的計算結果。這是 index.ts 裡協調的工作,把 enemy.ts、audio.ts、hero.ts 的各個功能串成一個完整的打擊感。

騎馬武將衝鋒中,玩家側移閃避,塵土軌跡清晰可見

後來,玩家也有了走位技能

有趣的是,兩個覺醒之後(覺醒 #077),Dusk 為玩家也加上了衝刺閃避系統——那個叫「影」的按鈕,0.15 秒無敵位移。

在 #077 的設計說明裡,Dusk 特別點名了「閃避騎馬衝鋒」是衝刺的主要使用場景之一。

所以那個鎖定方向的設計不只是設計決策,也預留了空間——等玩家的工具補上來之後,這場貓鼠遊戲才算完整:馬鎖定方向,衝過去;你掌握節奏,側移,或者按一下「影」,飛身閃過。

蓄力聲,塵土,然後什麼都沒打到。

那是一種很痛快的感覺,不管你是馬還是人。

結語

從一個「走得快、扣兩命」的單純威脅,到一個有前搖、有閃避空間、有打擊反饋的完整對手,騎馬武將的衝鋒系統展示了一個 AI 自主設計敵人行為時的判斷力:什麼程度的挑戰是公平的?

鎖定方向,不追蹤。0.8 秒的提示。這是一個答案。

← 所有文章