應該說每個作遊戲的人都會有一個本身寫遊戲引擎的夢。趁着尚未到新公司報道,花點時間研究一下開源引擎,梳理一下本身的思路。javascript
新的遊戲引擎是基於cocos2d-x,我但願能夠從這些開源引擎中學到:java
一、粒子系統、粒子編輯器。python
cocos2d-x的粒子系統至關薄弱,不是說沒有,但是想用他作出酷炫的技能特效是很是困難的一件事。android
很是多人都有作cocos2d-x的粒子編輯器。但是在我看來,粒子系統自己薄弱了,編輯器終於也就變成了一個參數編輯和效果預覽的工具。c++
二、模型載入和骨骼動畫播放。研究一下換裝系統需要哪些支持,順便看看能不能實現Unity的動畫重定向功能。c#
三、聲音引擎。看看能不能找到相似開源的FmodEx的聲音引擎。框架
四、研究下編輯器框架怎樣設計和搭建編輯器
五、Box2D和PhysicX的物理系統怎樣封裝工具
1、Genesis-3D(www.genesis-3d.com.cn)post
搜狐暢遊耗資千萬美金,開源的3D遊戲引擎。可以支持公佈到PC、Android、iOS平臺。
在分析第一印象的優劣以前我先說下。UDK、UE四、Source、Quake、Doom什麼的代碼是有的,但是臨時不打算看了,因爲過高大上或者技術向的代碼我懼怕Hold不住,我關注的是怎樣改進生產流程。而不是學習什麼高級技巧。
而且我現在最需要的是基礎設施,而不是什麼東西都有後要作的更好。
長處是編輯器完整,框架清晰(還沒看代碼。僅僅是從使用上來看)。我想要的那些基礎設施也都在。文件和資源系統沒有像Unity同樣打包在一塊兒,這點我是很是喜歡的。粒子系統配置什麼的都是xml文件。參考學習起來比較方便。粒子系統很是美,跟Unity差點兒相同,假設能直接拿來用就行了。可以說假設早個三五年推出應該是很是有競爭力的產品。
缺點是:
一、不能直接在編輯器裏面執行遊戲,僅僅能預覽靜態場景。
代碼他們彷佛是經過本身改動的Mono來實現直接編譯的功能。直接改動代碼不會需要又一次公佈版本號。但是資源的改動彷佛就麻煩了。從這點來看。Unity更偏向All in one的編輯器,一切都在編輯器裏面操做測試完成。最後需要的時候再公佈版本號。
而Genesis3D更偏向一個公司的商業引擎,美術程序分開工做。需要的時候把資源整合,公佈個可用的版本號。而後繼續測試開發。 儘管我以爲這個是缺點,但是說實話我我的仍是傾向於Genesis3D的方式的。因爲我感受僅僅要生產流程清晰了,那麼是否是有一個All in one的編輯器不那麼重要,甚至沒有編輯器也OK。僅僅要相應開發的終端有合適的工具就可以了。 Genesis3D會讓我感受本身更像程序開發人員。而不是全包全攬的獨立遊戲開發人員。
二、各方面都很是像Unity。
且不管是否是坊間傳聞的買了Untiy的代碼而後本身改的。
我僅僅能說是一個山寨的Unity1.0版本號。代碼設計上孰優孰劣不少其它的是我的喜愛,但是編輯器上看很是多地方作的都不如Unity方便。仍是那句話。假設不跟Unity比,那麼看起來很是美,但是一比就山寨了。
三、編輯器能擴展不? 我在教程裏面沒有看到,臨時以爲沒有吧。 Unity最大的魅力是可以本身定義編輯器內容。 以此衍生出很是多很是有魅力的插件。比方一些行爲樹AI插件、2D骨骼動畫插件,這些插件跟Unity結合在一塊兒大大的豐富了引擎自己的功能。
不然的話光靠本身是很是難知足用戶需求的。即使開源也不行。
四、待續。
我相信真正使用起來會有很是多值得吐槽的敵方。但是假設是像我同樣的剛開始學習的人來學習的話。仍是能夠收穫很是多東西。
2、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遊戲上仍是很不錯的選擇。
再說缺點:
一、編輯器操做起來不是很方便。
二、使用本身的GDScript語言。
這個我是不太贊同的,我具體說下個人見解。 做者分析了現有語言的優劣,而後決定本身開發一套腳本。比方lua、python假設用導出的方式會很是麻煩。而且會大於現在GDScript的核心。 c++固然是編譯語言,開發不方便。 c#則是因爲開源協議(Mono是LGPL)因此被放棄了。 但是在我看來,即使捨棄或者兼容一些東西。使用lua、python、javascript的意義也要大於本身開發一套腳本語言。 且不說本身開發意味着大量的時間和精力投入,用戶會有一個學習的過程。就拿lua來講,掌握語法來寫代碼的確可以一兩天就搞定。但是寫出美麗的高效的代碼或者代碼量大了怎樣正確的維護代碼都不是一天兩天能搞定的事情。這需要經驗的積累。
而本身開發的腳本語言對開發人員來講就意味着學習成本。誠然它很是easy可以半天上手,但是後面會遇到什麼樣的坑就說不許了。
再說。lua和javascript都有jit,在android平臺可以極大的提高執行效率,而這個也是本身開發腳本所不具有的。
3、Torque3D (http://www.garagegames.com/products/torque-3d/)
Torque有豐富的編輯器內容。而且有點像Quake同樣。遊戲就是編輯器。在地形編輯上面額外多了水流、道路編輯的功能。
但總體來講這個引擎沒有太多值得學習和參考的東西。絕大多數功能都是經過腳原本實現。編輯器僅僅包括最主要的編輯功能。而且腳本也是本身開發的一套語言。框架不能說詭異,但是怎麼看怎麼不舒服。
4、Torque2D (http://www.garagegames.com/products/torque-2d-1.8)
除了編輯器框架和腳本,彷佛Torque2D和3D沒有什麼直接聯繫。
同樣是功能該有的都有。但是我感受這個引擎最致命的問題就是像UDK同樣本身搞一套腳本。假設直接用現成的腳本語言,比方python、lua、javascript。那麼會更easy把引擎推廣出去。
好吧。這個Torque2D還不如Torque3D,屬於僅僅有一個可以執行遊戲的程序,其它的編輯器什麼都沒有。而且就2D功能來講。也僅僅是包括最主要的圖片渲染、粒子光效和物理。不能說不夠用,但是也沒有什麼亮眼的敵方。
以上四個是我現在找到的編輯器完整的開源遊戲引擎。
現在在我看來,編輯器與否並不是很是重要。 某些編輯器是不可缺乏的。比方UI編輯器、粒子編輯器、場景編輯器,但是並不必定需要一個大而全的所見即所得編輯器。 很是多時候清晰的開發流程更加劇要,美術用3DMax製做並導出模型,策劃在場景編輯器中使用和測試這些資源。程序完畢功能的開發。 僅僅要每個人都善用工具來解決本身的問題就可以了。
而且很是多時候。從接受程度上來講。你給美術一個粒子編輯器要比給美術Unity而後告訴他僅僅需要關注當中的粒子系統部分要高。