Sunday, December 30, 2007

新一年的開始

近日我在 MilkShape3D 中製作 OGRE 的 Plugin 工具,其中一個 Plugin 就是做個 Level Viewer 出來,但是我用的是自己的一套 Level Model 資料,要做個「一按即看」的 Viewer 工具很複雜,還好的是,先 Export 然後再按 Viewer 也不會破壞「不離開 MilkShape3D 便做完所有工序」的條件,所以便選擇了用 Viewer 看 Level 之前要完成 Export。

要用 OGRE 來製作一些工具是很麻煩的,最不好的事情是,它不時因為有重複名字的物件 ( 例如:SceneNode、Material ... 等 ),而出現 Exception 令程式 Crash 掉,很令人洩氣 ( 為何不設定為不理會重複的物件呢? )。而我擺放 Model 的資料夾內,會有很多其他的 Model,或 Material script 等的資料,會出現很多重複物件的問題,我後來想到了一個方法來解決,就是要用 Viewer 時候,在 MilkShape3D 的程式資料夾下,建立一個臨時的資料夾,然後將 Viewer 要用的所有資料 ( 如 Level 檔案、Material script、Texture ... 等等 ),都複製一份到臨時資料夾,用完 Viewer 之後便將這個臨時資料夾刪除掉,這樣便不需要理會重複物件的問題。

在 2008 年,我先會致力於 MilkShape3D 的 Plugin 工具製作,在完善 Level Viewer 後,亦會研究 Character Model 及 Animation Viewer,甚至是 Character Setup 工具,我希望令 MilkShape3D 能夠處理大部份製作工序 ( 當然是除了 Programming 呢 ),那麼對於我製作動作遊戲便更加得心應手了。

順道在這裡祝大家下一年做遊戲也一樣順利

Monday, December 24, 2007

聖誕節快樂

一年一度,聖誕節又到。

● 對一樣事物有期望,有時候換來的只有失望,例如早前期待的遊戲 Kane and Lynch

● 雖然是預期中的事情,但是 Call of Duty 4 還是非常非常地好玩。

● 決定了,聖誕節還是給自己一份聖誕節禮物吧。

● 之前看到一個有趣的網頁,一種心靈的慰藉。

● 有時候 OGRE3D 也會給我一點甜頭,很簡單地完成了加 / 減物件到骨骼上 ( 例如:手中加入武器 )。

● 近來因工作關係,接觸過 Flash 的 Action Script,意外地從中學懂了一些 Coding 的技巧。

● 以往曾經在 MilkShape3D 中做過的一些 Plugin 工具,因為暫停了 Final Spike 的開發,而沒有隨 MilkShape3D 而更新,這兩天的假期節目,就是要重建這些 Plugin 工具了 ( 為了準備重新啟動開發 ),又是 Win32 API 呢。

Tuesday, December 18, 2007

要做還是不要做

今天在 GameProducer.com 中看到一篇文章 ,這文章主要是一位 game producer 給 GameProducer.com 的 Email,內容提及的是一些遊戲製作的經驗談,非常值得看看。

當中講及一些話題:Risk Management、3D vs 2D ..... 等。其中不乏說的的當然是有沒有足夠資金,各方層面的營運,以及要不要做 3D 遊戲,我看完之後亦有點得著,而且亦想到一些自己的論點。在外國的遊戲業界中,技術層面是遊戲製作的主要方向,這點原本是好的,但先進技術是要用人材建構的,這樣便會令一間遊戲製作公司負擔沉重。但回看香港這片土地上,有足夠技術的人材究竟有多少呢?

看看眼下遊戲製作業界中,很多都是「追技術」的人,而且在 Production 工序方面多是很複雜,導致製作緩慢而令遊戲難產。但到底甚麼是簡易,甚麼是複雜?當然每間製作公司的計算都不一樣,例如就我個人的遊戲「 Final Spike 」而言,很多人說這遊戲是個中型遊戲製作規模,但在我眼中,她卻是個小型遊戲的規模,因為她的製作工序不複雜,我只是用 MilkShape3D 和幾個免費工具,一個人慢慢地做出來的。

遊戲製作的工序上是複雜還是簡單,對我來說就是遊戲製作上的 Risk Management,只要這方面控制得好,製作遊戲開支就會相對自然地減低了,那麼遊戲製作公司就有更多的機會,製作不同種類的遊戲推出市場了。

Monday, November 26, 2007

重整 OGRE 的工具

支援 OGRE 的工具一向都很多,主要的 3D Content Software 都有 Exporter 可以使用,我常用的 MilkShape3D 也有 Exporter。近日我想整理一下 MilkShape3D 的 Exporter,因為改用 OGRE 以來,Exporter 中對於導出 material 檔案的功能是缺乏的,所以要加進這個功能,就這樣我的週末節目就是製作 Exporter 了。

