遊戲開發技術科普:遊戲中的角色是如何「動」起來的?

2020-11-29 GameRes遊資網

以下文章來源於遊戲開發那些事 ,作者Jerish

遊戲開發那些事聊聊一隻遊戲程序猿的日常,分享各種牛逼or不牛逼的遊戲開發技術

從紅白機時代的超級瑪麗,到PC時代CS裡面的反恐精英,再到如今主機上栩栩如生的「荒野大鏢客」。隨著技術的進步,遊戲中的這些角色,在移動的表現上愈加真實。

我們會想,為什麼有些遊戲中的人物,移動起來非常不自然?而有些製作精良的遊戲裡,每個角色動起來都栩栩如生。這些角色是如何在我們遊戲世界中移動的呢?今天這篇文章就會簡單的給大家分享一下,遊戲角色在遊戲世界中的移動原理。

遊戲世界

- 真實世界的複製版-

談到移動,首先不得不談一下我們遊戲中的世界。遊戲世界分為2D世界和3D世界,不妨先從3D遊戲的世界說起。3D遊戲世界是一個三維立體世界,和我們和現實中的世界相似,我們遊戲中的所有角色,都會在這個三維的世界裡面出生、移動、交互直至死亡。除了角色以外,遊戲中的其他對象也是如此產生的,比如說建築、武器、道具等等。他們身上都保存著自己的坐標位置,當我們在移動我們的角色的時,其實就是在不斷的修改當前角色的坐標值。

對於2D遊戲,原理要簡單很多,所有物體都存在於一個平面世界,他們的移動也只是改變其X,Y兩個坐標軸而已。

移動效果 ≠ 動畫效果

- 有動作不代表有位移-

現在,讓我們再把焦點放在角色的移動上。這裡先拋出一個問題,當我們看見一個角色在奔跑時,他真的是在移動麼?

很多人可能會說這不是理所當然的麼?難道還能原地跑麼?沒錯,遊戲中的角色還真就可能是原地奔跑。事實上一個角色的移動和你看見他做什麼動作是沒有直接關係的。因為在遊戲裡面,移動表現「不等於」動畫表現。不妨看一下下面這張圖

圖中的這個角色一直在播放移動的動畫,但是並沒有產生一丁點的位移,因為沒有任何邏輯去修改這個角色的位置。

動畫

- 像拍電影一樣把動作連起來 -

說到這裡,我們引出了一個新的遊戲概念——動畫,那麼如何理解遊戲中的動畫?為什麼播放動畫不會修改玩家坐標呢?

所謂動畫,其實就是角色行為的一種表現方式,和電影或者動漫一樣,將一個對象在一段時間內的動作記錄並播放,就是一個完整的動畫。遊戲中針對每個角色都需要美術去單獨的為其製作很多段動畫,導入到遊戲引擎中進行混合與切換,最後實現遊戲中的效果。比如說,角色在跑步時有跑步的動畫,跳起來會有跳躍的動畫,戰鬥會播放戰鬥的動畫,這些都是不同的動畫片段,需要美術們去提前製作。

動畫其實也是分為2D動畫與3D動畫的,以前的遊戲都是2D遊戲,本質上和我們小時候看的小人書一樣,給一個角色創建多張圖片,每張上的圖片都有著不同的動作,將這些圖片連在一起播放就是一個2D動畫。

不過與2D動畫將每一幀的畫面記錄下來不同,3D動畫記錄的角色的3D坐標數據。目前的3D動畫實現方式都是由骨骼+蒙皮來做的,也就是說其實我們的每一個角色身上會有一些骨骼,當我們執行某個動畫時對應的這些骨骼位置就會發生變化,然後再驅動這個骨骼的「蒙皮」(可以認為我們玩家的皮膚)變化。比如說,一個玩家把手舉起來的時候,我們手臂對應的骨骼就會動起來然後包裹著他外面的皮膚也會隨之移動,這樣你就能看到一個真正的動畫了。那麼為什麼他執行動畫的時候不會移動呢?因為所有的動畫默認都是相對他自身變化的,相對遊戲世界他就是原地靜止的。(其實也可以做到相對世界發生變化,這個概念叫RootMotion,在後面的文章裡面會進一步講解)

