遊戲引擎架構

遊戲引擎架構

《遊戲引擎架構》是2014年電子工業出版社出版的圖書,作者是傑森.格雷戈瑞)。

基本介紹

  • 書名:遊戲引擎架構
  • 作者:【美】Jason Gregory(傑森.格雷戈瑞) 
  • 譯者:葉勁峰 
  • ISBN:978-7-121-22288-7
  • 頁數:800頁
  • 定價:128.00
  • 出版社:電子工業出版社
  • 出版時間:2014年1月出版
  • 開本:16開
內容簡介,作品目錄,精彩節摘,編輯推薦,作者簡介,媒體評論,前言,

內容簡介

《遊戲引擎架構》同時涵蓋遊戲引擎軟體開發的理論及實踐,並對多方面的題目進行探討。本書討論到的概念及技巧實際套用於現實中的遊戲工作室,如藝電及頑皮狗。雖然書中採用的例子通常依據一些專門的技術,但是討論範圍遠超於某個引擎或API。文中的參考及引用也非常有用,可讓讀者繼續深入遊戲開發過程的任何特定方向。
《遊戲引擎架構》為一個大學程度的遊戲編程課程而編寫,但也適合軟體工程師、業餘愛好者、自學遊戲程式設計師,以及遊戲產業的從業人員。通過閱讀《遊戲引擎架構》,資歷較淺的遊戲工程師可以鞏固他們所學的遊戲技術及引擎架構的知識,專注某一領域的資深程式設計師也能從本書更為全面的介紹中獲益。
宣傳語:邁向現代遊戲之路完美入口 業界萬眾企盼 隆重推薦

作品目錄

推薦序1 iii
推薦序2 v
譯序 vii
序言 xvii
前言 xix
致謝 xxi
第一部分 基礎 1
第1章 導論 3
1.1 典型遊戲團隊的結構 4
1.2 遊戲是什麼 7
1.3 遊戲引擎是什麼 10
1.4 不同遊戲類型中的引擎差異 11
1.5 遊戲引擎概觀 22
1.6 運行時引擎架構 27
1.7 工具及資產管道 46
第2章 專業工具 53
2.2 微軟Visual Studio 61
2.3 剖析工具 78
2.4 記憶體泄漏和損壞檢測 79
2.5 其他工具 80
第3章 遊戲軟體工程基礎 83
3.1 重溫C++及最佳實踐 83
3.2 C/C++的數據、代碼及記憶體 90
3.3 捕捉及處理錯誤 118
第4章 遊戲所需的三維數學 125
4.1 在二維中解決三維問題 125
4.2 點和矢量 125
4.3 矩陣 139
4.4 四元數 156
4.5 比較各種旋轉表達方式 164
4.6 其他數學對象 168
4.7 硬體加速SIMD運算 173
4.8 產生隨機數 180
第二部分 低階引擎系統 183
第5章 遊戲支持系統 185
5.1 子系統的啟動和終止 185
5.3 容器 208
5.4 字元串 225
5.5 引擎配置 234
第6章 資源及檔案系統 241
6.1 檔案系統 241
6.2 資源管理器 251
第7章 遊戲循環及實時模擬 277
7.1 渲染循環 277
7.2 遊戲循環 278
7.3 遊戲循環的架構風格 280
7.4 抽象時間線 283
7.5 測量及處理時間 285
7.6 多處理器的遊戲循環 296
7.7 網路多人遊戲循環 304
第8章 人體學接口設備(HID) 309
8.1 各種人體學接口設備 309
8.2 人體學接口設備的接口技術 311
8.3 輸入類型 312
8.4 輸出類型 316
8.5 遊戲引擎的人體學接口設備系統 318
8.6 人體學接口設備使用實踐 332
第9章 調試及開發工具 333
9.1 日誌及跟蹤 333
9.2 調試用的繪圖功能 337
9.3 遊戲內置選單 344
9.4 遊戲內置主控台 347
9.5 調試用攝像機和遊戲暫停 348
9.6 作弊 348
9.7 螢幕截圖及錄像 349
9.8 遊戲內置性能剖析 349
9.9 遊戲內置的記憶體統計和泄漏檢測 356
第三部分 圖形及動畫 359
第10章 渲染引擎 361
10.1 採用深度緩衝的三角形光柵化基礎 361
10.2 渲染管道 404
10.3 高級光照及全局光照 426
10.4 視覺效果和覆蓋層 438
10.5 延伸閱讀 446
第11章 動畫系統 447
11.1 角色動畫的類型 447
11.2 骨骼 452
11.3 姿勢 454
11.4 卡通片段 459
11.5 蒙皮及生成矩陣調色板 471
11.6 動畫混合 476
11.7 後期處理 493
11.8 壓縮技術 496
11.9 動畫系統架構 501
11.10 動畫管道 502
11.11 動作狀態機 515
11.12 動畫控制器 535
第12章 碰撞及剛體動力學 537
12.1 你想在遊戲中加入物理嗎 537
12.2 碰撞/物理中間件 542
12.3 碰撞檢測系統 544
12.4 剛體動力學 569
12.5 整合物理引擎至遊戲 601
12.6 展望:高級物理功能 616
第四部分 遊戲性 617
第13章 遊戲性系統簡介 619
13.1 剖析遊戲世界 619
13.2 實現動態元素:遊戲對象 623
13.3 數據驅動遊戲引擎 626
13.4 遊戲世界編輯器 627
第14章 運行時遊戲性基礎系統 637
14.1 遊戲性基礎系統的組件 637
14.2 各種運行時對象模型架構 640
14.3 世界組塊的數據格式 657
14.4 遊戲世界的載入和串流 663
14.5 對象引用與世界查詢 670
14.6 實時更新遊戲對象 676
14.7 事件與訊息泵 690
14.8 腳本 707
14.9 高層次的遊戲流程 726
第五部分 總結 727
第15章 還有更多內容嗎 729
15.1 一些未談及的引擎系統 729
15.2 遊戲性系統 730
參考文獻 733
中文索引 737
英文索引 755

