前往
大廳
主題

【 殤之谷 | Sorrow Valley 】遊戲開發進度 Vol.6 - 可不可以...動一下就好!(二)

麻桑 | 2024-01-23 00:51:43 | 巴幣 102 | 人氣 128


Vol.6 -
可不可以...動一下就好!(二)



摳尼幾哇
過了兩個月麻桑再次出沒了
一隻小小動畫師加業餘遊戲開發者
正在開發名為【 殤之谷 | Sorrow Valley 】3D動作遊戲

做著做著又要過年了
先跟大家說聲新年快樂~
遊戲製作的部分正在如火如荼的進行
已經有差不多10分鐘左右的內容
若是來得及完善關卡流程跟一些操作Bug
打算參加下一次的自製遊戲公會聚
希望能辦在六七月左右
不過還是要看後續進度再決定
若是報名成功會再發一篇公告通知有興趣的各位
還請大家特別留意~

這篇接續角色動態製作的部分
會概略地說明一些碰撞、加速度等等數值設定
還有狀態機、疊加動畫、走跑切換等動畫相關內容
主要圍繞在角色地面操作的基礎建構上
偏向軟體操作與技術分享
若是有任何想交流或延伸討論的環節
非常歡迎大家留言告訴我
那這就開始了~



透過膠囊狀的碰撞( Collision )角色才能操作、與遊戲世界互動

不論是2D還是3D遊戲
在角色可以操作之前
都必須先透過碰撞(Collision)
才能讓角色存在於遊戲世界之中
碰撞可以想像成一個檢測範圍
用來判斷角色在遊戲世界中的狀態
像是否遭到另一個物體觸碰
或是偵測物體之間的距離等等
而碰撞除了基本的方體、球體
還可以是膠囊體或任何自製的形狀

只是膠囊體可以應付多數的人型角色


ᐱ 常見的角色操作屬性:最大加速度( Max Acceleration )、地面摩擦力( Ground Friction )、最高速度( Max Walk Speed )

當碰撞體的形狀確定後
就能把角色的圖像、模型等等放在碰撞體內
接著設定角色的操作屬性
進到關卡中來回測試最適合的數值
其中幾個最常用的數值
像是加速度(Max Acceleration)、
地面摩擦力
(Ground Friction)、最高速度(Max Walk Speed)

只要稍稍調整就會帶來截然不同的操作體驗
就拿地面摩擦力來說
越低的摩擦力地板就越滑
更難精確地操作角色
反之地面摩擦力越高
角色煞車就會越快
可以隨心所欲地控制角色
這邊也分享一個影片
解說《蔚藍》是如何設計優秀的操作

Why Does Celeste Feel So Good to Play?
《蔚藍》透過數值、增加容錯使遊戲玩起來更好


看到這邊可能有人會問了
那角色的動畫呢
角色的動畫到底甚麼時候播放
甚至要怎麼銜接動畫間的過渡
這就要提到另一個重要的概念 - 狀態機( State Machine )
根據維基百科的資料
狀態機又稱做有限狀態機
是表示有限個狀態以及在這些狀態之間的
轉移、動作等行為
的數學計算模型
套用到遊戲設計上來說
就是根據物件當前的屬性
決定物件是否從A狀態轉到B狀態的方式


ᐱ Unreal Engine 4 預設的第三人稱狀態機 ( video by Unreal Engine )

像是角色從待機轉移到跑步的過程
就可以依據跑速、按鍵、按壓時長
等等不同的變量
判斷角色是否可以從待機過渡到跑步動畫
在Unreal Engine中
開發者透過在角色藍圖中套用動畫藍圖
實現狀態機的複雜功能
而且UE還提供了疊加動畫、動畫插槽
等等方便增加動作細節的工具
對於只有美術背景的動作設計師來說
視覺化的操作介面比純code來的好讀
是十分直觀且強大的動作設計系統
這也是我當初在決定遊戲類型後
就打算使用Unreal Engine的原因
至於其他的操作細節
會在後續的更新中一一介紹

--------------------------------

............
基本動作 - 跑步
............

ᐱ 最單純的跑步是對稱的循環動作( video by endlessreference )

最單純的跑步
基本上是一個對稱的循環動作
也就是左右邊各踏步一次
以身體為中線左右鏡射的動作
但在許多遊戲中也可以見到
角色擺出非對稱的姿勢跑步
或是一邊做表演一邊前進的跑步
因此跑步沒辦法像待機做太簡單的分類
但他們背後的邏輯都是一樣的
也就是蹬起+落下


ᐱ 決定最高與最低點的關鍵POSE