初時用 OGRE 的功能來導出 material 資料,但很不順利,因為 exporter 不時就會 crash,追查了半天時間才發現是 Release runtime 問題。Runtime 用對了後又發現,OGRE 的 Material Serializer 生成的 material 檔案,有些設定是不能導出的,後來要自己用寫入 Text 檔案方法來完成,又沒有了半天時間。

雖然進度慢了一點,但暫時在 export 出來的 material 檔案中,都可以有基本的資料了,下一部就是加一個 Dialog Box,加一些可設定的資料 ( 又是 Win32 的 API ),再 export 出 material 檔案,計劃好像很完美呢 .....

Thursday, November 22, 2007

做新東西是用來簡化舊東西

我本身就是喜歡簡單的人,無論生活上,又或編寫程式。

上星期有機會,和一個同事開了一個 Side Project,一隻 2D 動作遊戲,就這樣我便重拾起 2D Graphics library。我用了數天時間,將 SDL 包起來,效果也不錯,而且在當中學到了新東西,這個新東西就是 Game State Manager。

在 Internet上都看過很多有關 State Manager 的文章,在新買的 Game Programming Gems 5 中亦有一篇講解 State Manager 的,但我總是覺得複雜,那我就藉由這個 Side Project,開始了自己的 Game State Manager 製作。有趣的是,我做完這個 Game State Manager 後,發覺可以將整個遊戲的架構簡化了,我以往要做個 Demo,main.c 都會是這樣的:

bool Game_Init() {
 ...
}

bool Game_Render() {
 ...
}

bool Game_Update() {
 ...
}

bool Game_Exit() {
...
}

bool Game_Main() {
 Game_Update();
 Game_Render();
 ...
}

void main () {
 InitOGNG();
 Game_Init();
 while (1) {
  if ( IsClosed() )
   break;
  Game_Main();
 }
 Game_Exit();
 EndOGNG();
}

遊戲的主程式一定要在 Game_Main() 、 Game_Update() 內,在這裡面才是真正的遊戲的運作。但是有了 Game State Manager 後,main.c 變成了這樣:

void main() {
 InitOGNG();
 StateCreate("test01", demoStart,
demoUpdate, demoPause, demoExit);
 while (1) {
  if ( RunOGNG() == false )
   break;
 }
 EndOGNG();
}


上面的 demoStart, demoUpdate, demoPause 及 demoExit 都是 Function,StateCreate 就是建立一個新的 GameState 和登記這幾個 Function 進去,而 RunOGNG() 內都會運行每個已登記的 GameState ( 就是 demoUpdate 了 ),差不多就是這樣了。相比起來,有 Game State Manager 的 main.c 確實是簡潔很多,而且亦可以在一個 Game State 內建立另一個新 Game State,已存在的 Game State 可以 Pause 暫停下來,或是刪除掉。這樣便可以很簡單地實現,由 Main Menu 進入 Option Menu,設定完後回到 Main Menu ,又或是遊戲進行中,暫停遊戲進入 Pause Menu 之類的功能。

Monday, October 29, 2007

文章、準備

上個星期,買了本簡體字的「 Game Programming Gems 5 」,看到裡面有一篇叫做 Component Based Game Objects 文章,細閱內容後,發覺原來自己在製作新的 Og-NG'3D 時,也用了差不多的概念,當然沒有書中所說的那麼完整及完善了。

其實我用的都是以 Manager 方案為主,要用 Object-A 的東西,便和 Object-A Manager 要求一個,要 Object-B 就和 Object-B Manager 要一個... 如此類推,就這樣,我在製作遊戲時,我的主要 Game Object 都是儲存著一些 Object 的 ID,而非真正的 Object ,雖然我不太清楚這種方案的好與壞,但我對這方案就是感覺很舒服。

之前數天也在網上看一些有關 Data Driven Programming 的資料,其中看到一篇文章提及 Table-oriented ( data-driven ) programming,當中所說的有點像我在幾年前的 Function Pointer 一文,用一組 Data list 來處理一大堆 Functions 。我的文章當然是沒有那麼大價值,但我卻很喜歡這個方案,因為比較直接簡單易明,我之前所發表的 Final Spike v1.0.0.1 Alpha 也是用了這技巧製作。

上星期完成了一些 Og-NG'3D 的瑣碎功能,同時亦初步開始了 Network 的研究,我選了一個叫做 eNet 的工具,這工具出奇地令我很快便明白它的用法 ( 我一向都是個 " 摸索很久" 的 Programmer ) 。現在覺得 Og-NG'3D 的功能已經頗成熟 ( 除了 Network 部份 ),應該可以開始製作遊戲了,其實我亦有幾個遊戲主意想做,但是我希望能夠做一隻完整版本的 Final Spike,以現時 Og-NG'3D 的功能來說,要從舊版本移植過來,也需要不小的改動,當然是希望加入我最希望的 Network 2-Play 了,相信在短期內可能會開始製作新的 Final Spike 呢。

