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++ Express 及 PellesC,都是免費的 ),感覺非常的良好。

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) )」。