當我們知道背後的邏輯
就能運用上一篇所提到的POSE觀念
先決定最高點跟最低點兩張關鍵POSE
接著再根據角色的個性與重量
微調角色滯空跟踏地的時間
滯空時間長會有輕盈、活潑的印象
踏地時間長則是穩重、沉靜的感覺


ᐱ 不同滯空時間與循環時間的跑步動畫

除了滯空跟踏地的時長
完成一個跑步循環的時間
也會影響角色給人的氣質
循環時間短會有機警、靈敏的氛圍
循環時間長則是莊重、自在的感受


等身體的上下位移決定後
再思考對稱的左右踏步就相對輕鬆了
就算不是完全對稱的動作
只要循環的時間、節奏不變
那麼其餘的四肢只需要跟隨上下擺動做表演
依然能做出相應的跑步動作



ᐱ 小跑步與快跑的動畫

【 殤之谷 】
我想呈現角色靈巧又不失穩重的印象
因此不論是小跑步或是快跑
滯空時間都比踏地時間稍長
既不會太輕也不會過於平均
循環時間則是保持緊
傳達角色在未知環境中的些許不安
小跑步也以角色待機POSE為基礎
保持稍微警戒的姿勢
藉此傳達更多個性跟情緒
ᐱ 沒有頭部偏移(左)與頭部偏移(右)的差異

【 殤之谷 】作為一款主打跑酷的動作遊戲
跑步除了要方便銜接其他動作
玩家還得即時感受到方向性與速度感
兩者必須清楚地傳達
玩家才能預測接下來的行動結果
因此在方向性的部分
玩家在轉彎或是朝斜前方移動時
我也試著加上頭部偏斜的效果
讓角色即便還沒轉過身
也能用頭暗示接下來的方向


ᐱ 獲得鏡頭在單位時間內的相對偏移量

具體的執行方式
必須每一幀讀取鏡頭的左右偏移資訊
並用後一幀減前一幀再除以時間

這樣就可以獲得單位時間內的相對偏移量
用這個偏移量就能告訴動畫藍圖
當偏移量介於多少數值之間時
我想要播放哪個特定的動畫


ᐱ 在混和空間中套用偏移量與角色速度

這個方式搭配UE的混合空間( BlendSpace )功能
就能做出無縫銜接的效果
是個增加角色跑步自然細節的小方法


ᐱ 改變循環時間與高度差營造速度感

至於速度感的部分
是單純透過改變小跑步與快跑的循環時間
還有兩者在跑步時的角色高度做出差異
表現不同速度下重心變化的效果


ᐱ 增加起跑蓄力與180度急煞動作細節

到這邊為止已經有基礎的地面移動功能
可以進行移動與加速
也有適合的動畫表達動作
但還有許多的動態細節可以加強
比方說角色從待機轉換到小跑步時
會先有一個下蹲蓄力的過程

做更細一點的話
小跑步跟快跑的蓄力幅度不同
也需要做另一個強化版的蓄力

再來
從跑步結束到待機間也可以增加過渡
同樣也是小跑步、快跑各一個版本
其他還像是不同陡坡上的跑步姿勢
180度轉彎急煞接小跑步或快跑
陡坡上的起跑蓄力、煞車
就算這些做完了
還可以再細分角色是左腳還是右腳先踏
煞車時是左腳停還是右腳停
如果再算上其他跳躍、投擲動作的銜接
那上百個動作檔是跑不掉了
考量到我只有一個人
這些細節只能等遊戲真的快做完
再回過頭來一個個補上吧(哭
最後放上一個王國之淚的動作拆解影片給大家看看
讓各位體驗動畫師的辛勞

Link has more animations than you think
拆解《薩爾達傳說:王國之淚》的locomotion


......


ᐱ 預估要製作而且多到哭的動態清單

這次也是嘮嘮叨叨講了一大堆,畢竟在動作遊戲中動作就是很重要的環節,動作的表現力跟精緻度會大大影響遊玩的體驗,老實說真的很想每個動作跟細節都仔細做好,最一開始甚至想讓角色跟著故事進展,可以從不安膽怯地行動,成長為散發自信的運動方式,但要做完那麼大量的動態遊戲反而要做不完了,只好適可而止,何況還有一堆關卡設計、場景美術的部分夠忙了,真的好希望能夠全職做遊戲啊~~~

這篇就先點到為止,接下來的動作分享應該就是跳躍或衝刺了,跳躍也是有很多部分可以細分研究,如果有想要知道的細節或內容,都歡迎留言或私訊我,也可以追蹤我的twitter看最新的製作過程跟碎碎念,那麼以上~我們下次見~

創作回應

更多創作