教你用c++代码制作:仙剑奇侠传,火爆人气!
仙劍奇俠傳是中國最為經典的武俠PRG游戲了,跌宕起伏的劇情,深入人心的人設,精心制作的畫面。可以說是傳承了一代人的青春記憶。
下面是小編整理好的一套C/C++資料,加小編C/C++學習群825414254,獲取系統性學習C/C++的學習資料
2017年5月23日,仙劍奇俠傳7正式立項,并采用虛幻4引擎(UE4)制作。意圖給廣大仙劍迷打造一部畫面更加震撼,運行更為流暢的作品。
炫酷的戰斗場面,栩栩如生的人物形象,都是用C++編寫腳本,應用動畫系統實現的。
因為C++效率高、方便底層交互,所以目前能勝任大型3D游戲編寫的編程語言只有C++,那么我們就來聊一聊如何用C++實現人物的動畫效果。
一些游戲引擎會采用最簡單的直播動畫的形式(如Unity的Animation方案)僅支持簡單動畫播放和CrossFade;一些引擎會采用更高級的動畫方案。
具備動畫狀態機和混合樹的方案在如今基本是標配,但是不同引擎的實現也會有功能上的差別,例如Unity的Mecanim系統采用的是假的層次狀態機和功能簡單混合樹(無法插入功能性節點)
△仙劍5和仙劍6皆采用U3D編寫
而UE4的Animation Blueprint就高級很多,可以在混合樹插入很多功能性節點(如IK),同時讓可視化腳本能夠很方便地控制動畫行為。
△仙劍7用虛幻4制作
骨骼動畫的想法來源于人體骨骼。例如說,人的上肢所有肌肉和皮膚都受上肢骨胳的影響,而人的踝關節則分別承受小腿骨胳和腳骨的影響。
這個概念的本質上是記錄了以樹形結構存儲的一系列對象的位置、旋轉、縮放隨著時間變化的動態,其中的每一個對象就是一根骨骼。
在游戲引擎中,骨骼動畫通常以兩個形態存在,原始數據和轉換后數據:
原始數據儲存了最適合用戶進行動畫編輯制作的數據,比如3DMax導出的FBX格式動畫,或是Unity中使用動畫編輯工具制作的動畫。這類數據格式簡單,并且不做壓縮,比如使用單獨的Track來儲存位移、旋轉、縮放的XYZ三個通道。原始數據可以直接用于編輯和播放,但是內存開銷和CPU開銷通常較大,所以一般不這么做。
△仙劍五中的一個3D模型
轉換后數據儲存了對原始數據進行加工后的版本,通常在游戲引擎的導入資源階段會進行數據轉換處理。轉換后的動畫數據通常經過壓縮,使其內存開銷和CPU開銷降低。轉換后數據可以直接用于動畫播放。
動畫的播放,根本上來說就是依照時間對動畫進行采樣,將Pose等采樣結果輸出。因而,要想對動畫進行播放,我們首先得定義動畫的采樣結果。
動畫的采樣結果包含如下幾個部分的信息:
Pose信息
RootMotion信息
動畫播放狀態
Rig標識
RootMotion從字面上來說,就是“根節點的運動”,事實上它表示的是動畫驅動游戲對象運動。
不同的動畫系統對于RootMotion的實現方式略有不同:Unity引擎通過分析人體骨骼動畫來計算角色的運動,UE4采用角色根骨骼運動作為角色運動參考,Morpheme采用額外的Trajectory骨骼來作為角色運動的參考。
△動畫系統處理后的默認動畫圖
只有默認動畫是沒有什么實際用途的,還需要編寫一段腳本來控制人物切換動畫。
讓我們看一下效果圖
(1)
(2)
(3)
(4)
以上就是運用C++實現人物的行走,打斗,技能釋放等等動畫效果的一些基本知識了,不得不說,仙劍奇俠傳作為一部火了十幾年的經典游戲,其制作思路和制作方法都非常值得當今的游戲開發者借鑒和學習的。
當然,制作仙劍奇俠傳這樣的大型游戲需要有相當深厚的C++功底,對于初學者而言,大型3D游戲太過晦澀高深,直接去編寫這種高難度的肯定不是一個合理的選擇。
就像我們常說的不能一口吃成個胖子,當我們還只會走的時候,就應該努力把每一步踏的堅實,這樣才能在以后的路上健步如飛。
我們可以從一些相對簡單的游戲做起,2048就是一款十分風靡的益智類小游戲。
在編寫過程中,我們會運用到數組、界面處理、AI算法等相關知識,能夠讓初學編程的人在游戲中就能夠練習到C++語言的知識,讓學習變得更有意思和趣味。
總結
以上是生活随笔為你收集整理的教你用c++代码制作:仙剑奇侠传,火爆人气!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取学校教务管理系统_pyt
- 下一篇: GBase xdm查询条件要求