Wednesday, September 26, 2007

九月雜談

● 已有多年沒有 ‘ 期待一個遊戲發售 ’ 的感覺了,上一次是兩年前的「汪達與巨像」。這幾個月來都在期待一個新遊戲,「 Kane & Lynch: Dead Men 」,為什麼呢?遊戲是由 I O 公司開發,當中可以說是我眼中的夢幻組合,Hitman 系列的 Producer,Freedom Fighters 的開發組。一個字:「 」! ( 要等到 11 月...... )

● 上星期又是一年一度的「 Tokyo Game Show ' 2007 」,有沒有心水推介呢?說實話,好像沒有......

● 很有趣,看看這幾年的次世代遊戲,都是圍繞著三種圖像技術:「 HDR Rendering 」、「 Normal Map 」及「 Shadow 」,當中 Normal Map 是我最為大惑不解,因為這技術早在 DirectX 7 年代已經提出,但竟然在這兩年才大量使用,據知更有些開發商對其不以為然,奇怪。

● 很喜歡看 GameTrailers.com 中的 Bonus Round 節目,新一個 Episode 中討論一個有趣的題目:「 Japan : Culturally Biased 」,其中有些點題很好,我覺得對 Game design 是有點幫助的。

● 我自己是個 C 人,我喜愛用 C 的其中一個原因,是因為它比較 low-level,又比 assembly 為 high-level。但是當要工作的時候,C 是不入流的,要用 C++,但是連 C++ standard library 也不懂使用的我,在 C++ 的工作環境下,壓力並不是一般的大。有時候會在網上,看一些 C vs C++ 的文章,這些文章可以給我用來平衡心理呢,要不然,有一天我可能會倒下來的呢。

● 之前我曾經多次說過,我不太喜歡 OGRE'3D,用了這麼一段時間,這個感覺仍然存在。但可惡的是,除了自己所製作的 Ngan-GINE'3D 外 ( 額外而又自私的論點 ),我的確是找不到一個比它有更好 support 的引擎。曾經看過 Irrlicht,但是它的 MilkShape3D 支援是錯誤的,亦沒有多種工具可以使用。亦證明了一個事實,世界上是沒有免費午餐的。

● 近日在追看電視劇「 Heroes 」( 第一季 ),看到故事後來的發展,有點不自然的感覺,何解呢? ( 個人感覺而已 )

Saturday, August 25, 2007

Game Engine, Game Play

近一年來,發覺自己在 Game Engine 和 Game Play 的編寫程式上,有著明顯的轉變,那是甚麼轉變?就是對 Game Engine 開發很難提起興趣,而對 Game Play 方面會放多一點時間。

曾經想過為何會有這種想法,可能是因為以往多年來,都在做一些 Game Engine 的研究。在初時接觸 2D 圖像,Load 一張 PCX 圖,顯示出來,在電腦顯示 Memory 中畫出一粒 Pixel,繪出一個 Sprite,如何做 2D Tile-Map Scrolling,試做 2D Action 和 Shooting Game。到後來接觸 3D 圖像,認識 3D Coordination system、Vector、Matrix、Vertex、Polygon、Multi-Texturing、Skinned Mesh、Skeleton Animation、Portal System ... 等等,做個3D Game Engine,然後做個3D Game。

感覺就好像,研究了Game Engine 很久,已用了很多時間做一些基礎事情,不應該再停在那裡,應該實實在在向另一個方向走,例如研究 Game Play 編程。但有趣的是,我覺得 Game Play 編程其實並不是屬於「程式編寫」的一種,而是好像砌積木一樣,將一大堆已有的 Code,如何整合一起成為一個遊戲。有時候會想,這個不太像做 Programmer,反而是有點像 Game Designer 。

Saturday, August 11, 2007

八月雜談

火狗告別
  確實是有點突然,我個人覺得火狗工房是本港少數成功的遊戲製作公司,而且她還能夠在日本打開市場,有點惋惜。其中說道使用第三家的遊戲引擎時很糟,這也是我以往說過,遊戲引擎開發公司沒有開發遊戲來配合,是不太適合的呢。

Carnival of Game Production - Fifth Edition
  當中有些 Blog 內容很好,不訪看看。

◎ 一隻 Click & Find casual game 在頭一個月有 US$ 250,000 銷量
  真的是難以置信,第一個月已有接近二百萬港幣收入,Casual game 市場真是叫人驚訝。

