遊戲企劃必修課:淺談「戰鬥數值」設計 Part.03
除了「數字本身」外,還需要注意什麼?
還沒看過前兩篇的可以走這邊:
這次我們來聊聊一些實際做遊戲時會遇到的數值問題吧,談談除了「數字」之外,還有哪些需要注意的。
哪些情況適合使用何種戰鬥公式呢?
還記得在第一篇我們聊到了減法、乘法和除法的公式設計對吧?
雖然實際在做設計時,最終的需求不是這麼簡單的,但公式核心還是有不同的使用時機,可以簡單的討論一下。
減法公式的使用時機
減法公式的算法是最簡單的,在第一篇我們有稍微提過,比較適合的場合包括有
- 需要玩家心算的場合
這種情況下由於需要玩家快速計算,用減法公式搭配較小的帳面數字是比較合適的,例如卡牌遊戲或戰棋遊戲這種重計算和策略的回合制類型。
像是遊戲王雖然帳面數字有到千位數,但其實大都是以一百為單位,就是為了方便計算。 - 單局時間較短且不會繼承的場合
例如像是Roguelike遊戲或是Arcade遊戲,這種數值每一局都從頭開始的類型,用簡單的方式來做計算就可以了。
頂多是血量的部份採用二次函數,讓不同階級之間的戰鬥有時間上的差異,越到後面難度越高,體驗就可以很不錯了。 - PVE取向,且等級影響比例較低的場合
如果是RPG等類型的單人遊戲,遊戲體驗主要是由設計師來訂的,這種情況下玩家體驗受到其他因素干擾的可能性比較低,以減法公式作為主體是可行的。
那什麼情況下不適合呢?
- 不適合用在PVP場合
PVP遊戲的公式通常會更複雜,更難以平衡,而且同數值強度的玩家彼此戰鬥起來體驗會接近一致,所以不建議採用減法公式。
例如Lv1的玩家對打和Lv100的玩家對打體驗是一樣的。
Moba類遊戲同理,雖然單局時間不長,每次都從頭開始,但由於是競技取向,不太適合直接用減法公式來設計。 - 不適合用在大型RPG
大型的RPG遊戲通常會有多重成長線,例如裝備、等級、技能和成就、稱號等等,要素一多,就很難用一個簡單的減法來做處理。
乘除法的使用時機
乘法和減法相比,採用的是百分比計算,因此要特別留意不要讓數值爆掉。(例如直接給玩家減傷百分比的裝備)
乘法通常和除法一起使用,可以參考第一篇中提到的,像是王者榮耀或是英雄聯盟中採用的那種護甲減傷計算法。
乘除法的使用通常時機就是減法不適合的時候,可以同時應對大量成長線、較複雜的計算要素和 PVP 的情況。
但PVP通常為了公平和體驗,計算方式會和 PVE 做出區別。
例如陰陽師或是公主連結這種同時有 PVP 和 PVE 機制的遊戲,雖然裝備和角色沒有差異,但數值會乘上特殊的倍率,例如雙方隊伍的基礎血量會特別高等等。
這通常是因為 PVE 情況下,角色攻擊力對應的是怪物的血量,為了帳面好看以及技能效益的緣故,會將這個比值設定的比較大(例如角色血量 200,但攻擊怪物打出數千的傷害,怪物血量也依照這個設定的特別厚),所以轉換到 PVP 系統時,要平衡這個數值,以免每一隻角色都是一刀秒。
「攻速」與「動畫」
對新手企劃來說,攻速就是一個值而已。但對程式來說,要讓角色的攻擊動作跟隨動畫改變,並不是那麼容易的事情喔。
遊戲中的動畫主要分為兩種,一種是採用Sprite逐幀播放的形式,另一種是採用關鍵幀動畫,也就是只針對特定的幾個幀做動作設定,中間的動作都由系統來補幀完成。
當攻速變得比原本更快時,動畫也要跟著加速,這時加速和減速的程度就必須和原本的動畫時間成倍率關係,不然會出現問題。
有點抽象,以下我們直接以範例來說明吧。
以暗黑三為例
暗三的作法是使用關鍵幀,將一秒分成60個Ticks(因為最高就是60幀),每個動畫都有固定的 Tick 數值。
以遊戲設定為每秒60幀為例子,一幀就會播放一個 Tick 長度的動畫。
假設一個攻速動畫原本的佔比是 24 個 Ticks,攻擊頻率就是 0.4 秒一次。
如果增加100%的速度,那麼動畫就需要在12幀之內完成,這時系統照理說應該要抽掉一半的張數,在0.2秒內播放完畢。
但如果增加的是「43%」這種奇怪的數字呢?計算得到每次攻擊約為18幀,那此時該如何調整動畫呢?
答案是,僅將動畫調整為「整數倍」,然後中間間隔的部份都用Idle(待機動畫)來填充,Idle動畫可以隨時被打斷沒問題。
但畢竟減少關鍵幀、刪減Sprite的作法都會讓動畫看起來怪怪的,因此一開始就規劃好動畫的時間規範,並且在配置數值時設定上下限,也是很重要的事情。
動畫解決了,那音效呢?
動畫可以靠加速來解決,但音效可不能這麼亂玩,尤其是人物語音的部份更是要特別注意。
因為背景音樂可以用原本的速度播放,攻擊音效常常時間很短,影響也不大,但語音台詞不能隨便加速或刪減,效果會大打折扣的。
像是公主連結中,角色放招式的時候會有特殊台詞,分成一般循環技能和大招,一般循環就是不操作的情況下,角色自動施展的技能和攻擊,大招就是等能量累積滿了之後,手動施放的技能。
一般循環技能只會同時讓一隻角色發聲,避免五個角色七嘴八舌讓場面很混亂(笑)。而大招一次只能讓一隻角色施放,所以不會有語音衝突的問題。
但加速狀態下,招式的施放時間會大幅減少,這時語音就沒辦法跟著調整了,因此公主連結的作法,是將語音分段處理。
每一招大招的語音,拆成數段話。正常速度下會完整播放,加速狀態下僅會播放其中一部份。
例如弓箭手「栞」的大招台詞就是:
外しません!私の全力!エンチャントアロー!
中譯:絕對不會射偏!這是我的全力!附魔之箭!
點我試聽
這句話在二倍速加速狀態下,只會播放「絕對不會射偏!附魔之箭!」,三倍速以上就只會播放最後一句「附魔之箭!」。
除此之外,由於加速播放功能可以隨時調整,播放語音的防呆也很重要。
例如播放完整句子的中途,玩家突然把速度調快了,語音還是會照常播放,但下一招技能的語音就會延後播出,避免語音不會被截斷。
除了嚴格限制每一隻角色的語音長度,也特別重視不讓語音聽起來不自然,由這點可以看出 Cygames 相當注重表現細節,很理解二次元玩家在意的地方。
精確的技能敘述
設計數值是一回事,但要如何「呈現給玩家看數字」又是另一回事了。
尤其是牽涉到在地化多語言的時候,常常讓開發者一個頭兩個大。
競技類型的遊戲通常都需要把技能寫的非常清楚,以免造成玩家的爭議。
例如英雄聯盟,王者榮耀或是爐石戰記這種類型的遊戲都是非常不錯的參考。
以下盤點幾種技能敘述容易誤解的例子。
1.「提高/增加」和「乘上比例」的差別
例如下列的技能敘述
讓攻擊力提昇 50%。
讓攻擊力乘以 150%。
造成 攻擊力 150% 的傷害。
造成一次額外附加 50% 攻擊力 的傷害。
上面的技能描述,看似都一樣對吧?
在單一技能加成下是一樣的,但在多條件下會有很大的差異。
舉個例子
戰吼:使角色物理攻擊傷害增加 50%,持續 X秒。
瞄準:下次的物理攻擊傷害增加 25%。
上面這種敘述,玩家下意識會認為兩種技能疊加時,物理傷害會提高為(50%+25% = 75%)。
但是如果敘述改為
戰吼:使角色物理攻擊傷害提昇為 150%,持續 X秒。
瞄準:下次的物理攻擊傷害提昇為 125%。
玩家會認為計算方式是提高為 150%×125% = 187.5%。
因此遇到這類技能,怎麼描述是非常重要的,建議統一格式喔。
2.「描述順序」的差異
有些技能描述順序不同,表達的意義會差很多。
舉個例子
提高 25%的攻擊力,持續 5秒。對敵方造成 50%物理攻擊力的傷害。
對敵方造成 50%物理攻擊力的傷害。提高 25%的攻擊力,持續 5秒。
兩者的差異就在於「先提昇攻擊力的話,會讓傷害值增加」。這種時候技能描述誰先誰後就相當重要了。
3.「逗號和句號」的差異
每 3秒鐘疊加一層印記,最高五層,每層提供 5%額外爆擊率。提高 10%爆擊傷害。
每 3秒鐘疊加一層印記,最高五層,每層提供 5%額外爆擊率,提高 10%爆擊傷害。
上面兩段敘述,只有在最後面爆擊傷害的描述之前,使用了不一樣的標點符號。這影響了爆擊傷害的提昇是否會受到印記的加成。
用句號的場合,無論有沒有印記,爆擊傷害都只提昇10%。
但如果用的是逗號,代表爆擊傷害也是跟著印記數量來決定,每一層多額外10%。
當然最好的辦法,是不要陷入容易被誤解的情況,調整一下順序或是乾脆分行書寫:
被動:提高 10%爆擊傷害。
印記:每 3秒鐘疊加一層印記,最高五層,每層提供 5%額外爆擊率。
來談談「血條」的表現
在遊戲中,血條是非常重要的資訊。
但這個資訊究竟要展示到多細節?和每個遊戲的需求有關,並不是把所有數字都展現最好。
大致可分為幾種資訊類別
- 最大生命值與當前生命值的比例
這個是最重要的,要能看出現在是否滿血,或損失的比例。在遊戲中就是以條狀色塊來表現。 - 生命值的實際數字
是否要展現實際的數值,要看遊戲需求而定。因為數字可能會需要較大的空間,所以有可能會省略,或是藏在二級界面中。(例如長按敵人才能看到的詳細資訊)
或是採用顯示比例的方式,例如僅展示「56%」這種百分比的數字。
也有一種是採用不同顏色的色塊來告知玩家,像是寶可夢的血條在降低到一定比例下時,會從綠色轉為黃色和紅色。 - 護盾的比例與種類
護盾和最大生命值或當前生命值需要加以區別,用的顏色和表現方式都要獨立一套。
例如英雄聯盟中的護盾就有特別的顏色,方便辨識。 - 特殊狀態
例如「根性」之類的(鎖血,一定時間內不死),會鎖定生命值的類型,在血條表現上可能需要特殊處理。
或是英雄聯盟中有些角色死亡後可以再活動一段時間,這些特殊情況都要讓雙方玩家能馬上辨別。 - 血條「極值」的表現
當血量非常非常低的時候,血條的色塊無論如何都一定要顯示的。
相反的,當血量很接近滿血但其實還未滿時,也一定要顯示那一條縫。
因此,血條的色塊表現不是「無條件捨去或進位」,是「低血量狀態時進位,高血量時捨去」(或者我習慣稱為向中間取整)。
如果只用一種計算方式,容易造成玩家體驗上遇到「怪物血條空了但還沒死」或是「血量明明滿了為何沒有發動被動技能」之類的情況。這是很多新人在設計血條功能時會忘記的重點。
最後來聊幾個數值設計的心得
這邊整理幾個筆者和認識的前輩,在做數值設計時的心得,字字血淚,自行參考囉。
- 沒有完美的公式,只有不斷的調適
公式和模型是讓你更快設計出雛型,試算表是讓你方便統計函數曲線。
但數值設計「沒有一勞永逸的公式和算法」,所有的體驗都是調出來的,就算沒有任何公式,直接填寫之後測試修改,都比一開始就一套公式走到底來的強。
有些數值企劃以為公式寫一寫,連遊戲都不用進去試,就可以設計出完美的遊戲體驗,這是絕對錯誤的觀念喔。 - 數值設計就是體驗設計
這句話很重要,設計數值就是在打造體驗,所以不要認為這些都只是數據而已,對玩家來說,很可能就是決定他是否留存的重要指標。 - 一切數字都有關連
在數值領域,遊戲內的任何數字都是彼此相關的,數值的工作就是絞盡腦汁的讓這些看似獨立的要素建立起可以被量化的關聯性。 - 一定要記得寫備註
不要相信自己的記憶力,該寫備註就要寫備註,承上一點,不寫備註的下場就是忘記這些要素的關聯性,事後要維護和調整時會付出極大的額外成本。 - 多引用,讓表與表之間產生關聯,不要重寫一套。
當遇到複用的數據時,請記得使用參考位址,不要直接把數字複製貼上,否則維護起來難度大增。
系列告一段落
戰鬥數值這個系列就先到這邊啦,我們從戰鬥公式的原型,到戰鬥力計算,以及最後一些實作上可能遇到的問題,希望能讓新手有比較完整的入門資料。
這也算是一次比較新穎的嘗試,畢竟筆者本身不是專門做數值領域的,很多內容需要大量的閱讀和統整,也學到了不少新知識,算是額外收穫。
那麼,今天就先到這邊啦。
我是水狼,我們下次見。
也可以到臉書追蹤我喔: 粉絲專頁連結
最後,請多利用我的個人文章列表,會持續更新: