淺談街霸的幀資料 (一):frame data
作者:gougou槐巨集文,曾參與《戰神》與《光環6》的開發。
引言
其實我玩格鬥遊戲20多年了。
很小的時候就在街機廳玩各種各樣的格鬥遊戲:《侍魂》系列,《月華劍士》系列等等,當然還有在國內最出名的《拳皇》系列,所以也算一個比較核心的格鬥遊戲老玩家了。《街霸》系列小時候一直沒有深入玩,但是自從十年前開始深入接觸之後也算得上一個合格的《街霸》玩家了。
我一直覺得深入研究格鬥遊戲對動作遊戲的開發是很有幫助的,直到後來自己參與了動作遊戲的開發,我這個感悟更加深刻了。格鬥遊戲基本上是對動作要求最高的遊戲,雖然自己作為格鬥遊戲老玩家,對很多概念和系統都耳熟能詳了,但是我從來都沒有系統性的全面剖析過裡面的每一個系統,這是作為一個動作遊戲開發者我一直想做而比較慚愧沒有做好的。
這幾天我花了一些時間,細緻的總結和分析了《街霸》系列的frame data,這篇文章就作為自己的一個總結,可能格鬥遊戲老玩家已經很熟悉了,但是其中也摻雜了一些我個人的思考,分享給大家。
frame data
我今天想分析的就是《街霸》系列的frame data,相信很多人都聽說過的。frame data簡單來說就是一個攻擊動畫每一幀的詳細資料。一個簡單的背景,一般的格鬥遊戲都是穩定的60幀每秒,也就是說每一幀是1/60秒,也就是約等於0.0167秒。讀者朋友們可以想象一下格鬥遊戲對輸入精度的要求有多麼高了,雖然一般的格鬥遊戲都有一個幾幀的input buffer,但是類似《街霸4》這種對輸入要求極高的遊戲還是有不少one frame link這種很難的操作的,input buffer我們以後再詳細介紹把。
一般來說frame data會包含很多詳細的資料,其中比較重要的就是:start up frames,active frames,recovery frames,hit stun,block stun,on hit,on block,i-frames,cancelling frames,傷害,暈值等等,今天我就稍微介紹一下我認為比較基礎也比較重要的幾個。首先給出解釋frame data最經典的一張gif圖:
《街霸3rd》隆的light punch
無論是輕,中,還是重攻擊,甚至是一些special move,基本都可以拆解成start up,active和recovery三個部分。
start up frames:這是一個攻擊動畫的起手部分,也就是圖中綠色的第1-2幀。在這個階段,一般的格鬥遊戲中,角色都沒有攻擊判定,但是《街霸》系列是有一點點不同的,《街霸》系列的攻擊判定在起手部分的最後一幀已經形成了。
active frames:這是一個攻擊動畫的持續部分,也就是圖中紅色的第2-3幀。在這個階段,如果攻擊方的攻擊判定碰到防禦方的受傷判定,那麼我們稱這個攻擊connect到了。connect到了有兩種結果,第一種是防禦方被打到了,我們稱為on hit,防禦方會播放一個受傷動畫。第二種是防禦方格擋住了,我們稱為on block,防禦方會播放一個格擋動畫。
recovery frames:無論你的攻擊是否connect到了,在active frames之後,攻擊方都會進入一個收招階段,也就是圖中藍色的第4-5幀。在這個階段,你沒有辦法輸入,有些動作遊戲可以讓你cancel到另外一些動作去,但是一般的格鬥遊戲都不會這樣做,因為這是你試探進攻的同時需要付出的代價,對pvp的遊戲來說是非常重要的,可以防止玩家無責任的進攻。
一般來說,對一個攻擊動畫來說,輕的攻擊起手,持續和收招都比較短,重的攻擊起手,持續和收招都比較長。我們也可以很容易的理解,如果一個攻擊起手很短,持續很長,收招很短,那麼這個攻擊一般屬於很強的攻擊。
格鬥遊戲的frame advantage/disadvantage
其實格鬥遊戲的系統核心是一個數字遊戲,更確切的說是一個加減法遊戲。要深入理解為什麼,我們從hit stun和on hit來解釋一下什麼是格鬥遊戲的+和-。
hit stun通俗來說,就是防禦方在被打到之後播放的受傷動畫的長度(一般來說是這樣,實際上還有一些細節,我就不打算在這裡解釋了)。從圖中可以看出,在第2幀,右邊的隆受到了攻擊,從第3幀開始,右邊的隆播放了一個長度為7幀的受傷動畫。這時候我們就說左邊的隆的light punch的hit stun是7幀。
那麼什麼是on hit呢?我先告訴大家結果,左邊的隆的light punch的on hit是+4幀。我們第一次看到了這個讓很多玩家都頭大的加號,其實非常容易理解:左邊的隆從第1幀起手,到第2幀connect到,到第5幀收招,一共用了5幀的時間。右邊的隆從第3幀開始播放了一個長達7幀的受傷動畫。關鍵就在圖中白色的6-9這4幀中:這4幀中左邊的隆是可以行動的,但是右邊的不行,因為右邊的隆還在播放受傷動畫剩下的4幀。這時候我們就說左邊的隆的light punch有+4幀的優勢,因為左邊的隆比對手快4幀。
我們再來看另一種情況,比如作為設計師,我要大大削弱這個light punch的強度,可以如何做呢?我可以極端的把右邊的隆的受傷動畫長度減少到只有1幀。這時候從第3幀開始,右邊的隆播放一個長度僅為1幀的受傷動畫,結果就是第4-5幀這2幀中右邊的隆可以行動了,但是左邊的隆還在收招,這時候我們就說左邊的隆的light punch有-2幀的劣勢,因為左邊的隆比對手慢2幀。
block stun和on block只不過是同樣的道理應用在對手格擋的情況。
結論
今天總結和分享的都是比較基礎的知識,我自己一直以來都沒有認真思考和總結過,在這個系統基礎上,實際上可以變化出很多更精細的系統和玩法,這也就是類似《街霸》系列這種格鬥遊戲的深度所在了。舉幾個簡單的例子,比如counter hit和存在的意義,比如frame trap,meaty attack等等,以後我們有機會再說了。還有有意思的就是i-frames和cancelling frames相關的,我們也以後再分析吧。
從玩家的角度來說,frame data可以讓你提高自己的格鬥遊戲的水平,從開發者的角度來說呢?實際上它可以很好地幫助你理解格鬥遊戲的設計思路和設計細節,也可以讓我們看到格鬥遊戲通過對每一幀的精度控制基本達到了動作遊戲的最高要求,這裡很多知識和思路我們都可以吸收然後應用到動作遊戲中去。
來源:indienova
原地址:https://indienova.com/indie-game-development/street-fighter-frame-data-1/
相關文章
- 談談資料編織(Data Fabric)和資料網格(Data Mesh)的關係
- Frame Grab幀影像匯出工具
- 淺談資料的表格化
- 淺談HBase的資料分佈
- 淺談圖資料庫資料庫
- 談談如何從資料湖(Data Lake)架構轉向資料網格(Data Mesh)架構架構
- 【譯】WebSocket協議第五章——資料幀(Data Framing)Web協議
- 淺談大資料、資料分析、資料探勘的區別!大資料
- 如何使用 pyav 抽取 I-frame (關鍵幀)
- [資料庫] 淺談mysql的serverId/serverUuid資料庫MySqlServerUI
- PHPer 淺談 Python 的資料結構PHPPython資料結構
- 淺談 Redis 資料結構Redis資料結構
- 淺談資料庫事務資料庫
- 淺談:HTTP 2.0 的二進位制幀、流、多路複用HTTP
- 淺談資料倉儲和大資料大資料
- 談談網路協議 - 資料鏈路層( Data Link)協議
- 資料庫的日常管理經驗淺談資料庫
- 淺談資料備份的幾種方案
- 談一談資料管理的格局
- 【資料結構】淺談主席樹資料結構
- 資料庫:淺談DML、DDL、DCL的區別資料庫
- 淺談 Checkbox Group 的雙向資料繫結
- 談一談資料探勘的軍規
- 淺談redux(一)Redux
- 淺談前端MOCK資料工具比較前端Mock
- 淺談hdfs架構與資料流架構
- MySql的資料儲存之B+樹(淺談)MySql
- 淺談怎樣保住資料最後的貞操
- [Redis] 淺談Redis內的幾種資料型別Redis資料型別
- 淺談線下場景中的資料分析思路
- 談一談常見的資料治理怪象
- WiFi基礎(五):802.11幀結構與WiFi控制幀、管理幀、資料幀WiFi
- 淺談資料結構最佳化DP資料結構
- 淺談資料倉儲質量管理流程
- 淺談JDBC和資料庫連線池JDBC資料庫
- 淺談 React Hooks(一)ReactHook
- 淺談堆-Heap(一)
- 淺談資料庫發展史和 OceanBase 的誕生資料庫