精彩節摘

推薦序1
最初拿到《Game Engine Architecture》一書的英文版,是編輯俠少郵寄給我的列印版。他建議我接下翻譯此書的契約。當時我正在杭州帶領一個團隊開發3D遊戲引擎,我和我的同事都對這本書的內容頗有興趣,兩大本列印的英文書立刻在同事間傳開。可惜那段時間個人精力顧及不來,把近千頁的英文讀物精讀而後翻譯成中文對個人的業餘時間是個極大的挑戰,不能擔此翻譯任務頗為遺憾。
不久以後聽說Milo Yip(葉勁峰)已開始著手翻譯,甚為欣喜。翻譯此巨著,他一定是比我更合適的人選。我和Milo雖未曾蒙面,但神交已久。在網路上讀過一些他的成長經歷,和我頗為相似,心有戚戚。他對遊戲3D實時渲染技術研究精深為我所不及,我們曾通過Google Talk討論過許多技術問題,他都有獨到的見解。翻譯工作開始後,Milo是香港人,英文技術術語在香港的中文譯法和大陸的有許多不同。但此書由大陸出版社出版,考慮到面對的讀者主要是大陸程式設計師,Milo希望能更符合大陸程式設計師的用詞習慣,所以在翻譯一開始就通過Google Docs創建了協作頁面,邀請大家共同探討書中技術名詞的中譯名。從中我們可以一窺他作為譯者的慎重。
三年之後,有幸在出版之前就拿到了完整的譯本。這是一本用LaTeX精心排版的800頁的電子書,我只花了一周時間,幾乎是一口氣讀完。流暢的閱讀享受,絕對不僅僅是因為原著精彩的內容,精美的版面和翔實的譯註也加了不少分。
在閱讀本書的過程中,我不只一次地獲得共鳴。例如在第5章的記憶體管理系統的介紹中,作者介紹的幾種遊戲特有的記憶體管理方法我都曾在項目中用過,而這是第一次有書籍專門將這些方法詳盡記錄;又如第11章動畫系統的介紹,我們也同樣在3D引擎開發過程中改進原有卡通片段混合方法的經歷。雖然書中介紹的每個技術點,都可能可以在某篇論文,某本其他的書的章節,某篇網路blog上見過,但之前卻無一本書可以把這些東西放在一起相互參照。對於從事遊戲引擎開發的程式設計師來說,了解各種引擎在處理每個具體問題時的方案是相當重要的。而每種方案又各有利弊,即使不做引擎開發工作而是在某一特定遊戲引擎上做遊戲開發,從中也可以理解引擎的局限性以及可能的改進方法。尤其是第14章介紹的對遊戲性相關係統的設計,各個開發人員幾乎都是憑經驗設計,很少見有書籍對這些做總結。對於基於渲染引擎做開發的遊戲程式設計師,這是必須面對的工作,這一章會有很大的借鑑意義。
本書作者是業內資深的遊戲引擎開發人,他所參於的《神秘海域》和《最後生還者》都是我的個人最愛。在玩遊戲的過程中,作為遊戲程式設計師的天性,自然會不斷地猜想各個技術點是如何實現的,背後需要怎樣的工具支持。能在書中一一得到印證是件特別開心的事情。作者反覆強調代碼實踐的重要性,在書中遍布著C++代碼。我不認為這些代碼有直接取來使用的價值,但它們極大地幫助了讀者理解書中的技術點。書中列出的頑皮狗工作室用lisp方言作為遊戲配置腳本的範例也給我很大的啟發,有了這些具體的代碼示例以及作者本身的一線工程師背景,也讓我確信書中那些關於主機遊戲開發相關等,我所沒有接觸過的內容都也絕非泛泛而談。
國內的遊戲開發社區的壯大,主要是隨最近十年的MMO風潮而生。而就在大型網路遊戲在中國有些畸形發展,讓這類遊戲偏離電子遊戲遊戲性的趨勢時,我們有幸迎來了為移動設備開發遊戲的大潮。遊戲開發的重心重新回到遊戲性本身。我們更需要去借鑑單機遊戲是如何為玩家帶來更純粹的遊戲體驗,我相信書中記錄的各種技術點會變的更有幫助。
雲風 @簡悅雲風
推薦序2
在我認識的許多遊戲業開發同仁中,只有少數香港同胞,Milo Yip(葉勁峰)卻正是這樣一位給我印象非常深刻的優秀香港遊戲開發者。我倆認識,是在Milo加入騰訊互動娛樂研發部引擎技術中心後,說來到現在也只是兩年多時間。其間,他為人的謙遜務實,對待技術問題的嚴謹求真態度,對算法設計和性能最佳化的嫻熟技術,都為人所稱道。Milo一絲不苟的工作風格,甚至表現在對待技術文檔排版這類事情上(Milo常執著地用LaTeX將技術文檔排到完美),我想這一定是他在香港讀大學、碩士及在香港理工大學的多媒體創新中心從事研究員,一貫沿襲至今的好作風。
我很高興騰訊遊戲有實力吸引到這樣優秀的技術專家;即使在其已從上海遷回香港家中,依然選擇到深圳騰訊互動娛樂總部工作。葉兄從此工作日每天早晚過關,來往香港和深圳兩地,雖有舟車勞頓,但是兼顧了對家庭的照顧和在遊戲引擎方面的專業研究,希望這樣的狀況是令他滿意的。
認識葉兄當時,我便知道他在進行Jason Gregory所著《遊戲引擎架構》一書的中譯工作。因為自己從前也有業餘翻譯遊戲開發有關書籍的經歷,所以我能理解其中的辛苦和責任重大,對葉兄也更多一分欽佩。我以為,本書以及本書的中文讀者最大的幸運便是,遇到葉兄這位對遊戲有著如同對家對國般強烈責任感,猶如“遊戲科學工作者”般的專業譯者!
現在(2013年年末)無疑是遊戲史上對獨立遊戲製作者最友好的年代。開發設備方便獲得(相對過往僅由主機廠商授權才能獲得專利開發設備,現在有一台智慧型手機和一台個人電腦就可以開發)、技術工具友好、調試過程簡單方便,且網際網路上有豐富的例程和開原始碼參考,也有網上社區便於交流。很多愛好者能夠很快地製作出可運行的遊戲原型,其中一些也能發布到套用商店。
但是不全面掌握各方面知識,尤其是遊戲引擎架構知識,往往只能停留在勉強修改、湊合重用別人提供的資源的套用程度上,難以做極限的性能改進,更妄談革命式的架構創新。這樣的程度是很難在成千上萬的遊戲中脫穎而出的。我們所認可的真正的遊戲大作,必定是在某方面大幅超越用戶期待的產品。為了打造這樣的產品,遊戲內容創作者(策劃、美術等)需要“戴著鐐銬跳舞”(在當前的機能下爭取更多的創作自由度),而引擎架構合理的遊戲可以經得起也值得進行反覆最佳化,最終可以提供更多的自由度,這是大作出現的技術前提。
書的作者、譯者、出版社的編者,加上讀者,大家是因書而結緣的有緣人。因葉兄這本《遊戲引擎架構》譯著而線上上線下相識的讀者們,你們是不是因“了解遊戲引擎架構,從而製作/最佳化好遊戲”這樣的理想而結了緣呢?
親愛的讀者,願你的遊戲有一天因謎題巧妙絕倫、趣味超凡、虛擬世界氣勢磅礴、視覺效果逼真精美等專業因素取得業界褒獎,並得到玩家真誠的讚美。希望屆時曾讀葉兄這本《遊戲引擎架構》譯作的你,也可以回饋社會,回饋遊戲開發的學習社區,幫助新人。希望你也可以建立微信公眾號、部落格等,或翻譯遊戲開發書籍,造福外語不好的讀者,所以如果你的外語(英語、日語、韓語之於遊戲行業比較重要)水平仍需精進,現在也可以同步加油了!
沙鷹 @也是沙鷹

