用了一段時間gamebryo了——做了2個月的demo,由於一些不可抗拒的因素,demo被迫喊停,我和另外乙個同事被調到了專案組,做了2個月的東西完全被否決掉,心頭總是有些失落的。最近在反思的同時也想把使用gamebryo的感受記錄下來。
首先說明,在3d方面我就是一打醬油的,也就知道那麼點基礎概念,所以這篇文章的內容和所表達的觀點可能會有一些偏差。
首先,gamebryo是乙個成熟的3d商業引擎,已經有不少的遊戲公司在採用它作為引擎開發3d專案,具體的專案可以到gb 的wiki上去找。gb的應用方式,大致有2種,一種是基於2.6版本的,直接使用core runtime,另外就是截至目前發布的最新lightspeed。直接使用core runtime的方式應該是lightspeed出來之前的應用方式,它和lightspeed很大的區別在於2個方面,1是lightspeed自身具備更高層的框架封裝,2是擁有乙個很強大的工具toolbench。
toolbench應該是gb的工具開發戰略:所有的功能都能依靠外掛程式整合到toolbench中,toolbench本身是乙個開放式的工具框架,目前發布的lightspeed版本中,toolbench自帶3個外掛程式:world builder ,script debugger,entity modeling tool。world builder是世界編輯器,有點類似於場景編輯器,script debugger是指令碼偵錯程式,目前支援lua和python兩種指令碼語言,這裡順便提一下,toolbench的指令碼系統非常方便,它整合了swig,可以在很短的時間就能搭建乙個指令碼模組,偵錯程式雖然功能還不是很豐富,但也還算方便(缺少某些很好用,實現起來也很簡單的功能,就連檢視乙個變數值都只能輸入到watch視窗檢視),另外它的指令碼編輯器就不敢恭維了,非常難用。entity modeling tool是建模工具,可以在裡面拖拉幾個model,然後定製其行為和屬性,很自然就和指令碼系統聯絡上了。
lightspeed的另乙個特點是高層的框架封裝,比如在這個框架下,要實現攝像機,只需要寫乙個具備攝像機功能的cameraservice,然後add到servicemanager裡面就行了,同樣如果需要實現天氣系統,寫乙個weatherservice add到servicemanager即可。這樣的設計是正交的。
gb對美術的考慮是採用3dmax,maya等工具的外掛程式方式,讓美術直接在這些他們經常使用的工具中編輯。美術工作的流程大概是這樣的,首先在max中編輯好物件,然後使用gb的外掛程式匯出成相應的格式(nif或kfm等),然後視具體應用加入到scene designer等工具中編輯。
由於公司是購買的source版本,所以可以看到**,總的來說,**很規範,設計思路也很明確,典型的oo設計,到目前為止沒看到啥意料之外的**(因為**看的很少:d)。大部分工具gui採用c#編寫,邏輯採用c++/cli編寫,其實也就是介面那層使用。我想,這樣設計有2個好處:其一,c#的優勢是開發效率高,有龐大的.net類庫支援,也能做出一些複雜的介面,其二,可以強制分離介面和邏輯,因為這樣設計的話通常是需要做介面把c#和c++**結合起來,做介面的人不參與邏輯,做邏輯的人不參與介面。
物理方面,gb整合了physx,這個就不多說了。gb裡面自帶了一些physx的demo。
工具方面,除了max外掛程式 和toolbench之外,gb還有scene designer,animation tool,assert viewer等幾個工具
再說說文件,文件的內容很豐富,但錯誤很多,我們就發現好幾處,很花了一些時間來解決,遺憾的是沒有記錄下來。對文件錯誤我還是比較能夠理解的,編寫文件是一項細緻的工作,而且各個版本不同公升級和修訂,都會對文件維護工作帶來很多麻煩。在用gb正是開始做專案之前,建議團隊裡面最好有人能通讀一遍文件,在遇到問題的時候腦袋裡有那麼一點點印象,能夠很快的定位到文件。很榮幸我們公司裡面有這麼乙個人:d
最後談談目前我們遇到的一些問題,首先是特效編輯這塊,gb的方案是在max中製作,然後匯出成nif等檔案,然而美術對這種工作方式有較大的意見,主要體現在效率太低,據美術的經驗,在max中編輯特性和專用工具相比,可能會有5倍左右的效率差距,這是乙個不小的資料,基於這種情況,應該有必要專門開發乙個特效編輯器。另外乙個問題是地形方面的,gb的場景最多隻支援乙個terrian(據說下個版本會支援多個),並且地表貼圖只能支援4層(同樣是據說,有人改到了支援16層,貌似不太困難),總來的來說,感覺地形方面還比較薄弱。
最最後,紀念一下我們的demo——supersonic,已完成的功能有以下幾點,計畫最近能整理到blog中。
全3d視角攝像機,包括俯仰,旋轉,攝像機和地形及物件的碰撞
地形,物件pick
指令碼控制角色動畫
投影紋理
碰撞檢測:walkable & non-walkable
粒子方面:天氣系統,雨雪天氣的實現
shader:水面效果
真的是最後了,再次重申以上是打醬油的觀點和經驗,由於使用時間太短,其他方面接觸也不深,就不談了。
最近一段時間
嗯。乙個是從那時候開始忙了一段時間,然後就沒有時間寫博,而且那段時間也緊張,還有就是人的劣根性 惰性。從那時候開始,大概過了一周5.30號的進候辭職了,因為拿到了南京一家公司的offer,很快,大概是週三面試,周五面試,周五下午發offer。然後周一去辭職的。一切都是這麼快。其實為什麼決定這麼快,因...
告別一段時間
不談過去。在這個學期,認真的做好兩個地理資訊系統。畢業 不用去管。初步的想法,是空間資料結構和演算法,空間資料探勘和知識發現,smartclient webservice和空間資訊網格三部分。第一部分,是很最重要的,也是最實在的,最具有挑戰性的,第二部分,其實就是吹牛,第三部分,也是很重要的,主要是...
告別了一段時間
時間長了就想寫這篇文章!其實,這是不是真的文章,依靠的就是自己乙個警鐘。或者提示。不得不踏上了六個月的旅程再次考研,去年考研的三個月。加上考研之後的一段時間去找學校調劑,找工作去實習,總感覺跟自己的想法漸行漸遠,這裡鄭重宣告 不是說找工作不好。就是本人比較喜歡玩一些有意思的東西,可能就不是非常喜歡去...