◎ 工作進度落後令我精神緊張,導致胃抽筋
  痛了四天,還未舒緩下來,非常不舒服。上一次的胃痛也是工作進度問題導致,已是三年前了。

Saturday, August 04, 2007

做個好玩的遊戲?

前天和朋友史艷文兄閒談,當中談及一隻 Capcom 新的 Wii 遊戲「 寶島 Z 」,我們都認為 Capcom 懂得做 Wii 遊戲,也很懂得 Promo 這個遊戲。其間我說了一個話題,「 寶島 Z 」這類 Action Puzzle,很多玩家都只會玩一次,因為解謎方法都只有一兩種,很難令玩家重複再玩,但史兄說了一點:「不是 Action Puzzle 的遊戲也是只得一種完成方法,但多年來你也是在玩呀。」

完全對,我一直都鍾愛的 Action 遊戲,都是只有一種完成遊戲的方法,看來我是有點迷失了。後來亦帶出了第二個話題,現在的玩遊戲的年輕玩家,是被漂亮的3D圖像養大,而我們年齡層較高 ( 老 ) 的玩家,不是被漂亮的圖像養大,而是被 Gameplay 養大的。那麼一個遊戲應該是怎樣才會令玩家一玩再玩呢?這個跟本是沒有標準答案,舉個例子:日本有個新的 Online 遊戲,叫做「 ViZiMO 」,一個自由度很大的遊戲,但看過一些這遊戲的片段後,我不知道這遊戲有甚麼可以玩?另一個例子:PS3 將會有個遊戲,叫做「 PixelJunk Racer 」,圖像上真是懷舊至極,但我看過其 Gameplay 片段後,不禁叫了一聲「 好!」。

我覺得,遊戲對玩家來說是否好玩,都會是由玩家的個人觀感出發,如果玩家不喜歡玩動作遊戲,我的「 Final Spike 」永遠不能吸引他 / 她。反觀我自己亦然,就算「 Star Craft 2 」是多麼的受注目,我亦不以為然。那麼做遊戲的人怎樣好呢?試想想剛才我所說的,那麼做一個自己喜歡玩的遊戲,就是做一個好遊戲的第一步,然後再在上面加一點點「客觀公恩數」,那就是一個好玩的遊戲了。如果遊戲有人欣賞的話,那麼就一定會有人購買的,而且這遊戲亦會令玩家一玩再玩。

Tuesday, July 31, 2007

Final Spike v1.0.0.1 Alpha

正 式 公 開 下 載 ! (7.52MB zipped)

(Last update : 2009-May-10)
File Factory 下 載
fileQube 下 載
Easy Share 下 載
filehosting.org 下 載



System Requirement :
- Pentium III 800 mhz with 128MB Memory or above
- 3D display card with 32MB, DirectX7 support or above
- 20MB Harddisk space
- Joystick (optional, better gameplay experience)

Saturday, July 28, 2007

「Final Spike」'06 即將發佈

近日開放下載,敬請留意。

p.s. 發怖的版本,將會是去年2006年4月的版本。

Saturday, July 21, 2007

沒有文獻的麻煩

上一回的那些 Weight 怪問題,令我不其然要作出妥協,但到了今天卻有個新發展,因為我在無意間,發現了為什麼會出現那些 Weight 怪問題,原來問題是出於,MS3D 中的 Vertex Weight 資料,在排列數序上和 OGRE3D 的倒轉的。例如:MS3D 中 Vertex 的 Weight 數序為 [ 20% + 80% ],在 OGRE3D 中卻是 [ 80% + 20% ]。

這事件說明了,沒有文獻說明的 SDK 及 API,就是令人迷惑不已的,小小的問題就是不容易發現原因及解決之。

早前我曾經說過,新的 Ngan-GINE'3D 差不多完成了,但這兩個星期,都在做一些整合的工作,原因是,之前一些原 Ngan-GINE'3D 中的工具,都是另外放到一個 Library 中,和 OGRE3D 的部份是分開的,近日就是將這些工具都整合起來,進度方面也不錯,主要部份尚欠將 Newton Game Dynamics 套進去,希望能在短期內做好吧。

近來有朋友叫我,將之前發報過 Trailer 的「 Final Spike」,放上網給其他人也玩玩,其實這個建議我亦曾經想過,可是早前太忙碌,後來忘掉了,現在也可以再想想呢。

Sunday, July 08, 2007

奇怪的... Weight

Weight OK ?早前我說過,自己動手改動 MilkShape3D 的 OGRE3D Mesh exporter,令其支援 MS3D 新的 Vertex Weight 功能。但我發現了一個很奇怪的情況,就是當 Vertex 的 Weight 不是 ( 50% + 50% ) ,便會出現錯誤,例如 ( 70% + 30% ),或者 ( 50% + 30% + 20% ) 都會出錯。

