Saturday, May 24, 2008

學習做遊戲製作的迷思

之前我曾經說過,製作遊戲不難,只要對自己的要求不要過高便可以,例如不要一開始便製作如「Final Fantasy」或「Metal Gear Solid」系列的東西。做一些像 Casual Game 之類的遊戲作為開始,所獲得的相關技術和知識,也可以慢慢地步向成熟。又或者,做一些簡單遊戲的 Clone 版本,來實踐一下自己的技術及知識,也是一個很不錯的選擇。

做遊戲的 Clone 版本,其實也是一個遊戲製作的重要科題,當中要瞭解的事情也不小:
● 原遊戲的操作系統
● 原遊戲的 Game Play 系統
● 原遊戲的 Game Flow
● 所需的技術自己能否做到 ( Engine, Artwork ... etc )
● 自己所擁有的技術及資源是否充足

若然選擇要製作一個遊戲的 Clone 版本,以上相信為最基本要做到的,應該視為最基本的目標,加以實行。而且有一點我覺得是很重要的,那就是能夠學習到,在有限的資源下,做到一模一樣的東西出來。

我們有時候也想要加入自己的想法,覺得原遊戲應該要有這個 Feature 或那個 Game Play 的,那麼開始製作的時候便加到自己的 Clone 裡。其實這個是很壞的學習及實踐步伐,為什麼呢?其實原因就是,因為是「 有它的原因的 」。每一個遊戲在製作的過程,總會有些原因,會將一些 Game Play 或 Feature 刪減。這些原因我們多數也是不會知道的,除非是直接和開發人員工作,或是直接問他們 ( 例如一些雜誌的訪問 )。如果硬要將一些自己的 Idea 加到製作 Clone 裡面,到最後可能會遇到一些難題解決不了,那樣只會令你覺得沮喪而想放棄的了。

所以結論就是,如果要做遊戲 Clone 來作為鍛鍊及實踐技術的話,首先要做的,就是要做到和原遊戲一樣的東西。如果連這個最基本的條件也做不好的,那麼你便要想想,製作 Clone 遊戲的方法是否適合你了。

Tuesday, May 20, 2008

GUI

「 GUI 」是甚麼呢?Graphic User Interface 是也,但我想說的不是 Graphic User Interface,而是 「 Game User Interface 」。

在做遊戲的時候,免不了要做的,就是一些遊戲選項的版面,例如:Main Menu、Option Menu、Profile Menu ... 等等,但是我不太同意那些遊戲選項版面,用 Graphic User Interface 來表達,我覺得 Game User Interface 會比較適合。我近日開始製作一些 GUI 的功能,一如以往,我都會先訂立好一些限制及可行性,才開始製作這個 GUI 功能。GUI 的 Rendering 方面是以現有的 Sprite 功能為基礎,先來定義一個 Window,我會以一張 Texture 作為背景及設定 Window 的大小,在這個 Window 內可以加入不同式 Buttons,這些 Buttons 可以設定好一個 Callback function ,只要有關的 Event 出現,便會執行那個 Button 的 Callback function。

就這樣,一個超級簡單的 GUI 功能便策劃好了 ( :D ),功能方面希望最小能做到 Window Dragging,預計將可以從一個設定檔案中讀取資料,來建立一個 Window 及其功能,只要是簡單使用便可以的了。

上星期的四川大地震,確實很令人傷感,希望內地災民早日平復心情,面對光明未來。

以前都喜歡間中在 Blog 中寫點工作感受,但近一年來也盡量不寫了,因為當你知道你老闆會看你的 Blog 時,便會盡量小說這些事的了....

Sunday, May 11, 2008

怎樣才是 Indie 製作 ?

曾經有人問過我,覺得怎樣才是一個理想的遊戲開發 Pipeline,我想了一想,回答說:「我覺得是以 Indie 形式做遊戲,是比較理想的。」

那麼 Indie 形式的定義為何呢?就我個人而言,就是以「簡單」為主的製作 Pipeline:Game Engine 容易使用,程式編寫及設計要簡潔,製作 Assets 工具 / 軟件容易使用。以上三點是重點,因為如果能夠做到這三點,整個遊戲製作的時間會大為縮短。

Game Engine易用:
以我的 Ogng3D 為例,我用的 Render Engine 是 OGRE 3D,因我不想每一個 Game Object, 也要分別處理一大堆 SceneNode、Entity 及 Animation ,那我便在 Ogng3D 中加入了 Frame 及 Actor 概念,將常用的 SceneNode / Entity / Animation 簡化,以及將其 C Language 化,令我能夠簡快及舒適地使用。

程式設計簡潔:
我常覺得 C++ 語言很複雜 ( 只是我不儘瞭解 C++ 吧了 ),如果我不能夠看明白的,我就總是覺得不簡潔。而且我是一個比較「 Old School 」的 Programmer,相信 Code 量越小,出現 Bug 的機會就會越小,運行速度亦會越快 ( 注意:和懶惰是無關的 )。

製作 Assets 工具 / 軟件易用:
一個遊戲無論大與小,都需要 Load 入 Assets ( 遊戲使用的資料及圖像 ),那麼製作這些 Assets 都要用工具。Artist 要對這些工具掌握純熟,可以有效率地工作,程式亦能夠簡單地 Load 入 Artist 所製作的 Assets 也很重要。

以上三點說來容易,但實行上確實是不簡單的,最困難的就是,要有遊戲製作經驗,才能夠順利融合上面三點。最後,除了上面三個重點外,還有最後一個 Indie 製作最終重點,就是「 便宜 」。又以我的 Ogng3D 為例: PellesC Compiler、MilkShape3D、OGRE 3D、Visual Studio Express ... 等等,都是免費 / 便宜的製作工具。