Sunday, September 05, 2010

在 Content creation 上的目標

很久沒有在 Blog 中更新了,因為近來很忙碌,先是要搬屋,其後是搬屋後的煩瑣雜務,而且一個人住了,要處理的事比以往和家人住的時候要多,就這樣便忙了接近兩個月了。希望能在九月中前全部整頓好,因為在九月中我便要開學進修了,如果在那之前也還沒搞好,恐怕會進入混沌空間呢......

近來不僅是沒有寫 Blog,甚至是 Programming 及繪畫也小了很多。在 Programming 方面,曾經嘗試了一些東西,就是希望能夠在 Modeling 軟件 ( 例如 3DSMax ) 及 OGRE 中間,製作一個轉換工具,方便一些使用如 3DSMax 的 Artist 們,製作 OGRE mesh / skeleton,然後在我的 Ogng3D 引擎上使用。初時我選擇了 FBX 格式,那時候我在網上看到一些如何讀取 FBX 格式的 Source code,還以為不會很困難,但奈何發現原來比想像中困難很多。

其後經過多日嘗試,始終不能明白 Skeleton 及 Skinning 的部分,所以便暫時擱置 FBX 格式。然後經同事的介紹,便開始看一個叫做 POD 的格式。這個 POD 格式是來自 PowerVR 的,看它的原因,是它的 Exporter 工具有不斷更新,並沒有被棄置,其次時它的 API 是一套 C Language。但試作了幾天,又發現了它的格式很難控制,而且一些簡單的讀取 Vertex 資料上也錯了,比較 FBX 更難駕馭。

說到底,可能是自己的數學知識和 Programming 能力不夠,所以才對這些檔案格式運用上,出現老鼠拉龜的情況。看來我還是要回到 FBX 的格式上再嘗試,希望有一天能夠完成這個 FBX -> OGRE mesh / skeleton 的工具吧。

Saturday, June 19, 2010

Gameplay Programmer part.I

自己進入遊戲開發業界工作的時間,是 2006 年的夏天,在初入行的時候,並不是一位 Programmer,而是 Artist。完成了第一個 Project 的時候,也是轉職做 Programmer 的時候 ( 好像這說明了我在美術方面就是不及格... ),老闆說要我做一個 Gameplay Programmer,就這樣,便做了幾年 Programmer。

其實 Gameplay Programmer 和其他位置的 Programmer 有甚麼分別?我不是從正規的途徑,學習編寫遊戲程式的 ( 說到底,在香港這種編程就只有是自學的 ),所以不知道正確的遊戲編程是怎樣的,但經過了這幾年時間的洗禮後,發現了一個有趣的情況,就是 Gameplay Programmer 要做的事,很多時候是不能用常規編寫程式方法就可以完成的。因為在玩家玩遊戲的時候,遊戲規則及系統的千絲萬柳,與玩家之間的互動關係,並不能單純地依照常規就可以連繫起來的。

我幾年前曾經在 Blog 說過,覺得自己以往做有關 Game Engine ( 很不專業的說,可以做出遊戲就算了 ) 的時間太長了,應該往前走嘗試一下其他範疇,例如 Gameplay,所以便開始嘗試製作「 Final Spike 」。Gameplay 的製作,與 Game Engine 有著很大的不同,近十年來,Game Engine 在網上的世界裡隨時也可以找來幾個,而且有些還提供了 Source code 。但是看看有關 Gameplay 製作的資料,在網上就是很難找來一個適當的例子作參考 ( 那時候找到的,都是 Tetris 類的... ) 。如果你沒有有關方面的經驗,或者沒有一份完整的 Game Design / Tech Design 文件,想開始做 Gameplay 是很困難的。

Gameplay 製作中牽涉的認知,不是簡單地從課本中就能夠學到,例如沒有玩過動作遊戲,便不太明白「 操控感 」的重要性,沒玩過 RTS 遊戲,可能不太明白「遊戲平衡」的關鍵。在我初時進入遊戲製作行業時,有朋友問我,究竟在哪裡,或怎樣才可以學習到 Gameplay 製作?那時候的我,不太能夠說出答案,但是累積了一點經驗後的今天,有些心得可以說一說。

下回再續。

Sunday, May 30, 2010

To Compromise 妥協的意義

長久以來,很多人說,妥協是一種藝術,而在遊戲製作的過程中,妥協不只是藝術,也是認知。怎麼樣的認知?有關遊戲製作的認知:技術上,能力上,規模上,時間上。