我初時以為是因為,那些 Weight 數值加起來不是 100%,才會有錯吧,但是在 Debug 中看看資料,卻沒有錯誤,它們的數值加起來確是 100%。我怎樣的試,但結果都是非 ( 50% + 50% ) 便會有錯,究竟是怎麼一回事呢?

我還未找出原因,也不太想糾纏下去,我的做法可能都是妥協罷了......

Saturday, June 30, 2007

近來的遊戲開發構想

我總是覺得,遊戲引擎的製作,應該針對「遊戲種類」的。但一些基本的功能,在任何的遊戲引擎中亦要存在,例如圖形渲染、輸入及聲效功能等等。近日我都在想,究竟一個遊戲引擎的基本功能要有那些?我覺得在幾年前,在我的舊網頁中所說的,應該是最基本的了,因為那些功能是做一隻 3D 遊戲的基本,但是還有甚麼呢?我想應該是 Network 及 Script 引擎吧。

有關 Network 及 Script 引擎,我真的要投降了,這兩方面我從未接觸過。但是若然我自己真的要做個完整的遊戲,那麼這兩個近多年來盛行的技術,始終要學會的呢。如果要選擇先學其中一樣,那麼我會選擇 Network 部份,因為我想,如果能在「 Final Spike 」中加入 Network Play 的話就最好了 ( 我還是想完成 Final Spike 呢 ) 。

用 OGRE'3D 有時候亦有令我高興的時候。話說我早前已做了一個 Mini-Map,另外用自己的方法做了個 SkyDome ( 非 OGRE'3D 內建那個 ),但我希望在 Mini-Map 中,不顯示那個 SkyDome ,我後來用了那個 setVisibilityMask 來控制那些東西要 Render 出來,藉以剔除那個 SkyDome 不在 Mini-Map 中出現,簡單而且有效。

Thursday, June 28, 2007

討厭的...... ( 牢騷 )

眾所週知 ( 有點自大... ),我的遊戲開發工具是使用 MilkShape3D 的,而 MS3D 在早幾個版本中,已加入了 Vertex Weight 的功能。在 OGRE3D 中,亦有給 MS3D 用的 Exporter,但奇怪的是,就是未看到 MS3D 的 OGRE3D Exporter,有支援這個新的 Vertex Weight 功能,那我便在 Forum 中問問,OGRE3D 的主理人答覆,說已在最新的 MS3D Exporter 加進了。

但是,我下載了最新的 OGRE3D Exporter 及安裝後,卻不能夠正確地 Export 出帶 Vertex Weight 的 Mesh ,究竟是怎麼一回事呢?但是 OGRE3D 的主理人卻說應該沒問題的,在滿腦子謎團下,再下載OGRE3D 的 Source Code ( 內連 Exporter Source Code ) 看看,但我發現的是,Exporter 的 Source Code 中跟本就沒有加進 Vertex Weight 的功能,感覺就像被人欺騙了。

最後還是要靠自己了,用了三晚的時間,將 Vertex Weight 加進這個 MS3D 用的 OGRE3D Exporter。

Tuesday, June 19, 2007

寫程式的速度

我所說的,不是程式的速度,而是小弟寫程式的速度,確實是有一點兒緩慢。

一個例子,因為我的新 Ngan-GINE'3D,是沒有辦法改變設定的 ( 如:解像度,是否 Fullscreen... etc ) ,那麼我便想製作一個 Win32 模樣的 " Config-Maker " 出來用。問題出現了,我從沒試過用 Win32 的 API 來寫程式,究竟要如何開始?我啟動了 PellesC,她內部有一個 Designer 工具,用來製作 Win32 程式的,這個工具頗簡單,三扒兩撥便可以設計好一個 Win32 程式的外型了。可惜的是,我完全不知道那些 Controls 是怎樣用的,甚麼 ComboBox、ListBox、TextBox,甚至一個簡單的 CheckBox 我也不懂怎樣去處理。再看下去,又要有甚麼 SendMessage、 SendDlgItemMessage,頭昏腦脹下去 Internet 看看,但看到的都是一些複雜的 C++ class 例子。

到了最後,我用了大約兩天的時間,才完成這個只有兩個選項的 Win32 程式,已足夠令我質疑自己的編程能力。

Sunday, June 17, 2007

OGRE 下的追尾 Camera

要用 OGRE,來做以往用 Direct3D 做過的追尾 Camera,真的有點困難,因為 OGRE 在 Concept 上真的很不一樣,令我難以捉模。用了差不多兩天的時間,才能做得到,可惡。

我進一步不喜歡 OGRE 了,不是因為她的複雜,而是她的 Pipeline,我就是弄不明白。Camera 究竟是在何時更新的?那個時間可以做 Ortho View?究竟有沒辦法簡單地做 2D Render?以上種種問題,對我來說,跟本就是一個「」!

