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 模式,便會出現問題,為了解決這種難解的情況,最好的就是製作這個工具,讓玩家在啟動遊戲前可以做點改動。

Wednesday, September 02, 2009

CEDEC 2009 的一些話

別要誤會,我沒有出席今年的 CEDEC 2009,我只是看了幾段有關遊戲製作的演講 Slide,有感而發,如果你也懂小小日文的,不妨去看看:

「Demon's Souls」的 Game Design
  當中有幾點真的很有趣,說道近年遊戲製作的趨勢,及其中問題所在。Demon's Souls 的製作核心價值。Network 帶給 Game Play 的是甚麼。

導入物理引擎的製作探討
  使用物理引擎來製作遊戲,是極麻煩的又一鐵証。

不知怎的,總是覺得那些來自日本的遊戲製作經驗談,都是特別動聽的。:-P

Sunday, August 30, 2009

謎之 C::B + MingW + OGRE 問題 !

在製作 Ogng'3D 的工具上,我會使用 Visual C++ Express,因為它是免費嘛,但因為它是 Express 版本,要 Deploy 的話,可以說是非常麻煩,所以,如果要用 Release 版本來 Deploy 給普通用家,我會使用 Code::Block + MingW 來完成。

這個形式一向都沒有問題的,但昨晚在測試 Release 版時,發現在計算 Quaternion 時出現了問題,如下面 [左圖] 般,而 [右圖] 的 Debug 版本 ( Visual C++ Express ) 卻一點問題也沒有。



最可惡的是,Visual C++ Express 的 Release 也沒有問題,究竟 MingW 有何問題了?

Saturday, August 29, 2009

Character jumping style, game-play

我很喜歡玩動作遊戲,但是歐美的遊戲都會令我卻步,為什麼呢?其實有很多原因,多數是一些「感覺」的差別,但那些差別很多人也不太明白,我在這裡希望能夠為大家說一說。

跳躍 (Jumping),在動作遊戲中必然會有的,而跳躍亦是一項非常重要的「感覺差別」,我特地編寫了一個 Demo,從影片中顯示一下,日本式遊戲,和歐美式遊戲的差別:



片中看到的,是以垂直上跳躍為例,看過之後,覺得怎樣?會不會覺得很大差別?而你又比較喜歡那一種的跳躍呢?

在日本式的遊戲中,多數會分開垂直跳躍及向前跳躍兩種動作,而歐美遊戲就多數只用一種跳躍動作。

Thursday, August 27, 2009

修復斷層 & 更新

兩個月了,沒有說過有關遊戲 / 引擎的開發話,因為工作上有點忙,都沒有多少時間可以用於開發上。

早前曾經說過,Ogng'3D 開發 ( 再三 ) 支援 Animation BlendMask 之後,當中舊的 Animation 控制部份,和現有的 Actor 工具有點斷裂了,總是沒有時間來修復,這幾天榨取一點點時間來修復一下。因 Animation BlendMask 完全後,整個 Animation 控制同時支援 Blending,所以舊的 Animation 控制部份便可以除掉,全部都用上新的有 Blending 功能的 Animation 控制。而且今晚想到了一個新的點子,就是在 Animation Event 控制中,加入一個單純的自動跳到另一個 Animation 的功能 ( 可開 / 關 ),那麼一個簡單的 Animation transition,在 GamePlay 製作時便不用特地加入單一 Event Callback function 了。

同時,亦簡化了現有的 Event 系統,希望速度上能夠快一點點。但是,有關 Sprite 的製作工具方面,還未有一些進展,始終礙於 MilkShape3D 的功能限制,要做到不離開 MilkShape3D 而製作出可用的 Sprite,確實不是一件容易的事。

Tuesday, August 18, 2009

那是用家的軟件

我所製作的 Ogng'3D 遊戲引擎,或是過去的一些簡單遊戲,都是自己獨力完全,因為身邊的朋友多是玩遊戲,對製作遊戲而言都沒有興趣 ( 多是幫忙試玩一下遊戲 ... )。這個方法有一個好處,就是可以隨心所欲,做自己喜歡做的工具,而且不需要聽取其他 Artist 的意見 ( 因為我就是當中唯一的 Artist ),只要做出想做的遊戲就行了。所以,Ogng'3D 遊戲引擎我用得很順暢,就如我之前說過的,用它來製作遊戲時,都覺得不像在編寫電腦程式。

