如何開發一款遊戲:遊戲開發流程及所需工具

GitChat技術雜談發表於2018-01-03

?wx_fmt=gif&wxfrom=5&wx_lazy=1

本文來自作者 goto先生  GitChat 上分享 「如何開發一款遊戲:遊戲開發流程及所需工具」,閱讀原文檢視交流實錄。

文末高能

編輯 | 哈比

遊戲作為娛樂生活的一個方面,參與其中的人越來越多,而大部分參與其中的人都是以玩家的身份。

他們熱愛一款遊戲,或是被遊戲的故事情節、炫麗的場景、動聽的音樂所豔羨,亦或是被遊戲中角色扮演、炫酷的技能、有趣的任務所吸引,然而他們中的大多數可能並不瞭解如此一款好玩的遊戲是如何打造出來的。

對於想來這個行業嘗試的新人們,先對遊戲開發製作有個整體的瞭解也是非常必要的。

接下來我將從幾個方面來分別進行闡述。

基礎知識

遊戲,說白了就是一個程式,這個程式或在 PC 上或在移動裝置上執行,玩家通過與這個程式互動來達到娛樂性的目的。我們先了解一下游戲中用到的各種引擎以及遊戲相關術語。

遊戲引擎

遊戲引擎是遊戲研發的主程式介面,它為開發者提供了各種開發遊戲的的工具,即可編輯遊戲系統和實時影象系統的核心元件,其目的就在於讓開發者可以快速的做出遊戲而不必從零開始。

遊戲引擎包含渲染引擎、物理引擎、碰撞檢測系統、網路引擎、音效引擎、指令碼引擎、動畫及場景管理等。

  • 渲染引擎:是對遊戲中的物件和場景起到渲染的效果,遊戲中的角色都是通過渲染引擎將它的模型、動畫、光影、特效等所有效果實時計算出來並展示到螢幕;

  • 物理引擎:讓物件運動遵循特定的規律,比如當角色跳起的時候,系統內定的重力值將決定它彈跳的高度及下落的速率;

  • 碰撞檢測系統:可以探測各物體的邊緣,當兩個 3D 物體在一起的時候,系統可以防止它們相互穿過;

  • 網路引擎:是負責玩家與裝置間的通訊,處理來自鍵盤、滑鼠及其它外設訊號。若遊戲聯網,它也用來管理客戶端與伺服器間的通訊;

  • Lua 引擎:是 Lua 的伺服器引擎,lua 是一種輕量級的嵌入式指令碼語言,在網遊開發中應用廣泛。

總的來說,一個遊戲是引擎和資源組成的,資源包括圖象、聲音、動畫等,遊戲引擎就像一個發動機,控制著遊戲的執行,它按遊戲設計規則依次呼叫遊戲資源。

遊戲名詞

  • CD-key:遊戲的序列號或防盜密碼;

  • BugFree:測試管理平臺,是一款基於 Web 的開源錯誤追蹤工具;

  • Ping:從客戶端傳送資料到伺服器到接收到伺服器反饋資料的時間,以 ms 計,若 Ping 值高會感覺延遲;

  • Proxy Server:代理伺服器,代理網路使用者去取得網路資訊;

  • PU:付費使用者;

  • RU:註冊使用者;

  • AU:活躍使用者;

  • DAU:平均每日活躍使用者;

  • CCU:同時線上人數;

  • PCU:最高同時線上人數;

  • ACU:平均同時線上人數;

  • ARPPU:付費玩家平均收入;

  • 封測:限定使用者數量的遊戲測試,用來對技術和遊戲產品進行初步的驗證,使用者規模較小;

  • 內測:面向一定數量使用者進行的內部遊戲測試,多用於檢測遊戲壓力和功能有無漏洞;

  • 公測:對所有使用者公開的開放性的網路遊戲測試。

遊戲的種類

遊戲的分類方法很多,可以按終端、內容、攝像型別、玩家格鬥物件、玩家人數等來分,其中按內容來分最直觀,它可以根據遊戲的元素迅速錨定遊戲範圍。

  • 按終端分:主機遊戲 (電視機遊戲)、客戶端遊戲、網頁遊戲、手機遊戲;

  • 按攝影型別分:2D 遊戲、2.5 遊戲、3D 遊戲;

  • 按格鬥物件分:PVE:PlayerVsEnvironment、PVP:PlayerVsPlayer;

  • 按玩家人數分:單機遊戲(Singe-Player Game)、多人遊戲(Muti-Player Game)、大型多人線上(Massive Multiplayer Online Game)。

我們可以看一下 AppStore 中游戲的分類,非常鮮明,如下圖所示。