Saturday, June 02, 2007

妥協後的玩具

究竟要自己做 Collision Detection 有多難?當你有要求的時候,確實是很難。

能夠運行是不難的,但是物件的移動速度,會直接影響結果才是最難。物件現時的位置,和下一個 Step 的位置差距,會導致物件由 A Sector,突然移到 B Sector,真的可惡。在不得要領,及沒有解決方案的情況之下,可以做的就是妥協,還是用 Physics Engine 做吧,幸好我只用了一個星期的空餘時間做實驗,就當是一種學習過程。

三隻巨像終於入手!「 汪達與巨像 」的 Figure,前兩天到手了。這套 Figure 每隻是 718yen ( 約HK$ 50 ),但卻被炒高至每隻 HK$150 ,幸好我家姐到日本旅遊,順道幫我買了幾隻,雖然不能買齊一套 7 隻,但也很開心 ( 圖中有巨像 5、12 和 16 )。

Sunday, May 27, 2007

遊戲引擎補完計劃

將 Ngan-GINE'3D 的圖像部份,轉用 OGRE3D 的其中一個原因,是希望能夠達到所謂「跨平台」的目的,但是在原 Ngan-GINE'3D 的其他功能,都是用上 DirectX 的 ( DirectSound、DirectInput... etc ),為了達到跨平台,早前我決定要將 Ngan-GINE'3D 的其餘功能,都轉用其他跨平台的 3rd Party Library。

首先是自家的數學函數部份,不可以再用 Direct3D 的數學工具 ( D3DVECTOR3、D3DMATRIX... etc ),全部要轉為自己的數學工具,當然是以基本 float 這類資料為單位呢。

在 Input 部份,真的沒有選擇,只有「 OIS 」( Object Oriented Input System ),作為Keyboard / Mouse / Joystick 輸入。

最後是 Sound 聲音效果問題,我之前看過 OpenAL,但是這個真的很複雜,對我來說甚為不便。最後我發現「 irrKlang 」這個 Sound Library,用了大半天時間便成功代替了之前的 DirectSound,而且還支援多種聲效檔案格式,也算是不錯的。

就這樣,新 Ngan-GINE'3D 已接近完成 ( 這樣說的原因是,可能還有些小問題呢 ),整個引擎只是用了五個 DLL,感覺非常輕巧,而且所用的 Library 都是 Open-Source 及免費的 ( 只要不改動核心部份 ) ,基本上整個 Ngan-GINE'3D 可說是接近零成本 ( 使用 Visual C++ ExpressPellesC,都是免費的 ),感覺非常的良好。

Thursday, May 24, 2007

令人討厭的OGRE

今天是假期,趁有空閒日子便想試試「人手規劃」Collision Map,當開始了一會兒後,發覺問題出現了,居然在 OGRE 中 Load 入的 Data,和原來的 Data 有不同,而不同的地方居然就是 " 法線 Normal ",令我想從最簡單的方法開始也不能。作了良久的修改,但問題始終不能解決,真的很可惡,到了最後,我卻要低頭,將 OGRE 中 Load Data 的部份刪除,要用回 Ngan-GINE 中的 Loader。

有時候,3rd Party 的引擎確實會令人感到討厭的。

Monday, May 21, 2007

Level Map Collision Detection

早前我說過,不想再用 Physics Engine 來做 Collision Detection,另外亦構思了一種方法來代替,在過去的週末,也正式開始了新構思的實驗。

我的方法其實很簡單,就是「人手規劃」方法,原先我的 Ngan-GINE'3D 中的設計,已經將 Render 和 Collision 的地圖作分開處理,這樣其實已經對人手規劃法埋下方便的伏線,加上我的 Collision 地圖資料已經是 Sector 形式儲存,用於人手規劃法時亦不需要改寫,在種種理由下,似乎不得不實驗一下這個「人手規劃」方法。

朋友問道:「會不會有 Precision 問題?」
我答:「不知道,但是數年前的 Final Spike 參賽版本,都是以這類形式製作,相信問題不大。」

Saturday, May 19, 2007

Friday, May 04, 2007

為什麼要 Physics Engine ?

我近來有個想法,就是不再用 Physics Engine 來做 Collision Detection,反而用最簡單 Point Plane 及 Polygon 的 Collision,為什麼我會這樣想呢?原因有而下幾點:

1) Time Step 問題,很難做到不同的 PC,有一樣的效果
2) 對 Low-end PC 是一種沉重的負擔
3) 程式變得複雜,導致難以控制
4) 如果遊戲中沒有 Physics game-play,變得沒意義