技術:在甚麼平台上製作呢?Programming Language、2D、3D、Shader、Physics、A.I. 及 Network 等等,能夠做得到遊戲設計的要求嗎?要開發 iPhone 遊戲,懂得 Objective-C 嗎?2D 技術比較舊,Artist 及 Programmer 認識嗎?3D 及 Shader 技術上完整嗎? Physics 能夠順利駕馭嗎?A.I. 可以滿足 GamePlay 的要求嗎?Network 技術有否足夠支援?遊戲製作的工具成熟嗎?

能力:是關於製作人員的能力為主,Programmer 能否做出遊戲設計的要求嗎?Artist 可以做出 2D Pixel artwork 嗎?3D Modeling 及 Shader 上,他們能夠清楚掌握嗎?

規模:製作人員數量能否應付製作所需的要求?過多人員或過少人員,都會對製作產品過程有不同的影響。

時間:有技術,有能力,規模恰當,但時間是否充裕?先不談論製作期間的任何改動導致的延誤,製作開始時所預計的時間是否恰當?

以上種種因素,其實也可以從「妥協」中找到出路,例如在 Wii 上不能做出 XBox360 / PS3 圖像質數,便要將圖像要求降低。亦不能要求在 iPhone / iPod 上,製作出一個超越 God of War 的 3D 動作遊戲。甚至不應該要求,在 2D Pixel 中,要表現出浮點數 ( floating point ) 的精確度。時間上不容許延誤,那麼可以嘗試刪減遊戲的內容,來縮短製作期。但可惜的是,剛剛所說的,也可以是完全沒用的,因為還有一個元素,令「妥協」變成不可取,令整個遊戲製作翻天覆地,那是甚麼?就是 Game Designer,一個對以上所說的都毫無認知的 Game Designer。

所以,Game Designer 不好做,做得好的 Game Designer 都不能「想當不想做」( 廣東話 : 恨撈唔恨做 )。

Monday, May 03, 2010

忽發奇想 - Timer

在電腦裡,Timer 是一個很重要的部份,在 Hardware 和 Software 中也亦然。很多 Program 程式中也有 Timer 來作計算的用途,在遊戲程式中亦當然也很多用呢。

今晚忽發奇想,究竟 Timer 是否一個很費時的工具?想到這裡,我便想用 Ogng'3D 中的 Timer 工具做個小實驗。

建立 256 個 Timer,每個 Timer 設定的 Delay 都有不一樣,究竟程式在這麼多的 Timer 下,會否被拖垮呢?答案是:不會!

在 Ogng'3D 中,使用了 256 個 Timer 雖然會令程式變得慢了很多,足足慢了十倍之多,但要在 60 FPS 中運作,還卓卓有餘。

其實,Timer 並不是那麼恐怖的呢......。

Sunday, May 02, 2010

Ogre on the iPhone

昨天在 Ogre Forum 裡看到有位用家,在 iPhone 3GS 測試了 Ogre 的效能,結果很吸引的說:
  • 150,000 triangles, 1 directional light, 1 texture at 30fps
  • 140,000 triangles, lighting off, 2 textures (multitexture) at 30fps
  • 100,000 triangles, 1 directional light, 1 texture, 25 batches at 30fps
  • 16 1,400 triangle characters with 24 skinned bones and a 50,000 triangle, 25 batch static backdrop and 1 directional light at 30fps
  • 32 of that same character playing the same animation using blend shapes at 30fp
以上的數據,顯示 Ogre 在 iPhone 3GS 中的表現很不錯,很適合做些小型遊戲。

[ Forum 原文 ]

Saturday, May 01, 2010

可惡的GUID古董

我自己很喜歡用 C 寫程式,所以我是用一個叫 PellesC 的工具,來編寫遊戲程式。

早在一年多前,PellesC 更新了新版本 ( 是個 Major release 呢 ),我很興奮地下載來用,但是惡夢開始了,因為用這個新版本 Compile 的時候,出現了一大堆如下的 Error:
......
xxxXXX_GUID is multiply defined - in YYY.obj and ZZZ.obj
yyyXXX_GUID is multiply defined - in YYY.obj and ZZZ.obj
zzzXXX_GUID is multiply defined - in YYY.obj and ZZZ.obj
......

我不知道是甚麼問題,完全不明白新的 PellesC 為何會出現這些 Error ( 舊的版本卻完全沒有以上的問題... )。上網查查看,一大堆不明所以,又或者不相關的搜尋結果,看得我頭也大了。這一大堆古怪的 Error,令我只能回到舊版本的 PellesC 中,直到今天。