?wx_fmt=png

遊戲的開發流程

遊戲開發從狹義上講就是程式部門進行相關遊戲程式的編寫,從廣義上講,是整個遊戲製作過程,這其中包括多個部門的人員配備。下圖是一個一般性的遊戲開發團隊。

?wx_fmt=png

整個團隊包含四個部門,即策劃、美術、程式、製作人,各個部門負責不同的工作,協調完成整個遊戲的開發。

策劃是團隊的靈魂,也分執行策劃、資料策劃、表現策劃、資源策劃等,他們主要對遊戲劇情、背景進行分析設計,對遊戲中的各種規則進行描述及公式確定,對各種資料表格進行維護,對遊戲中的特效、動作等進行收集並提出需求,進行 UI 設計及模型相關配置等。

程式是團隊的骨肉,也可細分為主程式、客戶端引擎、伺服器引擎、3D 程式、AI 程式、指令碼程式、資料庫程式等,他們主要負責確定程式的資料結構,確定策劃方案的完成方法,將策劃提出的各種需求用程式來實現,併為遊戲開發過程提供良好的編輯工具。

美術是團隊的皮膚,可細分為人物原畫、人物建模、材質貼圖、人物動作、場景動畫等,他們主要負責整個遊戲的視覺風格,以及人物模型動作等的設計等。

製作人主要進行遊戲的外部統籌,市場調查、遊戲開發進度、遊戲版權、遊戲宣傳、遊戲釋出及音樂音效素材的管理都是製作人工作的範疇。

下圖是某國外遊戲研發團隊的組織架構圖,可以參考瞭解一下。

?wx_fmt=png

遊戲開發的各個時期

對於遊戲製作人來說,每個遊戲從產生要消亡要經歷各個階段,下面是普遍適用的典型範例,但並不是每個遊戲都要經歷所有的時期。

  • 概念時期:就是整個遊戲概念的確定,要做什麼樣的遊戲,主題線索是什麼;

  • 原型開發時期:這個時期要製作遊戲的原型,用來體驗遊戲的設計概念,從而糾正和改善不足的地方;

  • 推廣時期:此時是遊戲開發方向出版方推廣產品,向投資方展示遊戲的設計概念、主要賣點、產品如何適應市場的需求、產品開發的可行性及具體的實現方案;

  • 準備時期:這個時期主要處理遊戲專案所涉及的商務及法律方面的事務,比如遊戲專利、劇本版權、品牌商標等,從而組織開發團隊製作大致的方案,確定遊戲開發所需要的工具及其它細節問題;

  • 製作時期: 這個時期是遊戲製作的主體時期,完成 3D 模型的製作,場景製作,過場動畫、畫面渲染及音效錄製等,遊戲引擎和資源在此時期將被完全整合到一起。

  • 質量保證時期:這個時期是遊戲的 QA 或測試時期,主要用來保證遊戲的各項功能是否完好,從而發現和修復各種 Bug 和錯誤;

  • 母盤生成時期:這個時期是將遊戲存檔交由平臺廠商測試檢測的時期,每個平臺廠商的測試標準不盡相同,這個時期中也需要不斷地測試改進遊戲,修復 Bug,準備市場投放。

  • 運營維護時期:這個時期是遊戲釋出後持續運營,在運營過程中發現問題,修復並更新升級的過程,這是一個長期的過程。

專案流程

一部遊戲完整的開發過程,歸納起來可分為五步,如下圖所示。

?wx_fmt=png

市場調查可以分為三個小部分,

1)調研前進行 “頭腦風暴”,讓儘量多的人想出儘量多的創意點子並做好記錄,從而在市場調查過程中一一確認,不符合的排除;

2)撰寫策劃草案,從而讓專案小組中的每一個成員對開發的專案有一個大體的認識,並且對目標明確;

3)對每一個草案都進行市場調查和分析,決定是否要開發這個遊戲。市場調查主要從兩個方面入手,即目標客戶(玩家)和開發成本。

需求分析主要是撰寫需求分析書,這主要包括三個方面:

1)策劃需求

  • 策劃的分工:包括劇本、數值、介面、執行等方面;

  • 進度控制:要時刻注意時間和開發進度的控制,需要寫一個專門的專案進度彙總表。