愈接觸得多遊戲製作流程,就愈覺得工具是否好用的重要性。我所說的工具,不是只說 3DStudio Max、MAYA 又或是 XSI 等等,它們有多強大的功能也好,但是卻不能夠完全滿足於製作遊戲,因為電視 / 電腦遊戲中,可用的資源真的很有限。所以遊戲製作公司都會因應自己的遊戲引擎,製作一堆自家遊戲開發工具,來方便公司裡的員工製作遊戲的內容。

我這一種「閉門造車」的習慣,其實不是一件好事,因為跟本沒有任何用家反饋 ( User Feedback ),而好的用家反饋,就是開發工具的進步源頭。如果你是一名遊戲開發團隊中的 Artist,或是從事內容製作,那麼你有沒有對使用中的開發工具,作出任何用家反饋呢?記著,這個對於遊戲製作流程是很重要的,一個遊戲能否順利地製作完成,好的用家回饋是非常重要的。

p.s. 確實,有時候說出反饋時,感覺有點像對牛彈琴,最後只會被忽略,但只要是問心無愧,那何懼之有。

Sunday, July 12, 2009

向成功學習

我曾經是一個蘋果電腦的用家,家裡還有一部 Mac Mini,一向也很喜歡 Mac OS 的軟件,因為在很多方面,設計上都很人性化,及充滿了親和力。

What open source can learn from Apple

很多時候及情況下,向一些已成功的人或事學習,是讓自己得到成功的其中一個捷徑。我也準備,自己的遊戲引擎的工具,向 Unity 學習一下。

Saturday, June 20, 2009

The best game dev. tool these years !

近年最流行的開發工具:

Action Game, Combo design !

說到 Action Game 動作遊戲,都是一連串連續攻擊,敵人被玩家打得招架不來,從而令玩家們得到極大樂趣。但是動作遊戲一向都是一個非常難的題目,只要有一點點搞不好,例如連續技 Combo 設計上,沒有吸引力的話,玩家就會離你而去。

之前任職 Capcom 遊戲 Devil May Cry 的製作人,離職後到了 Platinum Games 製作 Bayonetta,遊戲就像 DMC 的孿生兒,但在 Bayonetta 當中的 Combo action design,和 DMC 比較可說有過之而無不及。

Bayonetta Combo Megaton Gameplay (video)


日式動作遊戲是否已死?我說,還看日本遊戲製作商的取向,我這類自小被日本動作遊戲薰陶的玩家,對歐美的動作遊戲從來提不起興趣,但是日式動作遊戲,在 3D 遊戲世界中確實有點不濟,快點努力起來吧!

Sunday, June 14, 2009

Animation BlendMask 再三造訪

有時候,做完一個 Engine 功能之後,未實際使用過,始終也不能證實它有否問題。就像之前做的 Animation Blendmask 功能,初時以為完成了,但在實際使用時,又再次發現很多問題。

問題主要是,當程式要不停轉 Animation 時候,Blending 便會有機會出錯,又或是沒有作出任何 Blending。這些問題,多數是自己在處理 Animation 轉換時的一些邏輯錯誤,對於 Animation Blending 範疇,自己是個初哥,都是要實際使用才會發現問題的存在,這也是製作 Game Engine 有趣的地方。在這兩天的週末,都埋首在家中測試及修正 Animation Blendmask 的問題。

當然我也不能肯定,這個功能還有沒有問題,這個始終要在實際使用才會得知呢。

剛才又發現,因為 Animation Blending 的功能改動了,Actor 的製作工具又 Crash 掉了。對於這些不斷的重複重複又重複的修正,真的令人沮喪及洩氣,開始令我覺得煩厭了,看來我不應該再在 Ogng'3D 裡,將舊有的功能提昇或改動,因為不斷的修正,確是很煩擾的。