雖然近月的工作超級忙,但也抽了丁點的時間做些 Ogng'3D 的改善工作,決心再在那堆 GUID 問題裡鑽一鑽。上網再細心地看那些不明所以的搜尋結果,發現了 INITGUID 這個東西,原來這個東西可以說是個古董 ( 有點誇張 ... ),心裡忽然想到可能和這個有關係,再回看 Ogng'3D 中的 Source code,搜查一下,發現我確實用了這個 INITGUID,這時忽然覺得曙光漸露,即時裝上那個 PellesC 新版本 ( 但已是一年多前了... ),刪除了那句 INITGUID,然後 Compile,成功了!

原來是 INITGUID 這個老古董,害我不能用 PellesC 新版本達一年多,很令我討厭的說!( 同時也覺得自己很戇居,超級的那種... )

Sunday, March 21, 2010

2D, 2D, 2D

在遊戲製作當中,其實 2D 是很重要的一環,絕對是一個不可忽略及忽視的技術層面。

我對 2D 技術一向都很重視,尤其是 Sprite 中的各種運用方法,絕對是屬於「非常固執」。用了 OGRE 這樣的長時間,一直對它極小 ( 差不多沒有 ) 的 2D 支援很不滿,但偏偏 OGRE 的開發團隊就是忽略這個範疇 ( 曾經想過為此而放棄 OGRE...... )。

所以在 Ogng'3D 中,我用了一個比較小用的方法做 2D,就是以 Billboard 加上 Orthogonal Matrix 來完成。這個方法當然不太好,因為如果 Billboard 使用 Vertex rotation ( 原設為 Texture rotation ),會有比例錯誤的問題,但在我所定下的「盡量不要碰 OGRE 擴展或 Source Code」的原則下,唯有妥協了。

其實上面的做法已經完成了一段時間,這兩天我花了大部份時間加以改善,現在已經可以在屬於 Sprite ( 2D ) 的 Scene 中,使用 Manual Object 及 Ribbon Trail 功能做一些 2D 的效果 ( 下圖 )。

Thursday, March 04, 2010

提不起勁的近況

近來因為工作的關係,放工後精神都提不起來,有時候精神不錯的,也不想再對著電腦寫程式,反而是對著電腦作畫。這種情況其實在兩年前已預計到了,因為工作上要寫程式,很正常就不想在工餘時也對著程式,唯有發展另一個興趣了。追看我這個 Blog 的朋友,可能會越來越失望了,因為我越來越小提及一些做遊戲的話題了。

雖說提不起勁在工餘時寫程式,但近日對 Ogng'3D 也有做了些小改動的。就是將當中的 Timer 功能,轉為使用 OGRE 的 Timer 功能,原因當然是因為多平台支援的原因了。

有時候會上網看一些遊戲的 Game-play 片段,每每看到有關「SpikeOut」的,心裡總是覺得不爽,因為自己總是將「Final Spike」擱在一旁,在去年還大膽地說想做個網路連線遊戲...... 寫程式的技術改進了,但自己想做的就只有那種下場。

閒來作-下畫,可以減壓,舒緩一下精神上的壓力。

Sunday, February 14, 2010

遊戲音樂 - 主題曲

從我一開始玩電視 / 電腦遊戲後不久,便已經喜歡上遊戲音樂這個領域,還記得以往紅白機 / 超任 / MegaDrive 年代,或是同期的 Arcade 遊戲機,都是一些簡單的電子音樂。後來到了用 CD 作為遊戲媒體後,遊戲音樂有了很大的變化,不再是些簡單的電子音樂,而是豐富的真樂器領域。

前幾天看到同事們在討論遊戲音樂,所說的是 Zone Of the Enders 2nd Runner 的開場曲,令我想起了一些很喜愛的遊戲主題曲。說實在的,遊戲的主題曲不是新鮮事,但是卻很小出現,近年最為 Gamers 所認識的,可能是美國遊戲「Portal」的 "Still Alive"。

但我最喜愛的,還是幾個日本遊戲的主題曲,它們除了音樂好聽外,歌詞也很好。

○ Zone of the Enders - 2nd Runner "Anubis" (Opening)

○ ICO - You were there (Ending)

○ Panzer Dragoon Orta - Anu Orta Veniya (Ending)

Thursday, January 28, 2010

這樣的遊戲我才喜歡