2)美術需求

  • 場景:包括遊戲地圖、小場景等方面;

  • 人物:包括玩家角色、重要 NPC(玩家隊友、提供任務的 NPC、主線劇情 NPC 等)、次要 NPC(路人、村民等)、怪物、BOSS 等;    

  • 動畫:動畫方面估計每個公司的需求都不盡相同。如果公司能力有限,動畫的製作可以考慮外包的方式;

  • 道具:主要需要考慮是否採取紙娃娃系統;

  • 全身像:人物的全身像方面;

  • 靜畫 &CG:遊戲中可能出現的靜畫和 CG 的需求,沒有則不需要寫;

  • 人物頭像:人物的頭像製作需求,其中包括人物的表情方面,包括喜、怒、哀、樂和悲等多種表情;

  • 介面:介面的需求,包括主介面、各項子介面、螢幕介面、開頭介面、END 介面、儲存和載入介面等方面;

  • 動態物件:包括遊戲中可能出現的火把、光影等方面;

  • 卷軸:又稱為滾動條。根據遊戲的情況來定具體的需求;

  • 招式圖:根據遊戲開發的具體情況決定是否有此需求;

  • 編輯器圖素:各種編輯器的圖素需求,例如關卡編輯器、地圖編輯器等方面;

  • 粒子特效:3D 粒子特效的需求;

  • 宣傳畫:包括遊戲的宣傳畫、海報等方面的製作需求;

  • 遊戲包裝:遊戲客戶端的封面包裝的製作;

  • 說明書插圖:遊戲說明書內附插圖的製作需求;

  • 碟片圖鑑:遊戲客戶端碟片上的圖鑑的製作需求;

  • 官方網站:遊戲官方網站的製作需求。

3)程式需求

  • 地圖編輯器:包括編輯器的功能需求、各種資料的需求等;

  • 粒子編輯器:關於粒子編輯器的需求;

  • 內鑲小遊戲:包括遊戲內部各種小遊戲的需求;

  • 功能函式:包括遊戲中可能會出現的各種程式功能、技術引數、資料、碰撞檢測、AI 等方面的需求;

  • 系統需求:包括升級系統、道具系統、招式系統等系統匯入器的需求。

專案開發步驟就是將整個遊戲專案的資源通過引擎組織起來,對遊戲的架構、功能及各邏輯模組進行充分的整合。

這就要明確遊戲開發的日程和進度安排,這也是充分利用各種開發工具讓開發效率大大提升的根本所在。

測試釋出流程主要包括兩次大型正規的測試,即 Alpha 測試和 Beta 測試,其中前者意味著遊戲的功能和流程完整,QA 會為遊戲定製測試計劃,測試人員將發現的 Bug 提交到資料庫,開發和設計人員對相應的錯誤進行修復。

後者意味著遊戲中的各種資源已完成,產品已定型,後期只是修復 Bug。在這兩次測試修復後,得到待發布的 Release 版。

Gold Release 流程主要是開發遊戲的各種補丁包、遊戲的升級版本,以及官方的各種禮包和外掛等。

遊戲開發所用的工具

選擇正確的工具,可以為遊戲專案節省開支,提高工作質量,降低專案風險,讓整個專案團隊成員集中注意力,從而把遊戲做得好玩。

程式工具軟體

  • OpenGL ES——OpenGL 長期以來都是行業內 2D/3D 圖形高質表現的標準,它適用於各種裝置。OpenGL ES 提供了在軟體應用程式和軟體影象引擎間的底層 API 介面;

  • IncrediBuild——這個開發工具極大的提升了 VS/VC 的編譯和版本生成速度,有效降低增量構建所需要花費的時間,它主要是採用分散式編譯技術,在公司內網可以呼叫其它計算機的資源進行快速編譯。這是開發人員不可多得的一款好工具;

  • VS2013——微軟的 VS 整合開發環境多年來都是遊戲製作的基本軟體,介面友好,功能齊全,可以極大的提升編碼速度和工作流;

  • Visual Assist X——這是一個外掛,引入了強大的編輯功能,完全整合在 C++IDE 環境中,可以極大的提升開發人員的工作程式,不過有的 IDE 環境已經整合了這款外掛,自己不用手動安裝了;

  • Direct X——它是微軟在過去建立的眾多行業標準之一,它是一種視窗技術,可以讓你在玩遊戲或觀看視訊過程中影象和音效有更高的品質,它包含多個配套元件,如 Direct3D、DirectSound、DirectPlay、DirectInput 等。

美術製作工具

