开源游戏引擎体验
???????應該說每個做游戲的人都會有一個自己寫游戲引擎的夢。趁著還沒有到新公司報道,花點時間研究一下開源引擎,梳理一下自己的思路。
?????? 新的游戲引擎是基于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/)
???????Torque有豐富的編輯器內容,而且有點像Quake一樣,游戲就是編輯器。在地形編輯上面額外多了水流、道路編輯的功能。但總體來說這個引擎沒有太多值得學習和參考的東西。絕大多數功能都是通過腳本來實現,編輯器只包含最基本的編輯功能。而且腳本也是自己開發的一套語言。框架不能說詭異,但是怎么看怎么不舒服。
四、Torque2D (http://www.garagegames.com/products/torque-2d-1.8)
???????除了編輯器框架和腳本,似乎Torque2D和3D沒有什么直接聯系。一樣是功能該有的都有,但是我感覺這個引擎最致命的問題就是像UDK一樣自己搞一套腳本,如果直接用現成的腳本語言,比如python、lua、javascript,那么會更容易把引擎推廣出去。
?????? 好吧,這個Torque2D還不如Torque3D,屬于只有一個可以運行游戲的程序,其他的編輯器什么都沒有。而且就2D功能來說,也只是包含最基本的圖片渲染、粒子光效和物理,不能說不夠用,但是也沒有什么亮眼的敵方。
?????? 以上四個是我現在找到的編輯器完整的開源游戲引擎。現在在我看來,編輯器與否并不是很重要。 某些編輯器是必不可少的,比如UI編輯器、粒子編輯器、場景編輯器,但是并不一定需要一個大而全的所見即所得編輯器。 很多時候清晰的開發流程更加重要,美術用3DMax制作并導出模型,策劃在場景編輯器中使用和測試這些資源,程序完成功能的開發。? 只要每個人都善用工具來解決自己的問題就可以了。? 而且很多時候,從接受程度上來說,你給美術一個粒子編輯器要比給美術Unity然后告訴他只需要關注其中的粒子系統部分要高。
總結
- 上一篇: WPF基础到企业应用系列7——深入剖析依
- 下一篇: java 权限控制 demo_Java-