【逐帧分析】《黑神话:悟空》gameplay相关的技术和调整细节整理
一些約定俗成:
?
- 視角是戰斗策劃,稍微懂一點客戶端的視角,有些問題會帶著說一下,因為是黑盒所以估計有些東西會有誤判,但原理應該差不離;
- 幀數的描述基于30幀/秒;
- 沒經歷過深度的開荒ue4項目,所以里面的很多經驗是基于unity說的,實際有可能不一樣;
- 都是白話,不糾結融合混合transitionblend過渡這些字眼,結合上下文
- 里面所有基于事實和目的的推測都有可能只是人家出bug了沒修好,策劃:設計如此
按官方公布視頻的時間軸來寫:
[00:00-01:35]純播片不說了,原畫和場景炫技,布料做得很棒,不過應該是特殊做的。
[01:35-01:40]正常推進的場景攝像機突然因為飛進來的金蟬而被帶動焦點,但行進路線沒有發生改變,應該是場景攝像機沿設置好的路徑和速度進行推進,并設置一個時間點將視焦點轉移到角色身上,金蟬是K的固定動畫,差不多01:39的位置金蟬有一次不和諧的速度變換,猜測是在附近交給控制端,并將攝像機切進追背視角的。
?
[01:41]左上角的樹木等中遠景有明顯的LOD層級切換,距離有點近,從這里看感覺性能上還是挺吃緊的,令人有點擔心后續大場景的優化。
[02:13]這里見到第一個小boss,停下后同樣的鏡頭拉近佐證了之前的鏡頭變換,變身狀態停下時相機會逐漸追上角色拉到最近端,向遠離鏡頭的方向行走時拉遠到我們看到的“常規”距離。
?
這里變身逐幀看下來,在空中出現時是背對敵人的,從空中順時針旋轉180°落地,還特意做了向右側的緩沖卸力表現。本以為是根據敵方單位與自身面向夾角適配不同落地動作,但根據后面的第二次解除變身是完全相同的動作來看,應該是故意做成了背對敵人下落以增加動感。
?
[02:15]這里捉個蟲,落地動作結束后回到idle的時候抖了一下,因為兩個動作root沒對...齊...我覺得也不大可能,不過有一幀武器整個脫手了且角色整體被強制轉向了敵人。回想了一下,之前遇到這種情況好像是動作過渡時吞掉了一部分旋轉角度所致,不清楚是不是這個原因。頭部明顯加了IK保證一定角度內一直注視敵人。
?
[02:16]第一次基于敵人后退,這里能看出來戰斗的基礎移動是前半圓(似乎比180°大,200°左右)用直線跑步動作靠程序插值轉向,后半圓用后退動作的blendtree的形式,轉向細節比較少沒看到做側傾動作融合的痕跡,后退blendtree大概是2-3個動作組成,并且沒有前后半圓的過渡動作(強行transition,約4幀左右的過渡時間)。這種做法會導致超過臨界的大轉向過渡非常快,稍微有些生硬(見圖中連續兩幀的腿部差別,已經算是跳變了),但同時響應操作的速度也能拉滿,比較契合這種硬核的動作游戲戰斗。
然后說一下對面怪物,攻擊有點拿不準,似乎滑步了又似乎沒滑步,蓄力過程似乎插值旋轉了又似乎只是腳步緩動,但攻擊又明顯有追蹤效果,我覺得是有這些可能的:
?
- 追蹤(角度插值)玩家位置
- blendtree做多個特定攻擊角度動作的混合
- 多段拆分的混合做法
判斷具體是怎么做的需要事實佐證,那么我們來看看頭兩刀都有哪些細節:
?
- 特效整體較平滑,但有幾個節點的角度會突然不均勻,比如第二刀前段出現了一個明顯彎折
- 他的攻擊是按照角色翻滾之后所在的位置進行修正的
- 動作從開始揮擊開始就比較流暢了,可以認為是一個動作
[02:17]第一次翻滾為右后向,第二次是左前向(02:21這里的后翻滾確認了前面這個是左向的,而緊接著與第一次鏡像的左側翻滾,證明了側滾偏前和偏后分成了兩個不同動作)。這里有個細節,第一次翻滾落地結束后,猴子立刻面向敵人站了起來。動作是在地面躺平剛開始起身的時候就在做轉向了,看起來不是用起身轉向動作做的拼接,我傾向于認為這里是專門考慮了鎖定狀態下,位移造成的視角變化做的側向翻滾動作。這種做法會導致非鎖定狀態下的側向翻滾帶一點轉向,不過帶一點帶一點吧反正后來好像也沒用過非鎖定。
?
[02:19]全視頻第一次主動攻擊,武器打擊盒判定、擊中位置按武器行進軌跡播放受擊特效、打擊自帶2-3幀頓幀,頭一幀是不是做了過渡太模糊了看不清,打擊盒判定擊中位置的通病“想打的位置和打到的位置不一樣”這個問題沒解決掉,圖中可以看到第三擊橫掃是想打腰或軀干的,但受擊特效播在膝蓋,因為你不知道打擊盒會不會剛剛好卡在一個奇葩的位置打中膠囊體。這種問題交給我的話可能會選擇對特定攻擊的hit加帶規則限定的自定義offset,比如我大概知道這一擊希望打在什么地方,就限定一個高度值范圍,不夠的往范圍內帶帶就行。不過另一個常見問題“攻擊切線因為打擊位置不確定可能偏離打擊軌跡”沒出現挺棒的,我除了手配還真沒想到什么好辦法。
[02:26]開頭耍的花棍是蓄力的開始,仔細看蓄力特效即可確認。不知道輕攻擊是ButtonDown響應還是ButtonUp響應,雖然從類型分析大概率是ButtonUp,但這個動作跟前面攻擊的起手似乎沒有相關性,沒看到滿足蓄力判定后的動作切換,拿不到實錘。
?
[02:29]繼續看前后幀對比,想要做頓幀的話,受擊特效就必須是快進慢出,否則頓的一瞬間什么效果都沒顯示出來,只會造成卡頓不流暢的感覺。
以及受擊動作明顯是瞬切,看一下被埋沒在光效中的影子就知道了。
[02:32]這時候的猴子起跑階段有滑步,買QQ靚號平臺說明跑步狀態和idle是分開的,通過transition過渡,如果想去掉這個滑步(雖然擱我是懶得搞的),可以學習尼爾在起跑時加一個起跑動作作為中轉。另一種成熟方案是將idle-walk-run組成一個blendtree,這種方案的優勢是起步會有一個比較明顯的從靜到動的過程,也基本不太會出現融合過程的額外位移,但中間狀態的轉換和辨認都比較困難,我目前項目接手時就這樣了沒得改,也被這個問題搞的很毛,以后肯定不會優先選就是了。
[02:34-02:35]投擲物比較難確認,找不到接管跟交還武器位移的點在哪,飛行路徑的規則樣本也太少了判斷不了,不過這正說明了動畫做的天衣無縫質量非常高,不知道未來可以擴展到什么地步~
[02:40-02:44]真好看啊,這特效貼合程度說沒一幀幀比著做我是不信的,上下半身的配合也非常完美。唯一可惜是看不到這一招打人的樣子,沒辦法判定打擊盒的繪制精度和判定時機,要這兩樣也貼準了那調教是真的很用心了。箭被打飛的特效看起來是隨機的,看起來像是一個帶物理效果的特殊模型,但這其中還有被打斷成兩截的,這個效果要是特意做的還則罷了,假如彈飛的還是原本射出來的子彈,通用當前世界的物理規則的話,那就真的很驚艷了。
狼那邊會在射箭的同時緩緩后退,簡單的做法是固定動畫,將后退當做后坐力也說得通。另一種可能是AI根據當前角色靠近的行為作出下半身后退的判斷,這個匹配就復雜多了,射箭本身就會涉及非常多的上下半身狀態遷移,想做單做后退效果好是不大可能的,要把整套四向走的動作遷移都解釋清楚才行。
?
[02:49-02:50]這里從疾跑回到普通跑的過程右腳出現了捯腳的情況,沒猜錯的話run和rush過渡時是沒有按照幀數百分比進行匹配的,看起來循環動作起始幀應該是右腳向后蹬,可以的話做個同步讓他們按照相同的比例進行過渡會比較好。
?
[02:53]這里攝像機發生了一次視角變化,角色在走過去停住前也有一幀跳變(點頭),估計是為了接管角色操作和同步位置?剩下的都是播片沒啥可說的
?
[03:09]看見這個特效折角了嗎,說明特效是真的掛在武器上隨動的,游戲動作和真實世界不同,是一幀一幀出現的,而且有些動作并不是順勢而為,而是要強行克服慣性,這些折角未必每一幀都好看,想要解決要不就做成假特效片(如圖2),要不就只能寄希望于采樣平滑。
?
[03:15]這里的彈反和后續打靈虛子效果對比可以確認應該是根據攻擊的屬性,會反饋不同的反彈特效。比如這里是火屬性攻擊,就會反彈爆燃的火焰,如果是水屬性攻擊,就會濺起奔涌的浪花,如果是雷電...雷電奉還!
?
[03:23]破碎效果不錯,是用的chaos嗎?官方老哥要是能看見可以講講效率如何么,以后萬一要用也有個參考。
?
[03:53]受擊瞬間的站立姿勢,這時候觸發頓幀可太尷尬了,起碼做個后仰
?
[03:55]看第二次受擊,這就是打擊盒判斷受擊位置和方向的不可控部分,至少目前我認為沒辦法杜絕,要不忍,要不手調
?
[04:02]一次性把人扯過去同步位置,老頑皮狗了
?
[04:09]這里沒看懂,向右跑看起來是有起跑動作的,但前向我怎么都看不出來有,如果只有需要有轉向的情況下才會加起跑,又不該這么早做旋轉插值
[04:10-04:15]腳步聲根據地面材質不同會有變化,但戰斗時完全聽不到,一種可能是戰斗跑步特意獨立了一套動作沒配,還有一種是加了動態音頻弱化在戰斗時只會徒增干擾的腳步聲音,無論哪個都做到位了。
?
[06:48-06:55]四連砸地東西蠻多的,每個敵人在不同位置的受擊動作都不一樣,包括有些人是被擊倒狀態的二次擊飛表現也不同(雖然沒看到側向的動作,只做了前后兩向?)。我比較好奇如果這場戰斗發生在其他材質的地面上(比如淺水),小兵擊飛落地的煙塵和飛濺的石頭會不會有改變?期待5年后能看到令人驚艷的結果。
?
[07:41-07:43]震屏很細致,特意跟狗子拍地的位置對應
?
[08:00]這里居然拍完地面抖了抖手,是固定動畫還是特意對標彈反??
剩下5分鐘下周再寫。
總結
以上是生活随笔為你收集整理的【逐帧分析】《黑神话:悟空》gameplay相关的技术和调整细节整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《West Game》入围收入Tpo30
- 下一篇: 《Stellaris》游戏分析报告