美術製作工具要遠多於程式軟體,因此在遊戲開發過程中,選擇美術軟體時要慎重考慮,以方便專案的順利進展。

  • Maya——它是行業內首選的 3D 動畫製作軟體之一,它功能十分強大,可用於高階電腦構圖,可以處理幾乎所有的 3D 製作工作。

    比如模型構建、動畫製作、描繪渲染、電影特效等。但其缺點也在於其多邊形建模工具不太理想;

  • 3D Studio Max——它是遊戲開發中 3D 程式開發的主流引導者,其多邊形建模工具是所有 3D 程式中最棒的工具,用它進行開發效率也特別高;

  • PhotoShop CS——該軟體在遊戲製作中被廣泛應用,是遊戲製作的必備軟體,它在遊戲開發的各個時期都會用到,包括前期製作到最終完成並市場推廣。美術人員用它來做出遊戲環境和角色的設定,策劃也用它來畫關卡規劃和介面示意圖;

  • FaceGen Modeller——這是一款 3D 頭臉創作工具,它可以為遊戲製作多個角色,從而快速做出人物臉部及頭部模型,形態非常逼真;

  • Zbrush——這款工具的特點在於使藝術模型呈現傳統藝術創作的過程,它可以輔助製作人員做出逼真的環境多邊模型,是地圖場景的絕佳工具;

  • Granny——可以作為遊戲的一個批量輸出工具,它能夠完成所有藝術素材,包括模型、渲染和過場動畫的植入。它可以生成法線和紋理貼圖,更是一款引擎解釋工具。

遊戲元件工具

遊戲元件是指遊戲的基本環境架構,比如描繪、場景和幾何構型的構建,也稱為中介軟體。

  • Havok——這是目前比較先進的物理引擎,它能讓遊戲模擬現實,可以將遊戲做出非常逼真的效果;

  • Gamebryo——這是一款能夠幫助開發人員快速製作原型版的工具,功能強大,執行穩定,是比較好的 3D 實時圖形引擎,其強大的渲染引擎和動作處理系統使其在商業上獲得巨大的成功;

  • Quazal——它屬於網路建築中介軟體,主要用於製作大型多人線上遊戲,其它類似的中介軟體有 Big World。

音效工具

音效作為遊戲裡的重要組成部分,選擇合適的工具也非常重要。作為遊戲開發人員,關鍵要了解各種工具的使用限制,有很多的專業音效製作工具,包括 Nuendo、Vegas、Logic、ProTools、Peak、GameCODA、SoundForge 等。

場景構建工具:

  • Unreal Engine——這是一款比較完型的遊戲開發引擎,它提供了比較全能的關卡編輯器、過場動畫系統、3D 圖形及 AI;

  • Source——這款引擎為人物角色動畫提供了新技術,先進的 AI、光影渲染、實景圖象都非常棒,引擎也包含了先進的物理引擎。

日常管理工具

遊戲開發過程中所涉及的事務比較多,內容也比較繁雜,用好日常管理工具可以有效提升工作效率。下面是幾個用得比較多的工具:

  • MicroSoft Excel——利用它進行開發進度管理,開發人員可以非常輕鬆地跟蹤管理多個遊戲開發部門的進度,開發人員必須要對其十分熟悉,才能用的得心應手;

  • 日常工作增量程式報告 (daily delta reports)——一個專案成功的關鍵就是運用日常工作程式報告,在這個過程中,每一名團隊成員每天上交一份個人當日工作完成情況清單。這種程式報告的方式可以簡明扼要、方便有效地跟蹤專案程式;

  • 原始碼控制報告和版本控制報告——目前大部分專案研發用的版本控制元件工具是 SVN、Perforce、Git 等,在使用版本控制軟體前,一定要花一定的時間來熟悉軟體的功能和使用方法,這對於遊戲研發人員非常關鍵,否則就會犯些不必要的錯誤,從而導致工作效率下降;

  • 運用 WiKi——它是協作性文件,是自由討論和創造性工具,是最佳管理設計性文件的方法,當團隊無法建立一個內部區域網來管理各種記錄和設計程式或建立區域網工作量過大時,WiKi 就是你最佳的選擇。

好了,關於遊戲開發的相關知識,我就介紹到這裡。遊戲開發涉及的知識太多太多,我在這裡只是概括性的做了一個引入,希望對您有些許的幫助,文章內容不免有很多不足之處,還請各位大俠多多指教。

對於在遊戲公司工作的體驗以及對未來想入行的夥伴的建議,我將在接下來的 Chat 中與大家交流,謝謝大家!

近期熱文

深入淺出 JS 非同步處理技術方案

敏捷教練 V 形六步法實戰:從布朗運動到深度協作

從零開始,搭建 AI 音響 Alexa 語音服務

修改訂單金額!?0.01 元購買 iPhoneX?| Web談邏輯漏洞

讓你一場 Chat 學會 Git

介面測試工具 Postman 使用實踐

如何基於 Redis 構建應用程式元件


?wx_fmt=jpeg

「閱讀原文」看交流實錄,你想知道的都在這裡

相關文章