編輯推薦

《遊戲引擎架構》由遊戲界傳奇人物雲風及“天天愛消除”團隊傾情作序推薦,既是遊戲工作者必讀Bible,對其他IT從業者也不無裨益。
內容包括:
- 遊戲開發中的大規模C++軟體架構
- 遊戲編程所需的數學
- 供調試、原始碼控制及性能剖析的遊戲開發工具
- 引擎基礎系統、渲染、碰撞、物理、角色動畫、遊戲世界對象模型等引擎子系統
- 多平台遊戲引擎
- 多處理器環境下的遊戲編程
- 工作管道及遊戲資產資料庫

作者簡介

作者介紹:Jason Gregory在1994年開始任職專業軟體工程師,自1999年3月開始在遊戲產業中任職軟體工程師。在聖迭哥Midway Home Entertainment公司開始遊戲編程的他,為《瘋狂飛行員(Freaky Flyers)》及《Crank the Weasel》開發PlayStation 2/Xbox上的動畫系統。在2003年,他轉到洛杉磯藝電,為《榮譽勳章:血戰太平洋(Medal of Honor: Pacific Assault)》開發遊戲引擎及遊戲性技術,並在《榮譽勳章:空降神兵(Medal of Honor: Airborne)》中擔任首席工程師。他現時是頑皮狗公司的通才程式設計師,為《神秘海域:德雷克船長的寶藏(Uncharted: Drake's Fortune)》及《神秘海域:縱橫四海(Uncharted: Among Thieves)》開發引擎及遊戲性軟體。他也在南加州大學教授遊戲技術的課程。
譯者簡介:葉勁峰(Milo Yip)從小自習編程,並愛好計算機圖形學。上中學時兼職開發策略RPG《王子傳奇》,該遊戲在1995年於台灣發行。其後他獲取了香港大學認知科學學士、香港中文大學系統工程及工程管理哲學碩士。畢業後在香港理工大學設計學院從事遊戲引擎及相關技術的研發,職至項目主任。除發表學術文章外,也曾合著《DirectX9遊戲編程實務》。2008年往上海育碧擔任引擎工程師開發《美食從天而降(Cloudy with a Chance of Meatballs)》Xbox360/PS3/Wii/PC,2009年起於麻辣馬開發《愛麗絲:瘋狂回歸(Alice: Madness Returns)》Xbox360/PS3/PC,2011年加入騰訊互動娛樂引擎技術中心擔任專家工程師,所研發的技術已用於《鬥戰神》、《天涯明月刀》、《眾神爭霸》等項目中。

媒體評論

本書針對每一個現代遊戲開發相關的重要系統和話題,給出一個完美、綜合的概覽,無論是計算機科學、軟體工程,或是遊戲主程,以及業餘愛好者、遊戲玩家,本書均不可或缺。
——獲評CHOICE傑出學術作品
……這裡有最專業的領域知識與概念講解……有了它,你將具備對如何構建遊戲引擎的深入理解……本書讓人印象尤其深刻,因為該領域再也找不到另一本如此詳盡的圖書。
——Eric Haines
作者將數年經驗及專業積累集中在這本完整、全面的著作中,內容跨越遊戲引擎開發理論與實踐。書中提供的遊戲開發過程各方面的精彩實例,保羅萬象且對讀者大有補益。不僅遊戲引擎開發人員看後會大受鼓舞,甚至也可作為有經驗的該領域技術專家的實用參考。本書可謂無價,除內容“用戶友好”外,其附錄也值得強烈推薦,無論是個人開發者、專家還是計算機科學學術人員,都可將其作為資源集合與參考資料,當然遊戲設計架構人員更是不可不讀。
——The Midwest Book Review
本書涵蓋有關如何開發遊戲引擎要旨的巨量數據。
——Gamasutra, November 2009
本書曾位列“the Game Developer”雜誌前沿大獎候選圖書。
——PR Newswire

前言

最早的電子遊戲完全由硬體構成,但微處理器(microprocessor)的高速發展完全改變了遊戲的面貌。現在的遊戲是在多用途的PC和專門的電子遊戲主機(video game console)上玩的,憑藉軟體帶來絕妙的遊戲體驗。從最初的遊戲誕生至今已有半個世紀,但很多人仍然認為遊戲是一個未成熟的產業。即使遊戲可能是個年輕的產業,若仔細觀察,也會發現它正在高速發展。 現時遊戲已成為一個上百億美元的產業,覆蓋不同年齡、性別的廣泛客群。
千變萬化的遊戲,可以分為從紙牌遊戲到大型多人線上遊戲(massively multiplayer online game,MMOG)等多個種類(category)和“類型(genre)”,也可以運行在任何裝有微晶片microchip)的設備上 。你現在可以在PC、手機及多種特別為遊戲而設計的手持/電視遊戲主機上玩遊戲。家用電視遊戲通常代表最尖端的遊戲科技,又由於它們是周期性地推出新版本,因此有遊戲機“世代”(generation)的說法。最新一代的遊戲機包括微軟的Xbox 360和索尼的PlayStation 3,但一定不可忽視長盛不衰的PC,以及最近非常流行的任天堂Wii。
最近,劇增的下載式休閒遊戲,使這個多樣化的商業遊戲世界變得更複雜。雖然如此,大型遊戲仍然是一門大生意。今天的遊戲平台非常複雜,有難以置信的運算能力,這使軟體的複雜度得以進一步提升。所有這些先進的軟體都需要由人創造出來,這導致團隊人數增加,開發成本上漲。隨著產業變得成熟,開發團隊要尋求更好、更高效的方式去製作產品,可復用軟體(reusable software)和中間件(middleware)便應運而生,以補償軟體複雜度的提升。
由於有這么多風格迥異的遊戲及多種遊戲平台,因此不可能存在單一理想的軟體方案。然而,業界已經發展出一些模式 ,也有大量的潛在方案可供選擇。現今的問題是如何找到一個合適的方案去迎合某個項目的需要。再進一步,開發團隊必須考慮項目的方方面面,以及如何把各方面集成。對於一個嶄新的遊戲設計,鮮有可能找到一個完美搭配遊戲設計各方面的軟體包。
現時業界內的老手,入行時都是“開荒牛”。我們這代人很少是計算機科學專業出身(Matt的專業是航空工程、Jason的專業是系統設計工程),但現時很多學院已設有遊戲開發的課程和學位。時至今日,為了獲取有用的遊戲開發信息,學生和開發者必須找到好的途徑。對於高端的圖形技術,從研究到實踐都有大量高質量的信息。可是,這些信息經常不能直接套用到遊戲的生產環境,或者沒有一個生產級質量的實現。對於圖形以外的遊戲開發技術,市面上有一些所謂的入門書籍,沒提及參考文獻就描述很多內容細節,像自己發明的一樣。這種做法根本沒有用處,甚至經常帶有不準確的內容。另一方面,市場上有一些高端的專門領域書籍,例如物理、碰撞、人工智慧等。可是,這類書或者囉嗦到讓你難以忍受,或者高深到讓部分讀者無法理解,又或者內容過於零散而難於融會貫通。有一些甚至會直接和某項技術掛鈎,軟硬體一旦改動,其內容就會迅速過時。
此外,網際網路也是收集相關知識的絕佳工具。可是,除非你確實知道要找些什麼,否則斷鏈、不準確的資料、質量差的內容也會成為學習障礙
好在,我們有Jason Gregory,他是一位擁有在頑皮狗(Naughty Dog)工作經驗的業界老手,而頑皮狗是全球高度矚目的遊戲工作室之一。Jason在南加州大學教授遊戲編程課程時,找不到概括遊戲架構的教科書。值得慶幸的是,他承擔了這個任務,填補了這個空白。
Jason把套用到實際發行遊戲的生產級別知識,以及整個遊戲開發的大局編集於本書。他憑經驗,不僅融匯了遊戲開發的概念和技巧,還用實際的代碼示例及實現例子去說明怎樣貫通知識來製作遊戲。本書的引用及參考文獻可以讓讀者更深入探索遊戲開發過程的各方面。雖然例子經常是基於某些技術的,但是概念和技巧是用來實際創作遊戲的,它們可以超越個別引擎或API的束縛。
本書是一本我們入行做遊戲時想要的書。我們認為本書能讓入門者增長知識,也能為有經驗者開拓更大的視野。
Jeff Lander
Matthew Whiting

相關詞條

熱門詞條

聯絡我們