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