我們的角色在播放移動動畫的時候,其實就是一個循環的動畫,你可以看到這個角色的兩個腿在不停的走動,手臂也在不停的擺動,但是它只是在不斷的播放一個動畫。只要處理好動畫的開頭與結尾就能很好的表現出角色的移動。

移動

- 有「人」暗中操作 -

了解了動畫與移動的關係,我們現在就知道驅動角色移動的其實另有其人。不過這個「人」是誰呢?其實這個「人」是誰並不重要,任何一個能做這個工作的對象都可以成為這個「人」,你把它交給地上的一塊石頭去處理也是可以的。在代碼裡面,我們可以隨意抽象出來一個「移動控制者」,他的工作就是控制角色如何在遊戲世界裡面移動。

現在假如我們給他一點點移動速度(比如每秒0.1m),如果這時候他的動畫時邁開步子瘋狂地跑的話,就會發現動畫與速度是不匹配的。同理,如果把動畫調成走路的樣子,而速度改為10m/秒,就會發現他一步還沒邁出去就已經滑到對面牆上了,這就是我們平時所說的滑步現象(不過沒這麼誇張),也是很多遊戲裡面看起表現很差的原因。只有將速度與動畫完全匹配,才能讓遊戲角色移動看起來非常自然。

當然,真實的情況可能要比這個還要複雜很多。我們的角色在一開始可能還正在緩慢的行走,不一會兒之後就突然開始加速跑了起來。為了模擬真實世界中的移動的樣子,我們需要對他的這個移動的過程要做各種精確的模擬,比如說行走、奔跑、甚至是遊泳、飛行,不同的狀態需要以不同的方式去模擬。對於更加真實的遊戲,我們還應該把物理也考慮進去,重力、摩擦力、阻力等等都會影響角色的移動,不過任你怎麼複雜核心就是兩點——速度與加速度。一般來說,包含了上面這些邏輯的模塊我們可以稱之為移動系統。同時,由於我們的速度發生變化,還需要動態的修改對應的動畫,這個匹配的處理以及播放的邏輯所在的模塊我們稱為動畫系統。如果說,角色的移動是通過你的鍵盤按鍵觸發,那還會涉及到一個輸入系統,輸入系統會根據你的按鍵時長轉換成對應的移動速度或者是加速度,具體的轉換方式要看遊戲的設計邏輯。

到目前為止,如果你認識到了移動表現=動畫系統+移動系統,你已經基本理解了遊戲角色的移動原理了。現在,不妨再稍微拓展一些。一般美術在製作動畫時只會製作走路的動畫以及奔跑的動畫,他不會製作一個0.5/m的走路動畫然後又製作一個0.6m/s的走路動畫,如果每個速度都要做一個動畫的話美術肯定要累死。那遊戲中的玩家,在走路和奔跑切換時該怎麼處理呢?答案就是把奔跑動畫與行走動畫進行融合,根據速度的不同,去混合這兩種動畫,我們可以稱之為blend space,參考下面的圖片。

對於遊戲質量比較高的3A大作,他們的動畫遠遠不只這麼簡單,除了有基本的走的動畫,還有各種方向的轉身動畫,包括左轉和右轉,斜著轉,總之各個方向都有一個動畫,然後通過很多動畫的融合,才能達到一個非常流暢的一個表現效果。而且,移動系統的邏輯也需要模擬的非常精確,來和這些動畫達到完美的匹配。

移動同步

- 告訴他你在哪 -

最後,我們再來簡單談談移動的同步。當我們在玩網路遊戲時,你會在你的顯示器上面看到多個其他的玩家並且可以看到他們在移動,那這個過程中他是怎麼樣做的呢?這在遊戲設計中有一個專有名詞,叫做網絡同步,網絡同步是遊戲領域裡一塊非常重要也很複雜的一個功能。簡單來說,當其他玩家在移動的時候,他需要把他的坐標實時的通過網絡發送到你的客戶端,你就可以看到他在你的客戶端上移動。在遊戲開發中,發送的頻率,發送的內容以及發送方式的不同的都會影響到遊戲的具體表現,我在下一篇文章裡會詳細的分析虛幻引擎裡面的移動組件是如何處理的。

