2014年2月6日 星期四

制作遊戲的流程一

很久沒寫了...上次寫了成為遊戲設計及開發者的條件,
今次寫一下制作遊戲的流程。

制作遊戲的流程會受到隊伍大小的影響而有所不同,
當然也會跟據遊戲的平台,遊戲種類而有分別,
但大致上也是差不多:
構思>開發>測試>發佈>維持

先由構思說起,
這個部份其實是各間公司或遊戲專案在整個流程當中最不同的一部份,
有的是由遊戲機制開始(例如想做一個拼圖遊戲),
有的是由內容開始(例如想做一個有關所羅門72柱神的遊戲),
有的是由遊戲目的開始(例如想做一個宣傳禁藥的遊戲)等,
不論是什麼類型的遊戲,都會有一個起始點,並由這個起始點開始做下去。

在這個階段要決定的東西其實十分多,以下所列舉的基本上是必要,
當然,如果能在這個階段確定的東西越多,之後的就能夠更順利地繼續下去。

1. 遊戲的核心機制(Core Mechanics)
所謂遊戲機制(Game Mechanics),其實是指玩家能夠做些甚麼
以及對玩家的限制和規則(Game Rules),核心的就是指玩家在玩遊戲時最常接觸的部份,
例如在PAD中的轉珠,玩家怎樣移動珠子,有多少時間,
怎樣才有Combo等,都是遊戲的核心機制。
這部份是遊戲的靈魂,是遊戲好不好玩的重點,
所以應該花最多時間去研究及調整,也應該花時間去制作遊戲原型(Prototype)去測試,
畢竟遊戲是要上手玩才知道好不好玩,單靠言語解釋是很難弄清楚的。

2. 目標玩家群(Target Audiences)
在構思階段就要定好目標玩家群,因為目標玩家群的不同會令到整個遊戲完全不同!
舉例說,你想做一個類似Candy Crush 的遊戲,
如果你的目標玩家是些純粹為了消磨時間的,
你就可以把遊戲制作成輕鬆,難易度較低,每次遊玩時間較短之類。
但如果目標玩家是有經驗的,
你就要把遊戲制作得較有挑戰性,圖像較細緻,更多變化,更多獎賞等,
來令到玩家更有滿足感,因為他們已經有經驗,會更有要求。
清楚目標玩家群的要求,才能做出適合他們,令他們滿意的遊戲。

3. 圖像風格
這個其實可以在上面兩項決定了之後再下決定,
但也需要在構思階段確認。原因是設計圖像所需的時間和編程的時間其實差不多,
甚至要更多!在這個時候圖像設計師要搜尋相近風格的圖片,畫草稿等,
也是個很好的時間給他們熟習要繪畫的風格等。
如果在開發時才去嘗試或決定的話,也就很有延誤發佈的可能。

以上三種是我認為是需要在構階段要決定的,
原因是它們都決定著開發遊戲的方向。
根據遊戲的大小,構思階段會有一星期至一個月不等。
視乎隊伍人數,目標,平台等而有所改變。(當然公司有沒有錢放在這裡燒也是重點)
有公司會在遊戲專案尾聲時開始另一個遊戲專案的構思階段,
也是個很好的方式。

有一個部份可能其他人會覺得漏了的,就是遊戲的營運模式(Business Model)。
筆者就覺得這個可以放在當遊戲成型的時候才決定,
最主要的原因是因為營運模式很容易很容易影響到遊戲的方向。
令到遊戲的重點由給玩家好的遊戲體驗變成賺錢
當然賺錢是很重要,但是為了賺錢令到遊戲不好玩,結果也只是令遊戲更少人玩,
也自然賺不到錢了。

下次再說開發的部份。

2014年1月2日 星期四

成為遊戲開發者的條件

看來兩星期一篇和中英文發文的目標失敗了...(笑)

這次說一下成為好的遊戲開發者的條件,
先利申,我雖然CS 出身,但編程技術卻很爛,
所以不會說得太多,以免說多錯多,下面如有錯處請務必指出。

遊戲程式可以算是程式世界中其中一種最複雜的程式,
編程要做的東西十分多,而且比其他類型的程式有更多要注意的地方,
舉個例就是絕大部份的遊戲都要顧及音效,而大部份其他類型的程式都不用,
但是其他類型的程式要顧及的東西,遊戲程式都要顧及,甚至要求更高。
例如在保安方面,編寫遊戲時更需要做好保護措施,
因為玩家最喜歡做的就是在遊戲中找錯誤令到自己有得益。
另外一方面就是所謂的UX (User Experience 用戶體驗),
遊戲比其他程式更著重這個是因為遊戲比其他程式有更多的互動,
好的版面配置,特效等都能夠更容易令玩家明白遊戲想表達的訊息,
從而繼續玩你的遊戲。

作為好的遊戲開發者,首要條件當然是要寫得一手好的代碼,
甚麼才叫好的代碼我就不多說了,始終我技術真的很爛...
但有幾點我覺得對遊戲來說特別重要:

1. 開發時一定要寫好備註
這一點基本上是很多程式設計師的通病,
不少程式設計師都不會在自己編程時加上備註,
可能因為沒有時間,可能因為那部份程式很簡單,可能因為認為自己會記得,
結果就留下一大堆沒有人明白的代碼,
要知道遊戲程式比其他程式更加複雜,有更多的邏輯程序,
舉個例遊戲中有不少自創的公式,以及很多固定常數,
不加備註去說明的話跟本看不懂,
尤其是後來才加入的程式設計師,要看懂前人的代碼真的要用不少時間。
另外一點就是變量的名字,物件的名字也要用清楚簡單的,
這樣用起來就會更清晰,減少要找的時間。

2. 盡量令程式更容易修改或加減
這個對於遊戲來說特別重要,原因是因為不論在開發途中還是發佈後的改版,
遊戲專案時常會有大幅度的修改,修改時又會很容易影響到其他部份,
如果能把程式寫得獨立及靈活一點,就能方便程式設計師做修改,
也能減少出錯的機會。 (詳情可以找找design patterns,reduce coupling increase cohesion,information hiding等等東西)

3. 多從整體看
在開發時很多時候會太集中去做某一個部份而令到自己忽略了對其他部份的影響。
不同共他類型的程式,遊戲程式很多時候都會緊緊的連在一起。
所謂牽一髮動全身,改了少少部份卻會令到其他部份影響甚大,
在寫程式時,尤其是加入一個功能之前,最好先由整體去看,了解清楚功能帶來的影響,
才去決定如何編寫。

4. 記好版本編號及提交時的備註
版本編號對遊戲尤其重要,由於遊戲程式比其他程式在開發時有更多改動,
記好版本編號能令你更容易知道現時的專案是在什麼完成度,有什麼功能等,
出錯時也更容易找到錯誤的地方。
提交時的備註就是用來幫助後人了解以前的開發情形,
有助了解遊戲程式本身及進度,也是除錯的一個好幫手。

以上的東西大都適用於其他的程式專案,
只是因為遊戲程式的複雜性以及變化,令到我認為要特別注意的。
其實還有一些更專門的東西是遊戲程式要特別注意的,
好像是多線程編程(Multi-threading),MVC等結構,
還有遊戲引擎(Game Engine)等,
不過我技術不好,就不多說了。

下次說一下開發遊戲的步驟。