Sunday, September 28, 2008

程式語言及遊戲引擎的定位

其實我已經一段時間,沒有接觸 Game Engine 的 Low-Level 層面的開發 ( 例如:Vertex Buffer 或是 Skeleton Animation 等的資料管理 ) 。

在 OGRE 還是在 1.2.X 的階段時,她使用了不小的外加元件 ( Dependencies ),有很多個不同的 DLL 檔案。我一向都不喜歡這樣的遊戲引擎,那時候我還不太清楚為什麼不喜歡,只是直覺的想「 這樣會變得很麻煩 」,就和我以前說過頗類似的感覺:「小寫一些 code,Bug 的出現也會減少」。但是近來有了一點點啟發,明白到一些減少用外加元件的好處。主要的啟發是來自 Microsoft Windows,那個 VC runtime distribution,可以說是 DLL 的災難。

那些惱人的外加元件,因為它們各自用的 Runtime 版本可能不一樣,為了歸一化,很多時候也要由 Source code 開始從新 Build 一次。這些問題雖然可以解決,但也不是一件容易事。而最大的一個問題,就是要從一個開發平台,轉到另一個時 ( 例如:從 Windows 轉到 Linux ) ,這下可不是說笑的。

但是說了這麼多問題,那究竟要怎樣做才可以呢?說實話,我不是資深的軟件工程師,不太適合處理這種複雜的情況。但我一直堅持著用 C Language 的主要原因,或多或少也是因為上面所說的問題。

p.s. 回想 Ngan-GINE'3D,其實也是一個全 C Language ( + DirectX ) 的遊戲引擎。如果我能力夠的話,亦希望繼續用 C Language 做一個全面的 Game Engine。可惜的是,自己的能力不太夠罷了。

Tuesday, September 23, 2008

Loading Progress Bar

我一直以來,都想做一個 Loading screen 的,因為玩家 ( 包括我 ) 都喜歡看「 究竟遊戲 Loading 進度如何?」的顯示。

所以我便用了差不多整個週末的時間,做了一個 Loading screen 功能,用上了 OGRE 中的 ResourceGroupListener 功能,當有 Resource 會 Load 時,便會發出 Event,這時便可以在已設定的 Listener 中,做一些 Loading 進度的表現。

這個 ResourceGroupListener,在使用之前要做些工作,就是首先要把準備 Load 的物件名字 declare 進去,OGRE 才能夠正確地發出 Event。幸運的是,我的 Ogng3D 引擎只需要修改一點點便可以,否則也不能夠在兩天完成這個新功能呢。

Sunday, September 21, 2008

Multi-Thread Programming 的小體會

前幾天看過一些文章,說 Multi-Thread / Multi-Core 的程式技術,會是現時及未來的趨勢,剛好這幾天有些時間,便做一些這類的編程嘗試。初時看一些有關於 Multi-Thread 的概念文章,希望搞清楚一點才開始,但是看了一天後仍是有點不太明白,所以後來索性編寫一些東西出來試試。

首先很簡單地做一個測試,Function A 在主 Thread 中運行,Function B 被指派到另一個 Thread 中運行,然後 Function A 會問 Function B 拿一個在 Function B 中的數字。真的超級簡單,因為 Function A 只是讀取 Function B 的資料,所以運作很順利。但後來同事們也一起來討論,他們對這方面的認識比我深入很多,其中一個同事更改了我的簡單程式,變成互相在一個 Linked-list 中讀寫資料,就這樣,最基本的 Multi-Thread 問題出現了,就是讀寫同一個資料的動作,有機會在同一時間發生,導致資料錯誤,或是資料損毀的問題。

再深入一點地試了兩天,最後我還是放棄了,Multi-Thread 編程這些工作,還是留給對它有認識的人負責好了,自己還是回到 Event / Data Driven,及 GamePlay 的編程中努力吧。

p.s. 雖然 Multi-Thread 編程令我卻步,但是在當中學到了一些寫程式的技巧,雖然不是甚麼大發現,但卻令我在製作 Ogng3D 上很有幫助。另外亦想到,為什麼現時電腦科技這麼發達,還要為這些超級複雜的難題懊惱?!

Monday, September 15, 2008

精神食糧電視劇

近幾年來,不知為何的,已經很小看日本或其他外國的電視劇集。

在這幾個星期日,偶爾地看到一套日本電視劇「 Bambino 」( 無記電視台譯 "料理新鮮人" ),感覺很好看,其實她的情節很簡單,就是一個年青人追尋夢想的故事 ( 日劇就是這樣的了 )。

雖然這些情節看來好像不太實際,但有時間我們需要的,就是這種「 精神上的食糧 」。而不是那些每晚都鬧哄哄的拖拉情節 ...