1.關於遊戲中劇情動畫CG的實現,有多種方式實現,這裏我指出在以前的項目中我實現CG的一種方法。編輯器
2.多種實現方式的簡述:ide
a.使用預先製做好的動畫Video文件,經過引擎接口,以流媒體的方式播放,就比如是內置電影同樣。 好比:有story1.rmvb格式的動畫文件,經過接口engine.playCG("story1", onStop)播放,其中onStop函數爲播放結束時回調函數。 這種作法的優點是能夠事先離屏渲染出及其精美的CG動畫,劣勢是玩家看到如此精美的CG可是實際遊戲畫面有很大落差會以爲遊戲不夠誠意,還有就是這種方法太過死板,CG過程當中沒法和玩家交互或者是沒法根據遊戲中的當前狀態而有所變化。 b.在遊戲場景編輯器中提供CG工具,編輯CG的鏡頭曲線,和CG中的遊戲中靜態物體的生成和消失。這種作法將CG動畫保存爲引擎中可以理解的一系列事件,好比鏡頭的移動,場景中的物體的生成等。 其格式好比: [camera curve time]-表示攝像機在time中按照curve曲線移動 [obj1 time1 obj2 time2 ...]-表示場景中obj1的物體(能夠是骨骼動畫,聲音,特效等)的生命期爲time1 這種作法屬於內置遊戲渲染,讓玩家看CG時沒有一種切出的感受,表現出場景的必定的變遷。
3.我以前作上家公司遊戲中的CG系統時,使用的是相似於b種方法,其作法是:函數
3-1.將CG編輯器內置在遊戲中,這樣跑客戶端遊戲時能夠將須要CG的地方直接呼出CG編輯器編輯而且預覽當前的播放效果,而且能夠直接內置一些客戶端的與角色和NPC的邏輯放入CG,就像是製做者在這編排一段故事同樣,而且根據角色的選擇(若是須要角色選擇)能夠控制CG走向,這樣作更加偏向遊戲性方面。 3-2.所設計的格式: [time1 camera curve]-表示沒有CG中的選擇分支時,time1時段camera按照curve移動 [time2 obj1 obj2 obj3 ...]-表示沒有CG選擇分支時,time2時段編排的物體,注意由於這裏是直接在遊戲邏輯層,使用的內置CG編輯工具,能夠直接操做NPC和玩家本身或者是當前組隊狀態下的其餘玩家。 [cond1 time3 ...]-表示分支狀況,若是是cond1則跑這條時間線 [cond2 time3 ...]-表示分支狀況,若是是cond2則跑這條 這樣作的好處是更加深刻遊戲的邏輯層,表現出更多的趣味性和故事性,加強遊戲的代入感,方便劇情編輯人員工做。