近一年來,發覺自己在 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 25, 2007
Saturday, August 11, 2007
八月雜談
◎ 火狗告別?
確實是有點突然,我個人覺得火狗工房是本港少數成功的遊戲製作公司,而且她還能夠在日本打開市場,有點惋惜。其中說道使用第三家的遊戲引擎時很糟,這也是我以往說過,遊戲引擎開發公司沒有開發遊戲來配合,是不太適合的呢。
◎ Carnival of Game Production - Fifth Edition
當中有些 Blog 內容很好,不訪看看。
◎ 一隻 Click & Find casual game 在頭一個月有 US$ 250,000 銷量
真的是難以置信,第一個月已有接近二百萬港幣收入,Casual game 市場真是叫人驚訝。
◎ 工作進度落後令我精神緊張,導致胃抽筋
痛了四天,還未舒緩下來,非常不舒服。上一次的胃痛也是工作進度問題導致,已是三年前了。
確實是有點突然,我個人覺得火狗工房是本港少數成功的遊戲製作公司,而且她還能夠在日本打開市場,有點惋惜。其中說道使用第三家的遊戲引擎時很糟,這也是我以往說過,遊戲引擎開發公司沒有開發遊戲來配合,是不太適合的呢。
◎ 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 」是多麼的受注目,我亦不以為然。那麼做遊戲的人怎樣好呢?試想想剛才我所說的,那麼做一個自己喜歡玩的遊戲,就是做一個好遊戲的第一步,然後再在上面加一點點「客觀公恩數」,那就是一個好玩的遊戲了。如果遊戲有人欣賞的話,那麼就一定會有人購買的,而且這遊戲亦會令玩家一玩再玩。
完全對,我一直都鍾愛的 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)
(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
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」,放上網給其他人也玩玩,其實這個建議我亦曾經想過,可是早前太忙碌,後來忘掉了,現在也可以再想想呢。
這事件說明了,沒有文獻說明的 SDK 及 API,就是令人迷惑不已的,小小的問題就是不容易發現原因及解決之。
早前我曾經說過,新的 Ngan-GINE'3D 差不多完成了,但這兩個星期,都在做一些整合的工作,原因是,之前一些原 Ngan-GINE'3D 中的工具,都是另外放到一個 Library 中,和 OGRE3D 的部份是分開的,近日就是將這些工具都整合起來,進度方面也不錯,主要部份尚欠將 Newton Game Dynamics 套進去,希望能在短期內做好吧。
近來有朋友叫我,將之前發報過 Trailer 的「 Final Spike」,放上網給其他人也玩玩,其實這個建議我亦曾經想過,可是早前太忙碌,後來忘掉了,現在也可以再想想呢。
Sunday, July 08, 2007
奇怪的... Weight

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

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。
但是,我下載了最新的 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 程式,已足夠令我質疑自己的編程能力。

到了最後,我用了大約兩天的時間,才完成這個只有兩個選項的 Win32 程式,已足夠令我質疑自己的編程能力。
Sunday, June 17, 2007
OGRE 下的追尾 Camera
要用 OGRE,來做以往用 Direct3D 做過的追尾 Camera,真的有點困難,因為 OGRE 在 Concept 上真的很不一樣,令我難以捉模。用了差不多兩天的時間,才能做得到,可惡。
我進一步不喜歡 OGRE 了,不是因為她的複雜,而是她的 Pipeline,我就是弄不明白。Camera 究竟是在何時更新的?那個時間可以做 Ortho View?究竟有沒辦法簡單地做 2D Render?以上種種問題,對我來說,跟本就是一個「謎」!
我進一步不喜歡 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 )。
能夠運行是不難的,但是物件的移動速度,會直接影響結果才是最難。物件現時的位置,和下一個 Step 的位置差距,會導致物件由 A Sector,突然移到 B Sector,真的可惡。在不得要領,及沒有解決方案的情況之下,可以做的就是妥協,還是用 Physics Engine 做吧,幸好我只用了一個星期的空餘時間做實驗,就當是一種學習過程。

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++ Express 及 PellesC,都是免費的 ),感覺非常的良好。
首先是自家的數學函數部份,不可以再用 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++ Express 及 PellesC,都是免費的 ),感覺非常的良好。
Thursday, May 24, 2007
令人討厭的OGRE
Monday, May 21, 2007
Level Map Collision Detection
早前我說過,不想再用 Physics Engine 來做 Collision Detection,另外亦構思了一種方法來代替,在過去的週末,也正式開始了新構思的實驗。
我的方法其實很簡單,就是「人手規劃」方法,原先我的 Ngan-GINE'3D 中的設計,已經將 Render 和 Collision 的地圖作分開處理,這樣其實已經對人手規劃法埋下方便的伏線,加上我的 Collision 地圖資料已經是 Sector 形式儲存,用於人手規劃法時亦不需要改寫,在種種理由下,似乎不得不實驗一下這個「人手規劃」方法。
朋友問道:「會不會有 Precision 問題?」
我答:「不知道,但是數年前的 Final Spike 參賽版本,都是以這類形式製作,相信問題不大。」
我的方法其實很簡單,就是「人手規劃」方法,原先我的 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,亦想著要怎樣才可以代替她,而又可以盡量做到小問題,我的構想也差不多成型了,只要實踐來證實可行,希望有時間試試吧。
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
Saturday, April 21, 2007
久違了的模擬器世界
Subscribe to:
Posts (Atom)