相關焦點

  • 3A遊戲的必備工藝!天美是如何將動作捕捉運用到遊戲中的?
    在這款皮膚的製作過程中,我們對越劇名家茅威濤進行動作捕捉,讓「徒弟」上官婉兒在遊戲內原汁原味地表演出越劇的身段動作。實際上,自2009年起,我們就開始使用動作捕捉技術來製作遊戲。從端遊時代的《御龍在天》《逆戰》到手遊時代的《穿越火線:槍戰王者》《使命召喚手遊》,這項技術正在越來越多地應用於天美遊戲的開發當中。
  • 從咕嚕到隔空取物 動作捕捉技術讓遊戲超乎想像
    或許這個角色的扮演者——安迪-瑟金斯更值得去關注。這個漫威宇宙的反派角色是安迪-瑟金斯少見的真人出鏡的表演角色之一,他過往所參與的演出基本上都是採用動作捕捉技術+虛擬角色的模式,比如《指環王》中的咕嚕,《猩球崛起》中的凱撒,有「全球動作捕捉第一人」的美稱。從誕生至今,動作捕捉已經成為電影製作中必不可少的技術手段,成為真實化虛擬角色的重要「推手」。
  • 暗黑3遊戲科普第一期:遊戲內容與發展現狀介紹
    無論你是第一次聽到國服到來的消息,想來嘗試一下的新手還是之前接觸過外服,想回歸的老玩家,你一定會疑惑暗黑3究竟是一款怎樣的遊戲,或是暗黑3現在發展如何了呢?在國服技術測試開始之前,凱恩之角為所有暗黑玩家帶來遊戲大型科普系列。如果你有興趣搶先了解遊戲內容,那麼你絕對不能錯過。 在開始前,先問問自己「你對暗黑破壞神3了解多少」?如果你曾經玩過,那麼你可以直接從這裡閱讀。
  • 聊聊半衰期-艾利克斯:如何開發一款優秀VR遊戲
    前面說了,現在的VR遊戲由於還處於一個比較初級的階段,還受到很多技術上的限制,數據延遲、暈動症、畫面清晰度等等。必然導致遊戲整個體驗和傳統遊戲上的體驗是不一樣的,比如如果戰鬥節奏過快,玩家在遊戲中可能很快就會引起身體不適。這就是為什麼艾利克斯裡面的敵人實際上都非常弱雞,那為什麼玩起來卻不會讓人覺得乏味呢?
  • 叢林法則遊戲新手攻略 遊戲角色介紹
    叢林法則已經正式上線,那麼這個遊戲怎麼玩呢?相信很多玩家都不是很清楚,接下來就跟18183小編一起來看看遊戲裡的角色都有哪些吧!
  • 3D遊戲角色的製作過程
    次世代角色模型製作流程一般是:3Dmax建中模-ZB雕刻高模-maya拓撲低模-mayaUV拆分-toolbag或SP烘焙貼圖-SP繪製材質。中模能儘快的將原畫中的角色的體型、輪廓描述出來。一般在次世代遊戲製作中,中模完成後會進行高模製作,高模是指高細節,高精度的3D模型,看上去十分逼真細節非常豐富模型的面數也相當的高。
  • 國產性教育遊戲:玩遊戲的同時 學習「硬核」性科普
    遊戲名則是「自我信賴」的諧音,他們想傳達「角色命運靠自己的選擇」。身為遊戲愛好者,翁安志從其他遊戲中獲得靈感——用真人拍攝的視頻作為遊戲內容,隨著玩家在遊戲中作出的不同選擇,展開不同的劇情,加強玩家代入感,營造和主角一起成長的氛圍。
  • 打著遊戲學科學 科普可以「玩」著做
    科普遊戲是指以科普為目的、以網際網路為數據傳輸介質,參與用戶可以從中獲得科學知識、科學思想、科學方法和科學精神的遊戲。一方面,它以科普為目的,內容具有科學性、知識性及教育性。另一方面,它以遊戲為表現形式,具有較強的娛樂性和趣味性,對用戶富有吸引力,在娛樂的過程中潛移默化地發揮科普功能。
  • 【Unity3D開發小遊戲】《跑酷小遊戲》Unity開發教程
    一、前言最近跑酷遊戲比較流行,開發教程也很多,但是大部分都是不太詳細,這篇文章就帶著大家一步一步開發出來一個跑酷類的遊戲,教程比較基礎,適合大部分
  • 美媒:希拉蕊是《權力的遊戲》中哪個角色?
    參考消息網4月14日報導 美國《今日美國報》網站4月12日刊登凱茜·揚撰寫的一篇報導,題為《希拉蕊是<權力的遊戲>中的哪個角色?》,全文如下:如果希拉蕊·柯林頓12日晚在HBO有線電視公司的電視劇《權力的遊戲》中競逐鐵王座,她會是哪個角色?
  • 遊戲的下一個突破點,很可能是AI
    隨著玩家對遊戲品質的逐漸提升,遊戲的製作成本上升明顯,為了降低和控制成本,自動化生產工具越來越重要。其中角色的面部模型、面部動畫和身體動畫的製作成本比重最大。為此網易互娛AI Lab開發了針對面部動畫自動化生產的AIxFace面部動捕技術方案,和針對身體動畫的AIxPose視頻動捕技術方案以及AIxDance音樂舞蹈合成技術。
  • 編程遊戲開發:如何開發製作一款遊戲?你需要做哪些準備?
    關於遊戲開發,需要對從一開始到最後開發一款遊戲的一般過程有所了解。一般不是一個完整的,一步一步的指導完成的結果。你還需要自己找出相當多的東西才能有一個遊戲。
  • 一個VR遊戲DEMO的開發歷程是怎樣的?
    在一片觥籌交錯中,真正在開發VR內容的團隊其實是挺屈指可數的,這期間有錢有實力的大公司可能在觀望、等摘果。我覺得這是個正確的選擇,你讓大公司創作可能還真創作不出什麼東西來。具備技術實力的遊戲公司在專注於如何賣更多的裝備。
  • 遊戲王決鬥連結日服如何連接?角色如何解鎖?
    不少小夥伴童年都被卡牌對戰動漫《遊戲王》吸引過,購買過卡牌和玩伴一起戰鬥過。長大後,終於等來konami的正版手遊《遊戲王決鬥連結》。雖然現在只有國際服、日服,但只要想玩,辦法還是有的。遊戲王決鬥連結日服如何連接?
  • Capcom動作遊戲《洛克人OL》公開兩個人氣角色
    【178及原作者版權所有 歡迎轉載請註明出處及作者】  6月3日最新消息,日本Capcom與韓國遊戲公司Neowizgames共同參與開發的3D動作遊戲《Rockman Online》(暫譯:洛克人OL)首次公布了遊戲角色海報
  • 遊戲角色背後的故事
    有那麼一些遊戲角色,在創建的時候設計師會以現實人物的原型為設計靈感。使得這些遊戲角色成為了小小的彩蛋。而這些角色不單單承載了NPC這麼一個簡單的稱號,而是設計師對於遊戲角色賦予的某種意義,更是記錄了遊戲廠商與玩家們之間的故事。今天,小弟就帶大家來看看,遊戲角色名字背後的那些事。
  • 【技術分享】Maya製作遊戲中頭髮貼圖
    【技術分享】Maya製作遊戲中頭髮貼圖 2018-06-06 12:44  3AGames遊戲
  • 如何製造一個簡單的2D遊戲?
    前言本文主要介紹的是我在參加學校工作室考核(是的)時開發一個簡單的2D橫板跳躍遊戲時的一些思路和開發記錄,如果你對遊戲開發比較感興趣並且想成為一個遊戲開發者的話,這篇文章或許對你會有一些幫助!如果你是一個遊戲開發者的話歡迎來和我交流:D!
  • 2020年最期待遊戲盤點,這些遊戲你不容錯過|ps4|遊戲|角色扮演遊戲...
    這一年中既問世了許多製作精良的3A大作,也湧現出不少品質優秀的獨立遊戲。那麼在即將到來的2020年裡,又將有哪些我們不容錯過的好遊戲呢?我為大家總結了一些明年確定發售或者推測將會發售的好遊戲們,如果還沒有關注相關消息的朋友們不妨看看這份總結,說不定會獲得超出預期的意外之喜呢?
  • 《金色琴弦Octave》遊戲背景介紹 角色扮演類遊戲
    導 讀 《金色琴弦Octave》是由KOEI TECMO GAMES開發的一款角色扮演類遊戲,在遊戲中將讓《金色琴弦》系列22位的攻略對象角色登場。