確實,沒有 Physics Engine,那麼 Collision 就要自己做,而近來除了想不再用 Physics Engine,亦想著要怎樣才可以代替她,而又可以盡量做到小問題,我的構想也差不多成型了,只要實踐來證實可行,希望有時間試試吧。

Tuesday, May 01, 2007

現實中的千與千尋

今天是假期,電視台亦在今早播放日本卡通電影「千與千尋」,我亦有重溫這套卡通。「千與千尋」是一套很有寓意的卡通,往往看後也會令我回想身邊的人和事,以及自己處事方法。

無知的父母,迷失的小孩,利慾的婆婆,沒家的白龍,被污染的河神,物質主義的無面人,被過份寵愛的嬰孩... 等等,環顧周圍,亦不難發現身邊都有剛才所說的人和事。但是世界並不會因為這些事而停下來,每一秒鐘也有不同的事情發生,我們會因為周遭有很多事發生,而遺忘了很多對自己重要的事情,就正如「千與千尋」中,忘掉了自己的名字,被迫留在神隱的國度。

Sunday, April 22, 2007

久違了的模擬器世界 II

昨天看過 Dreamcast 的模擬器後,今天又想想,既然 Dreamcast 也可以如此精彩,那究竟現在的 Sega Saturn 模擬器會是怎樣呢?剛好看過一些模擬器新聞,知道最好的 Saturn 模擬器「SSF」,在今天推出了新的版本,我便好奇地下載來試試。

又是一個意外驚喜,原來現在的 Sega Saturn 模擬器的完成度已近完美,我便第一時間拿出「 Panzer Dragoon II ZWEL 」來試試。真的很感動,可以全速地再玩這個經典遊戲 ( 我覺得 ),太好了!!

Saturday, April 21, 2007

久違了的模擬器世界

曾幾何時,我很喜歡模擬器的,例如:紅白機、超級任天堂、及各種老舊的街機模擬器等等。每每為了重溫經典,都會上網看看有甚麼新的模擬器推出,讓自己可以再次回味的。但是近幾年來,模擬器的發展已經不如以往,自己亦甚少看有關模擬器的新聞了。

今天沒事做,心血來潮的到訪一些模擬器新聞網站,看到了一篇新聞,原來在四月初有一個新的Dreamcast模擬器出來了,它叫做「nullDC」。好奇地看看有關報導,發現它是個很不錯的模擬器,便以一個嘗試的心態去試試,怎料真的令我意想不到,完成度及速度均非常地高,我更加能夠在全速下玩「Virtua Tennis」。

Virtua Fighter 3 tb Virtua Tennis

Sunday, April 08, 2007

遊戲開發,還是引擎開發?

今天看到 GameProducer.net 的一篇 Blog:
Are You a Game Developer or Game Engine Developer

沒錯,這篇 Blog 內所說的情況,都是很多想從事遊戲開發的人的迷思,究竟開發遊戲要不要先學習開發引擎?這個問題我在很多年前已經找到答案,那時候是香港的 Internet 服務的起步,我發現了網上原來有多個 2D 遊戲引擎 ( 而且還是免費的 ),就從那時候開發,我便不再想自己做個 2D 遊戲引擎了,只去學習使用那些引擎。

但在大約七年前 ( 2000 年 ),我初次接觸 3D 遊戲開發,那時候的我對 3D 數學一竅不通,我就是不能暢順地學習開發 3D 遊戲,所以我便決定自己做個 3D 遊戲引擎,希望能從中學習 3D 數學。我用了兩年的工餘時間,製作出自己的 3D 遊戲引擎「 Ngan-GINE'3D 」,再用大約三個月的時間製作「 Final Spike ( 參賽版 ) 」,在這個過程裡,令我對 3D 遊戲開發有更深的了解。到了近期,我亦能有效地將 OGRE3D 包裝起來給自己用。

「 Are You a Game Developer or Game Engine Developer 」這個問題是否也迷倒您呢?看到很多中外的業餘遊戲開發人們,都會在這個問題下打轉,說實話,我亦不時會被這個問題所迷倒,但當這發生時,我會盡快地調整一下心態,走回想走的路上,那麼您又如何呢?

Wednesday, April 04, 2007

有時間玩Games

這個星期以來玩了兩個遊戲,一是「 Virtua Tennis 3 」,另一個是「 T.M.N.T. 」。這兩個遊戲都是新出來的,但名字大家應不會陌生吧,一是知名的體育遊戲,一是知名的卡通片 / 電影。