大約在半年前,買了一部 XBox360 回家遊玩,在這段時間中,我買的遊戲其實有限,而且有幾隻都是買特價版本 ( 推出了一段時間的遊戲,用優惠價再包裝推出的那種 ) 。到了近期很喜歡的「Bayonetta」,實際買來玩的遊戲可以說是寥寥可數。

複雜的遊戲,我一向都不在行,例如 Sony PlayStation 的 GT,或是一些 RPG 遊戲,只要是遊戲系統要花上多一點時間學習,往往我都不會接觸,如果接觸了,也很容易中途放下。有些遊戲,例如「Bayonetta」和「汪達與巨像」,雖然這兩個遊戲也不太相同,但都有一個很好的共通點,就是很容易入門,玩家可以很容易掌握到遊戲及其系統。雖說入門容易,但它們的設定都是頗為深入的,在玩得熟練一點後,都能夠發掘到另一個層次或新鮮事來挑戰。

總是在想,遊戲要「好玩」,就好像要讀好心理學一樣,從人的習性中,找到吸引人的東西,將其轉化為遊戲系統。

怎麼樣的遊戲才會好玩?或者先將範圍縮小一點,以我喜歡的「動作類遊戲」來說,怎樣才算好玩?先要從「爽快」處入手?然後在上面加入「多變」?之後再加上「難易度調整」?最後加入「特定挑戰」?

對於遊戲設計來說,我不是專業,所以上面說的都不能作準。近年好玩的遊戲真的可遇不可求,所以我在換新電腦後,也找來了辦法,重玩 2005 年的「汪達與巨像」,重溫一下好遊戲的感覺。

Sunday, January 17, 2010

John McClane 的「游擊戰」

我近來在 Facebook 上,很喜歡用「游擊戰」來比喻工作上的情況,有人問道何謂「游擊戰」?我所說的游擊戰,會是解說為:

就像電影「Die Hard」中的主角 John McClane,每次身邊甚麼也沒有,只得自己隨身的一把半自動手鎗,沒多沒少,但要處理的往往不是一件簡單的小偷案。

要是形容在現實中,工作的時候有如在參與游擊戰,就有如電影中的 John McClane,你沒有適當的工具,為了完成手上的工作,你只能夠用所僅有的知識,和身邊一些零碎的文具,來盡量地完成工作。過程是艱辛的,而且沒有任何保證,例如若工作要求有任何改變,往往得重頭開始。游擊戰很適合一些年輕的人,或剛進入社會工作的畢業生,因為每天所發生的情況也可以不同,感覺是刺激的,及充滿挑戰的,希望爭取每次學習經驗。

John McClane 不太享受當中的挑戰,每次也是逼不得已,他每次可以做的就只是自娛一番,然後用他認為最好的方法應對,遍體鱗傷地完成工作後,最後就連道謝也得不到。但至小他也有幸福的一刻,他的妻子。

p.s. 多月沒寫 Blog,新年一來就說些和 Game programming 沒關係的事......。祝大家在 2010 年有更好的發展!

Thursday, November 12, 2009

另一個 Audio / Sound Engine

一直以來,也在找一個可以代替現在使用的 Sound Engine,但是總是找不到一個合適,而又是價廉物美的 ( 還希望可以免費呢 )。前幾天找到了,這個就是 SFML 。

其實這個是一個 Multimedia library ( 就好像 SDL 般 ),當中包含了一個 Sound Engine 部份,而這部份可以無痛地加入到 Ogng'3D 中,另外它也支援 MinGW 及其他 Platform,不錯的說。因為我的 Ogng'3D 不是要用來開發如 RockBand 的音樂遊戲,所以我不需要使用一些 Effect 功能,所以便選擇了這個簡單輕便的 Library,其實自己早已知道這個 SFML 的存在,但總是找不到時間看看它,就在過去的週末時間,認真地用點時間看看,很快便已經將它裝進 Ogng'3D 了。

順帶一提,這套 Library 是使用了 zlib / png license 的。

Saturday, November 07, 2009

一個使用 OGRE 的遊戲 : TorchLight

被外界喻為 Mini Diablo 的遊戲:「 TorchLight 」剛剛推出了,吸引我的除了是她使用了 OGRE 作為 Rendering 部份外,還有另一個吸引我的地方。

