開源遊戲引擎體驗,開源引擎體驗
應該說每個做遊戲的人都會有一個自己寫遊戲引擎的夢。趁著還沒有到新公司報道,花點時間研究一下開源引擎,梳理一下自己的思路。
新的遊戲引擎是基於cocos2d-x,我希望能夠從這些開源引擎中學到:
1、粒子系統、粒子編輯器。cocos2d-x的粒子系統相當薄弱,不是說沒有,但是想用他做出酷炫的技能特效是非常困難的一件事。很多人都有做cocos2d-x的粒子編輯器,但是在我看來,粒子系統本身薄弱了,編輯器最終也就變成了一個參數編輯和效果預覽的工具。
2、模型載入和骨骼動畫播放。研究一下換裝系統需要哪些支援,順便看看能不能實現Unity的動畫重新導向功能。
3、聲音引擎。看看能不能找到類似開源的FmodEx的聲音引擎。
4、研究下編輯器架構如何設計和搭建
5、Box2D和PhysicX的物理系統如何封裝
一、Genesis-3D(www.genesis-3d.com.cn)
搜狐暢遊耗資千萬美金,開源的3D遊戲引擎,可以支援發布到PC、Android、iOS平台。
在分析第一印象的優劣之前我先說下,UDK、UE4、Source、Quake、Doom什麼的代碼是有的,但是暫時不打算看了,因為太高大上或者技術向的代碼我害怕Hold不住,我關注的是如何改進生產流程,而不是學習什麼進階技巧。而且我現在最需要的是基礎設施,而不是什麼東西都有後要做的更好。
優點是編輯器完整,架構清晰(還沒看代碼,只是從使用上來看),我想要的那些基礎設施也都在。檔案和資源系統沒有像Unity一樣打包在一起,這點我是很喜歡的。粒子系統配置什麼的都是xml檔案,參考學習起來比較方便。粒子系統很美,跟Unity差不多,如果能直接拿來用就好了。可以說如果早個三五年推出應該是非常有競爭力的產品。
缺點是:
1、不能直接在編輯器裡面運行遊戲,只能預覽靜態情境。代碼他們似乎是通過自己修改的Mono來實現直接編譯的功能,直接改動代碼不會需要重新發布版本。但是資源的修改似乎就麻煩了。從這點來看,Unity更偏向All in one的編輯器,一切都在編輯器裡面操作測試完畢,最後需要的時候再發布版本。而Genesis3D更偏向一個公司的商業引擎,美術程式分開工作,需要的時候把資源整合,發布個可用的版本,然後繼續測試開發。 雖然我認為這個是缺點,但是說實話我個人還是傾向於Genesis3D的方式的。因為我感覺只要生產流程清晰了,那麼是不是有一個All in one的編輯器不那麼重要,甚至沒有編輯器也OK。只要對應開發的終端有合適的工具就可以了。 Genesis3D會讓我感覺自己更像程式開發人員,而不是全包全攬的獨立遊戲開發人員。
2、各方面都很像Unity。且不管是不是坊間傳聞的買了Untiy的代碼然後自己改的。我只能說是一個山寨的Unity1.0版本。代碼設計上孰優孰劣更多的是個人喜好,但是編輯器上看很多地方做的都不如Unity方便。還是那句話,如果不跟Unity比,那麼看起來很美,但是一比就山寨了。
3、編輯器能擴充不? 我在教程裡面沒有看到,暫時認為沒有吧。 Unity最大的魅力是可以自訂編輯器內容。 以此衍生出很多非常有魅力的外掛程式,比如一些行為樹AI外掛程式、2D骨骼動畫外掛程式,這些外掛程式跟Unity結合在一起大大的豐富了引擎本身的功能。 否則的話光靠自己是很難滿足使用者需求的,即便開源也不行。
4、待續。我相信真正使用起來會有很多值得吐槽的敵方,但是如果是像我一樣的初學者來學習的話,還是能夠收穫很多東西。
二、Godot (http://www.godotengine.org/wp/)
又一個跟Unity長得很像的遊戲引擎。依然在開發中,感覺設計上越到後面在細節上跟Unity越像。 當然跟Genesis3D比還是能夠明顯感到一個是山寨者,一個是模仿者。 你一拿到這個引擎絕對不會說這貨就是一個Unity,但是在使用的過程中你會發現一個又一個熟悉的功能和操作方式,這個我感覺是相當聰明的做法。總體感覺是偏2D偏小遊戲的方向,但是麻雀雖小五髒俱全,UI、粒子、物理都不會少。 最大的問題似乎是沒有代表性的遊戲產品,這個在某種程度上說就意味著失敗。 其實所有遊戲引擎都是一樣的,需要成功的產品來撐場面。 像cocos2d-x一樣,時不時宣傳一下“蘋果暢銷榜上面九成遊戲都是cocos做的,最火的我叫mt也是cocos做的”,這樣用的人會越來越多,有很多東西並不是本身有多好,而是用的人多了影響了整體的審美,自然就變成所謂的“結構漂亮、簡單易學”。
仔細看了看遊戲的Demo,感覺非常喜歡這個引擎。首先我要說一下,一個引擎要想被使用者接受和學習,豐富而又清晰的Demo必不可少,它一方面是展現了遊戲的功能,比如cocos2d就把所有的功能列舉出來了,另一方面也可以當作測試案例,最後它也是使用者的學習教程。
先說優點,2D/3D部分處理的都相對完整。而且Demo中展示了很多2D和3D相結合的部分,以及3D UI,這些對我而言都是非常有吸引力的。看了看作者的開發路線,後面會支援2D骨骼動畫,導航尋路等功能,可以說這個引擎在做2D遊戲或2.5D遊戲上還是非常不錯的選擇。
再說缺點:
1、編輯器操作起來不是非常方便。
2、使用自己的GDScript語言。 這個我是不太贊同的,我詳細說下我的看法。 作者分析了現有語言的優劣,然後決定自己開發一套指令碼。比如lua、python如果用匯出的方式會很麻煩,而且會大於現在GDScript的核心。 c++當然是編譯語言,開發不方便。 c#則是因為開源協議(Mono是LGPL)所以被放棄了。 但是在我看來,即便捨棄或者相容一些東西,使用lua、python、javascript的意義也要大於自己開發一套指令碼語言。 且不說自己開發意味著大量的時間和精力投入,使用者會有一個學習的過程。就拿lua來說,掌握文法來寫代碼的確可以一兩天就搞定,但是寫出漂亮的高效的代碼或者代碼量大了如何正確的維護代碼都不是一天兩天能搞定的事情,這需要經驗的積累。而自己開發的指令碼語言對開發人員來說就意味著學習成本,誠然它很簡單可以半天上手,但是後面會遇到什麼樣的坑就說不準了。 再說,lua和javascript都有jit,在android平台可以極大的提升運行效率,而這個也是自己開發指令碼所不具備的。
(未完待續)
三、Torque3D (http://www.garagegames.com/products/torque-3d/)
(未完待續)
四、Torque2D (http://www.garagegames.com/products/torque-2d-1.8)
除了編輯器架構和指令碼,似乎Torque2D和3D沒有什麼直接聯絡。一樣是功能該有的都有,但是我感覺這個引擎最致命的問題就是像UDK一樣自己搞一套指令碼,如果直接用現成的指令碼語言,比如python、lua、javascript,那麼會更容易把引擎推廣出去。
(未完待續)
以上四個是我現在找到的編輯器完整的開源遊戲引擎。現在在我看來,編輯器與否並不是很重要。 某些編輯器是必不可少的,比如UI編輯器、粒子編輯器、情境編輯器,但是並不一定需要一個大而全的所見即所得 (WYSIWYG)編輯器。 很多時候清晰的開發流程更加重要,美術用3DMax製作並匯出模型,策劃在情境編輯器中使用和測試這些資源,程式完成功能的開發。 只要每個人都善用工具來解決自己的問題就可以了。 而且很多時候,從接受程度上來說,你給美術一個粒子編輯器要比給美術Unity然後告訴他只需要關注其中的粒子系統部分要高。
什遊戲引擎免費開源
這些可以啊,推薦OGRE。大名鼎鼎的天龍八部這遊戲就是OGRE做的。開源,免費。
開源3D遊戲引擎源碼
*****
*****OGRE,全稱Object-Oriented Graphics Rendering Engine,官方網站:www.ogre3d.org/
*****
*****OSG,全稱OpenSceneGraph,官方網站:www.openscenegraph.org/projects/osg
*****
*****作為3D引擎它們的功能都非常齊全,而且相對容易上手,這兩個引擎我都研究過一段時間,以後可以多交流。最大差別是前者同時支援Direct3D和OpenGL,而後者只支援OpenGL。在官方網站裡面,原始碼、sdk、samples(開發範例)、wiki(協助)、manual應有盡有,開源就是好啊!
參考資料:分享是一件非常愉快的事情