版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://spelldev.blogbus.com/logs/15887511.html
戰斗中的取消:《戰神》與動作游戲設計 作者:Eric Williams譯者:緋紅KING本文翻譯自:http://www.gamasutra.com/php-bin/news_index.php?story=17215在這期Gamasutra的特別專欄里,《戰神》(God of War)的戰斗/系統主設計師Eric Williams會來探討一下動作游戲中的取消(即播放下一段動畫之前結束上一段動畫)。文中會有一些頂尖動作游戲的例子,以及《戰神》設計過程中的常見問題。
引言:“以前我被問到的關于《戰神》的問題,大部分集中在Kratos的一些武器攻擊上,即L1加按鍵的特殊技。這些問題普遍的根源,就是如何‘取消’這些招式,把它們不渲染出來。與其解釋這些招式,我不妨闡述一下完整的動作取消理論,從早期的格斗游戲到引用此概念的動作冒險游戲。”
取消的誕生
讓我們從這些游戲的始祖開始:街頭霸王:世界勇士。(Street Fighter 2: World Warrior)這是一個傳奇故事。在游戲測試期間的某一天,加利福尼亞州一位名叫Tomo Ohira的人,用一些瘋狂的招式打垮了游戲中的對手。他可以把一些不能連在一起的招式連起來,用取消制造出連續技。
當我聽聞此事時,我還是一個身在俄亥俄州的孩子。我當然相信這個故事,因為Tomo Ohira是當時美國最優秀的街霸選手。然而,在那之后我從日本開發團隊得知,這是游戲里的一個“bug”。他們覺得這個破綻很難變得實用,所以就保留了它。
結果,這個bug就成了取消-連續技的誕生之源。最典型的例子就是隆的龍卷旋風腳取消波動拳,我認為這是很多其他街霸游戲基礎打法的催化劑,比如“憋角”和“下輕腿”。
取消的真正原理
讓我們來給取消下個定義:當用戶通過控制器輸入一個動畫樹的一系列節點,開始播放一段新動畫時停止播放前一段動畫。不用考慮戰斗系統的各個招式,讓我們直接來分析取消的種類和方法。
取消分為兩個核心種類,“部分取消”和“完全取消”。
“部分取消”能使一個動畫在指定的條件下結束播放。“部分取消”有兩個常用的條件,一個是“打擊前幀”(Pre-hit,動畫可以在打擊進行的第一幀之前的任意時間取消),另一個是“打擊后幀”(Post-hit,動畫可以在打擊進行的最后一幀之后的任意時間取消)。
“完全取消”則是讓一個動畫在任意的位置結束播放。我進行了歸納總結,只有在少數游戲中會有細微差別,但對于大部分游戲,99%都會采用這兩種類型。
大部分游戲中,取消的兩個方法是“緩沖”(Buffer)和“瞬時”(Instant)。
“緩沖”方法會預先儲存用戶的輸入指令,并在取消條件成立時執行它們。在一些設計良好的游戲中,“緩沖”方法能在取消條件達成之前,用其他輸入指令進行自身取消。這樣保證了系統響應性的高品質。
“瞬時”方法則是在取消條件成立時,立即接受并執行用戶在那一幀的輸入指令。“瞬時”方法允許玩家延遲動畫的播放時間,并添加到系統的總響應性中。
那么,我們來舉一個例子。這里有一段名為“Square01”的動畫。這段動畫在我們按方塊(Square)鍵時會播放。這段動畫共有60幀的長度,在15幀至20幀是一個打擊幀窗口(即打擊判斷生效)。這段動作的偽代碼腳本如下:
//60 frames
Animation = Square01
//hit frames
On = 15;
Off = 20;
//attack cancel
Anim = Square02; Button = Square; On = 0; Off = 21; Method = Buffer;
Anim = Square02; Button = Square; On = 21; Off = 60; Method = Instant;
//block cancel
Anim = Block; Button = L1; On = 0; Off = 60; Method = Instant;
你也許會問,這些都代表了什么?注意“On/Off”參數,這些幀的值定義了取消窗口的范圍。“Method”參數定義了取消的類型,如果你忘記的話請看上文的定義。
我們可以看到,在0到21幀之間,“Square01”是不能被打擊前幀的方塊鍵輸入所取消。而在打擊后幀,即幀21之前,方塊鍵的輸入是被記錄到緩沖中的。
我們也可以看出,“Square01”在打擊后幀之后,即21到60幀之間,可以被瞬時取消。并且,在0到60幀之間,L1鍵可以在任意時間取消“Square01”,也就是完全取消。
如果你明白了上述內容的話,試著去想象一下一個角色的招式中每一段可能播放的動畫,并想象一下它們是如何與游戲系統相關聯,比如回避、防御、反擊、行走、跑步、跳躍、二段跳、魔法、投擲和相關反映動作。給你一個小的參考,《戰神2》中的Kratos一共有大約4000個取消節點,以及每一個節點中大量的參數設置。
感到厭煩了?我保證從現在開始不從技術角度去談論了。
實現的效果
一個完好實現的取消系統對游戲能產生什么樣的效果呢?首先,這能判斷一個游戲是否給人帶有遲滯的感覺,或是爽快并且高響應的感覺。從防御的角度來看,它能給人帶來“最好的進攻就是最好的防守”這樣一個感覺。玩家可以攻擊敵人,并用防御取消來制造新的機會去攻擊。
防守取消在《靈魂能力》中是非常有趣的。因為它支持打擊前幀的取消,能讓玩家制造佯攻,給使用頭腦的對戰游戲提升了一個新的層次。《街頭霸王3》和Marvel系列應用了“超殺取消”,在傳統Capcom系列中顯得十分華麗,并帶來了進攻型的游戲體驗。
你也會注意到,取消系統在一些需要節奏感的游戲中表現的十分出色,例如《罪惡工具》(Guilty Gear)系列。如果考慮到一個游戲中取消系統的各種變化,那真是數量眾多。
一個典型的例子就是CvS2(Capcom vs SNK 2)中聲名狼藉的“翻滾取消”(Roll Cancel),基于一個取消bug,一些招式可以變得無敵。最后,變成了游戲的趣味性和競技性的爭論。但是大多數情況下,一個出色的取消系統要具有一定深度,能讓玩家發揮他們的創造力,給游戲的樂趣和感官的滿足都帶來提升。
下面我會介紹一下關于三大主流動作游戲的一些看法。它們是:《忍者龍劍傳》(Ninja Gaiden)、《鬼泣》(Devil May Cry)和《戰神》(排名不分先后)。(把我正在并已經制作近4年的一款游戲放到這Top3中可能會引發一些有趣的評論,所以我就不把這游戲寫出來了)
忍龍的技術性
《忍龍》是一個非常嚴格的游戲。它的取消系統非常嚴格,事實上,打擊前幀做出取消判定很容易讓我反應不過來。我覺得這是一個非常好的規則,構建了一個牢固的戰斗系統,但它也增加了游戲的難度。玩家知道,當他們按一個鍵發起攻擊時,必須在下一段動畫開始之前完成打擊幀的輸入。
這個規則也有一個有趣的地方:玩家甚至不能暫停游戲,因為他們可以換武器或取消攻擊。不相信?你可以試試看。忍龍是一個被設計成核心向的游戲,所以他們用一些強硬的規則來保證游戲的公平,使玩家去了解這個嚴格而縝密的系統。我為板恒伴信和Team Ninja為這個系列所做出的努力和貢獻而喝彩!
鬼泣的Style
鬼泣有很多和忍龍相似的規則,但是這是一款Capcom的游戲,他們拋出了一個名為戰斗模式(Style)的炸彈,并且添加了許多有趣的成分。
鬼泣的主要取消系統集中在近身攻擊和遠程攻擊的切換上。我確信所有的近身攻擊都是打擊后幀的取消,遠程攻擊是由開火速度控制的。而5到6種的近身及遠程武器,使系統的變化更加豐富。如果再加入模式,那么效果是非常驚人的。比起忍龍的技術性,鬼泣更在于無序和華麗的招式。
毫無疑問,鬼泣是一個成功的嘗試,從它黑暗陰郁的美術風格,到驕傲、愛說笑話的但丁。盡管如此,當你真正了解它時,你才能深刻“了解”它。并且這個系列有很多激進的Fans讓你明白他們已經了解了。
戰神和它的目標受眾
戰神與以上兩款游戲不同,它支持很多打擊前幀的取消,并且把這兩款游戲中的一些方法組合起來。最明顯的一點,就是戰神不是一款核心向的游戲,沒有很強的技術性或華麗的亮點,它只是一個具有純粹砍殺樂趣的游戲。
它仍然具有一些靈光的要素。當然,那些在等待隆和但丁新的傳說的Fans也給了我們一個機會。取消系統的規則是普遍而有目的的。我們的目標受眾玩家不希望去學習技巧。他們只是想按照自己的方式去游戲。比起另外兩個游戲,戰斗并不是這個游戲的唯一部分。
那么關于L1加按鍵的特殊招式,為什么它們不能被取消?
這些招式顯然是Kratos強有力的攻擊方式,通過一個簡單的按鍵指令發出。它們能立刻攻擊到對手,或者使對手位于不利的狀態。這些招式看起來也比較華麗,初學者看到四處閃耀的刀光,會覺得這些招式很強大。
就像我剛才提到的,其他游戲只是用打擊后幀的取消,來告訴玩家:“要注意攻擊前的瞬間。”而戰神中幾乎所有的基礎攻擊都能被任意取消,包括打擊前幀,讓玩家更輕松自如。
但是,L1加按鍵的特殊技會有潛在的高傷害能力,這樣就不能在打擊后幀之前取消。因為這會影響到游戲的平衡性(大多情況是造成無限連)。與此同時,對于初級的玩家,他們通常要了解的是風險與回報的概念。復雜的系統會使他們覺得游戲比較困難。
我知道這會從不同角度引發關于平衡性的爭論。但是相信我,我聽取過各種見解,而這是我們最終的決定。不管怎樣,請隨意告訴我我們有多愚蠢。
你不得不面對你的目標受眾,而我認為我們抓住了最好的受眾群體。那些因為4個小招式不能被提前取消而感到失望和憤慨的朋友們,我只能對他們說,對不起,你們錯過了更多偉大的游戲體驗。
戰神的疏漏和瑕疵是顯而易見的,但事實證明,這是唯一一款能吸引日本玩家目光的美式動作游戲。我從小到大在玩日本人的游戲,我希望做出一個感覺很日式的游戲,但是又如同美國電影一般好看。戰神讓我達成了這個心愿。它不是完美的,但有些人覺得它做到了,這正是我們作為游戲開發者所期望的。
順便說一下,戰神的取消方面還有一些深度樂趣。如果你不相信的話,按方塊鍵,然后輸入以下任意指令。
移動 (任意方向)= Post-hit frame
跳躍 = Pre-hit frame
翻滾(回避) = Pre-hit frame
魔法 = Pre-hit frame
投擲 = Pre-hit frame
防御(閃避/阻擋) = Pre-hit frame
切換武器 = Post-hit frame"
這篇文章來自Eric的博客“Pushing Buttons”的一部分,感謝Eric的授權。