先說說「 Virtua Tennis 3 」,遊戲的圖像很好,用我的電腦玩 ( CPU 不是太強 + 入門級的 3D card ) 也有不錯的速度,遊戲中亦有很多小遊戲,非常耐玩。玩了這遊戲良久後,總是有個奇怪的感覺:「幾年前的 GBA 版本真的很好玩。」;有這個感覺的原因是因為,遊戲內容和數年前的 GBA 跟本沒大分別,只是 3D 圖像很美罷了,對手的 AI 也有增強,但是遊戲的進行真的是一模一樣,說罷也有點懷念 GBA 版本。我不是說這遊戲不好玩,如果沒有玩過 GBA 版的,這個「 Virtua Tennis 3 」真的不容錯過的 ( 而且有很多正名的現役網球手 ) 。

「 T.M.N.T. 」玩了一會兒後,有種奇怪的感覺,初時真的想不出是甚麼,只覺得好像在那裡看過似的。幾天後,從網上看到一個 PS3 遊戲,呀!就是她了,「 T.M.N.T. 」就是像這個遊戲:「 Ninja Gaiden ( 忍者外傳 ) 」( 這遊戲原本就是 XBox 的,近來會移值到 PS3 上 )。可惜的是,遊戲的進行過程就是走來走去,走完一大段路之後,消除數隻嘍囉之後,再走一大段路,在走路途中是沒有敵人的,只需要跑跑跳跳爬爬之類便可以,和嘍囉打鬥時,亦欠缺打擊實在感,如果玩過或看過「 Ninja Gaiden 」的,很自然地便會比較起來,但「 T.M.N.T. 」卻是完全比下去。

Friday, March 30, 2007

話說一年前...

Final Spike Q有一天有個朋友打電話問我,我的「Final Spike」中的角色能否轉做 Q 版,我後來用了不足兩天的時間,將遊戲中的角色 3D Model 轉做 Q 版,就這樣一隻「Q 版 Final Spike」就出現了。今天從電腦中看到,覺得很有趣,所以便製成幾段短片給大家看看:


FS-Q 1 ● FS-Q 2 ● FS-Q 3 ● FS-Q 4
( 建議先將片段下載後再看 )

Saturday, March 17, 2007

當 Milk 在 Shape 的時候

最近手上的工作已完成九成多了,但不明所以地仍然有點忙碌,很奇怪的感覺。

Vertex Weight今天有機會閒著,便上網看些新聞,赫然發現 MilkShape3D 推出了新版本,而且在這個新版本中,居然加入了眾所期望的 Vertex Weight 功能,實在令我感動不已,因為開發者曾經多次說過只會在 MilkShape3D v2.0,才會加入這個功能的。我玩了一會兒後,還未掌握當中 Weighting 的設定,而且在更新履歷中的一項新功能 :
  • added: vertex extra, can be used for color or other info
我仍然未知道可以在那裡操作,雖然有點迷茫,但相信在短期內便能夠適應的了。

Sunday, February 25, 2007

再想一想Indie Game Developer

忙了很長時間,終於能夠在這個星期日稍稍靜下來,寫寫 Blog 了。

有幾天在想,在香港要做個 Indie Game Developer,究竟成本多少?不少的外國 Casual / Indie Game Developer,都是以開發 Casual Game 類遊戲為 " Side Business ",成功轉為全職的例子比較少。前陣子看過 GameProducer.net 的其中一篇 Blog,內有多個 Blog Link 談及 Indie Game Developer 的文章,很有參考價值。

香港與外國的成本比較,相對是比較低的,若然外國有成功例子,香港亦應可以做到,問題可能只在於發行上的執行,包括推廣、包裝、DRM、支援...等等,以上都是香港比較不利的因素,如果能夠解決,相信香港發展 Casual / Indie Game Developer 行業是可為的。

最後結論,Casual / Indie Game Developer 是一個 Side Business,亦即是在正職工作時間外,製作簡單遊戲賺取金錢。可惜在香港很多職業的工作時間,也是一星期做六天,每天朝十晚十的絕望工時 ( 我近期亦是如此 ),能否真正成為 Casual / Indie Game Developer 亦是一個謎團。

Wednesday, January 31, 2007

「Lost Planet」Graphics講座

「Lost Planet」Graphics 講座

一看標題就明白,不用多說。( 可惜的是,全日文。)

Sunday, January 21, 2007

雜談

「Gears of War」全球賣出三百萬隻。

14 Ways to Motivate Yourself

● 在工作的地方多了一部 Nintendo Wii,終於試過了 Wii,非常非常的有趣。

● 家中有些舊的電腦配件,總是想將它們送到一些電腦回收中心處,但一想到要將一個頗重的14吋 Monitor 搬到老遠,就令我卻步,究竟何時才能將那些舊電腦配件送走呢?

● 一年多後,我仍然很喜歡「Shadow of the Colossus ( 點擊 English(UK) )」。

Tuesday, January 16, 2007

十個失敗的理由

這個不是說做人處事,又或者是一般工作,而是指「遊戲製作」,大家不妨看看:

The 10 reasons you will never finish your game