前幾天有位同事介紹我看這遊戲的工具:「 TorchLight Preditor 」。看過這工具的系列 Video 後,便覺得這工具很有啟發性,尤其是對於我這種製作工具的初哥,當中確實有很多值得參考的功能。( 請大家不要,以太過自我保護的方向去看它,例如「 這工具只適合做這類遊戲 」之類,這樣會錯過了它的啟發性。)

最喜歡它的 Logic 部份,因為這部份可以由 Designers 完全控制,不需要任何的 Programmer 協助下,完成 Level Design,還可以即時試玩,起動亦很快速,簡單說:就是很好用!

雖然這個目標很...遙...遠...,但這工具真的很有參考價值。

資料:Youtube 的影片

Monday, October 26, 2009

閒來的 Ogng3D 工具更新

之前說過,我重新製作 Ogng3D 的設定工具,但在那之後,發覺其他工具也衍生了一些小問題,例如 Render Window 大小錯了一點點。所以在這幾天的重陽節假期,整理了其他工具的一些小問題。

有趣的是,在整理工具的問題時,卻忽發奇想地想到了一些點子,從中亦改善了 Ogng3D 中的一些功能。例如將所有的 Plugins DLL 都放到一個 Folder 裡面,可以在 ResourceGroup 以外的地方讀除 .cfg 檔案,Event 系統中的單一 Event 可加入多個 Callbacks ...... 等等。這些一點點的功能改善,雖然不是甚麼大功能,但卻可以在使用 Ogng3D 時更方便。

點子不單單是在一些細節上,亦在新功能上有一些,那是甚麼?就是人物更換裝備了。這個點子幾個星期前已出現在腦裡的了,可是 OGRE 是那麼的複雜,總是很難找到適當的方向或答案,但在這兩天好像看到了方向,遲些要找些時間來實驗一下。

看看現在的 Ogng3D,發覺她已經有八百多個 Functions 了,DLL 的檔案大小是 990KB ( Release 版本 ),對於一個 Game Engine 來說,可能不是很大,但我總是覺得有點臃腫,可能是因為 OGRE 吧,臃腫的感覺就是揮之不去。

Friday, October 16, 2009

Bayonetta 的一些有趣資訊

話說,新遊戲「 Bayonetta 」即將推出,我剛才便去一去官方網站看看,那裡其實有一個開發 Blog,良久之前到過一次,在她發售前去看個究竟。

當中有很多篇 Blog 也很不錯,其中有數段有趣的,和大家分享一下:

Prototype 影片:這片段看到遊戲初時的試驗。


Gameplay 影片:這片段有趣的地方是,當中沒加入任何 Effect


Source Code 影片:顯示了其中一個 Source code 檔案,內裡有 13000 行,而整個 Project 有約 1800000 行 Source code。

Saturday, October 10, 2009

Generic Approach

其實,一個遊戲引擎 ( Game Engine ),究竟能否用「 Generic Approach 」為方向呢?

為什麼要用 Generic Approach 呢?用這方案的好處,是比較容易組合配件,擴展性高而且靈活 ( 同事說,編程弱的也可容易做到,但我卻不懂... )。那麼究竟實際上是怎樣的呢?我個人的意見是,Generic Approach 是不適合用來製作 Game Engine 的。

電腦遊戲有很多很多的種類,尤其是 3D,是不太適合 Generic 化 Game Engine 及製作流程 ( 文檔處理不計算在內 )。適合 Generic 化的,只是 Graphic Engine、Audio Engine、Physics Engine 或 Script Engine。當所有東西組合成一個 Game Engine 時,需要的不是 Generic Approach,而是類似 middleware 的 API 或工具,Game Engine 的出現,就是可以提供這類 API 或工具。如果每一個遊戲,都是從那些單一 Engine 組成,那麼 Game Engine 的存在是怎麼樣的價值?

3D 遊戲要適合的 Engine 工具來製作

2D 或小型遊戲可能比較適合 Generic Approach ( 左圖 ),而 3D 遊戲就要適合的 Game Engine 工具來製作 ( 右圖 )。

最後補充一些,我想說的是不適合,不是絕對不可以。其實,甚麼事情也可以 Generic 化,只是看看最終出來的結果會是怎樣而已。

Thursday, October 01, 2009

VirtualBox 下的 Ogng'3D

在兩個星期前,忽發奇想地想在其他電腦上測試 Ogng'3D,所以便找來了 VirtualBox 軟件來試試。

圖中我在 VirtualBox 中執行了一個 Demo (OpenGL),再在我的電腦上執行同一個 Demo (DirectX),我有點驚喜的,因為在 VirtualBox 中執行的 Demo,執行速度上也真的很不錯,雖然 Demo 中只得一個 Actor (Entity),但感覺真的很有趣。

