馬林初
電子游戲是繼繪畫、雕刻、建筑、音樂、詩歌(文學)、舞蹈、戲劇、電影等八大藝術形式之后被人們公認的“第九藝術”,是當今最受人們歡迎的休閑娛樂方式之一。
電子游戲是門年輕的藝術形式,所以需要不斷地吸取其他藝術形式所積累的精華來不斷進步。例如《戰(zhàn)神4》、《底特律:變人》等強調劇情的游戲,需要應用電影的劇本、分鏡知識;畫面質量高的游戲中,場景的布景、布光等全都是電影行業(yè)的用法;文字類游戲則是應用了詩歌、文學、戲劇等文法技巧。
綜上所述,制作游戲需要的知識系統(tǒng)十分繁雜、精深,這里不做全面討論。本文旨在結合一些動畫知識,令游戲制作更加生動有趣,以起到拋磚引玉的效果。
1.游戲中的狀態(tài)機
1.1狀態(tài)機簡介
從程序角度來講,有限狀態(tài)機(英語:Finite-state machine,F(xiàn)SM),又稱有限狀態(tài)自動機,簡稱狀態(tài)機,是表示有限個狀態(tài)以及在這些狀態(tài)之間的轉移和動作等行為的數(shù)學模型。
基本上所有的軟件都是有限狀態(tài)機。它是一個有向圖,由一組節(jié)點和一組相應的轉移函數(shù)組成。通俗點講,它是一個事件驅動系統(tǒng)的模型,這個模型由有限數(shù)目的狀態(tài),若干輸入和狀態(tài)與狀態(tài)之間轉換的規(guī)則組成。在某一時刻,有一個或一組狀態(tài)是FSM的當前狀態(tài),F(xiàn)SM接收輸入事件并根據(jù)轉換規(guī)則,將當前狀態(tài)轉為新的狀態(tài)。正是由于這三個元素的組合,使得FSM具備了自己的行為特點。在游戲開發(fā)中,F(xiàn)SM被用來實現(xiàn)人工智能的決策過程,控制游戲對象的行為。
但是作為游戲設計者,我們還可以從另一個角度去理解狀態(tài)機。我們在電腦上看視頻的時候,可以點擊播放鍵播放視頻,可以點擊暫停鍵暫停視頻,除此之外還有快進、慢放等等功能各異的按鍵。
游戲中狀態(tài)機的作用也是一樣的,你可以把一個個狀態(tài)理解成一個個播放器上的按鍵,當我們觸發(fā)某種條件時,動畫就會播放。
1.2狀態(tài)機的應用
引擎里的這個界面描述的就是狀態(tài)機系統(tǒng)。其中的每個節(jié)點都代表一個狀態(tài),觸發(fā)條件就會播放相應動畫,而箭頭連接一般都是雙向的,便于靈活切換狀態(tài),并且都會回到idle(待機狀態(tài)),因為待機狀態(tài)是人物常態(tài),幾乎所有動作都從這里開始,到這里結束。
如果主人公會跳躍、攀爬等,所以狀態(tài)機會更復雜一些。
可以看出,其中所有的走、跑、跳動畫全都是原地進行的,位移都是靠程序計算的:先給出速度,再判斷持續(xù)時間,最后得出位移數(shù)值。
接下來再展現(xiàn)一個帶有戰(zhàn)斗系統(tǒng)的狀態(tài)機,由于這是一個街機格斗類項目,人物除了走跑跳,還涉及到攻擊、受傷、死亡等狀態(tài),所以狀態(tài)機相對比較復雜。
我們來分析一下它的原理。由于我們沒有擊中敵人就不會產(chǎn)生連擊,所以從待機只能切換到第一次攻擊,即Attackl。只有先滿足觸發(fā)Attackl,并且不被打斷,才會有接下來的Attack2、Attack3,待機狀態(tài)則無法直接進入Attack2、Attack3,Attackl、Attack2、Attack3之間是有序的線性關系。而Attack2、Attack3在被中斷的情況下會則返回待機狀態(tài),所以如圖所示,從Attack2、Attack3到待機狀態(tài)都是單向的,Attackl、Attack2、Attack3之間的流程也是單向、不可逆的。
1-3游戲動作制作要點
如引言所述,狀態(tài)機和游戲動作的關系,相當于播放器按鍵之于動畫播放,所以如果動畫沒有制作好,那么再復雜的狀態(tài)機設置及代碼運算都將毫無意義。如何將游戲動作做得活靈活現(xiàn)呢?這就需要借助一些動畫領域的知識了。
1.3.1動畫的壓縮和伸展
當物體受到外力作用時,必然產(chǎn)生形體上的壓縮和伸展。動畫中通常用壓扁和拉長的手法,夸張地表現(xiàn)這種形體改變的程度,利用運動趨勢的反差加強動畫的張力和彈性。
1.3.2準備動作
動作一般分為準備動作和行動動作。準備動作是動作的準備階段,一般情況下它的運動趨勢與行動動作相反,能讓主要動作變得更突出、更有力。在動畫角色做出準備動作時,觀眾能夠以此推測出之后的行動動作。
1.3.3夸張
夸張是動畫的特質,是將角色動作極限化的手段??鋸埧梢宰尳巧那榫w更為飽滿,動作更富戲劇性。但夸張要注意適度,太過的話適得其反,會跳戲。
1.3.4跟隨與重迭
跟隨和重迭是一種重要的動畫表現(xiàn)技法,它使動畫角色的各個動作彼此間產(chǎn)生影響,融混,重迭。移動中的物體或各個部分不會一直同步移動,有些部分先行移動,有些部分隨后跟進,并和先行移動的部分重迭的夸張表演。
跟隨和重迭往往和壓縮和伸展結合在一起運用,能夠生動地表現(xiàn)動畫角色的情趣和真實感。
1.3.5慢進慢出
人體的動作是由肌肉拉伸形成的,所以動作動作的起始都是緩慢平滑的。所以我們在制作人物動作時,要放慢關鍵動作附近的節(jié)奏,加快過程節(jié)奏,這樣既可以讓動作符合人體運動規(guī)律,又能讓動作節(jié)奏豐富多彩?,F(xiàn)實世界中的物體運動,也多呈一個拋物線的加速或減速運動
1.3.6圓弧動作
動畫中物體的運動軌跡,往往表現(xiàn)為圓滑的曲線形式。因此在繪制中間畫時,要以圓滑的曲線設定連接主要畫面的動作,避免以銳角的曲線設定動作,否則會出現(xiàn)生硬、不自然的感覺。不同的運動軌跡,表達不同的角色特征。例如機械類物體的運動軌跡,往往以直線的形式進行,而生命物體的運動軌跡,則呈現(xiàn)圓滑曲線的運動形式。
總結:
綜上所述,游戲制作中狀態(tài)機與游戲動作的關系就像兩個緊緊咬合的齒輪,聯(lián)系非常緊密,缺一不可。如果狀態(tài)機設計非常完善,游戲動作不好看,那么整個游戲作品的節(jié)奏都會受到很大影響,角色生命力也會減弱;反之,則會讓動畫在不合時宜的時候出現(xiàn),動畫做得再好也會有種強烈的違和感。
只有這兩個模塊都設計好,并且讓它們有機地進行配合,才會讓游戲更加有生命力。