Sunday, September 27, 2009

動作遊戲的下場

製作動作遊戲,一直都是我的目標,雖然我踏出過一步,但距這目標還有很遠。

其實動作類遊戲在遊戲市場上,比起其他類型,佔的百分比一向都較高,但是在 3D 的遊戲世界中,你總是很難找到一隻「讚好」的動作遊戲。近來有多隻動作遊戲出現在遊戲市場中,例如:Mini Ninja ( PS3 / XBox360 / PC )、The Warriors: Street Brawl ( XBLA )。試過這兩隻遊戲,有點對現在的動作遊戲的感想想說說。

先說說 Mini Ninja,初時在試玩的時候,感覺也可以的,但總是感覺到一種不協調,但就是說不出來是甚麼不協調。後來和朋友討論這遊戲,朋友一語說中了我想不通的不協調感覺,那就是『 悶 』!Mini Ninja 一個很敗北的點子,就是用了非常大的地圖,而且有分支路可以回到起點處。一個動作遊戲,有機會令玩家在地圖上轉來轉去而到不了目的地,而且每每玩家走上超過 100 公尺,也沒事好做的,令遊戲變得不是一般的悶。

再說說 The Warriors : Street Brawl,玩過試玩版之後,我不太相信會有人給錢下載它,因為在遊戲設計上,實在是太爛了。玩家可以被僅僅三隻敵人圍堵不停打至倒地,完全不能有反擊,雖說可以用擋格來擋住敵人的攻擊,但是敵人跟本就是不停地攻擊。玩家可以用 Super Attack 作無敵反擊,但是此招式時間短,範圍細,用途跟本只有一個:就是用來逃命的!此遊戲的設計,跟本沒有動作遊戲應有的爽快感,有的是遲鈍及挫敗感。

一些小型動作遊戲製作公司 / 獨立製作人,雖然有不錯的遊戲系統,但總是不能成功推出市場。例如「 Hurricane X 2 」,遊戲系統看來也不錯,但是據資料表示,這遊戲多次參加了 XBox 的「 Dream、Build、Play 」比賽,但總是不能入圍,都了今年才能夠在 PAX 中出場。動作遊戲究竟要努力多少年,才能得到各發行商的關注?看來還是那一句:「 距這目標還有很遠。」

最新的 MinGW + OGRE 好像沒事了

在不久前,因為不知名的問題,用 MinGW + OGRE 做出來的 Release / Debug 版本,在計算 Quaternion 時會出錯,這個問題纏繞一陣子之後,好像解決了。解決的辦法就是更新 MinGW,使用新的版本 5.1.4。

雖然新版本的 MinGW 中解決了計算 Quaternion 的問題,但是又衍生了其他小問題,就是一些不同的 Compiler 有不同的 Compile / Linking 處理。例如 Visual C++ 可以這樣的:

quat.ToAngleAxis( rad, Ogre::Vector3::UNIT_X );

但是在新版本的 MinGW 下會報 Error,就改成這樣做:

Ogre::Vector3 v = Ogre::Vector3::UNIT_X;
quat.ToAngleAxis( rad, v );

剛才說的小問題雖然簡單,但是感覺有點莫名的古怪,這種「基本的處理」也有不同,怎樣要人適應呢?而且 MinGW 報的 Error 就是看不明白,更令人摸不著端倪。

Sunday, September 20, 2009

Ogng'3D 的 設定工具

市場上有很多遊戲,都會有自己的一個遊戲啟動工具 ( Game Launcher ),當中大部份也會有一些遊戲引擎的設定功能,讓玩家在啟動遊戲前可以改動一下。

我亦有為 Ogng'3D 製作過一個遊戲設定工具,但是其中有些設定是 hard code 的,所以不是那麼「有用」。昨天決定用一些時間,特地為它的功能完善化,最基本的就是不用再 hard code 當中的設定資料。

首先運用 OGRE 的基本功能,啟動 Ogre::Root,再載入 DirectX 及 OpenGL 的 Plugin,從中套取可使用的畫面解像度。大約用了半天的時間,完成了這個功能,再用了少半天 Debug。

這工具的存在價值,在於 OGRE 的實時改動 Full-Screen 及 Windowed 模式,便會出現問題,為了解決這種難解的情況,最好的就是製作這個工具,讓玩家在啟動遊戲前可以做點改動。