關于我們
書單推薦
新書推薦
|
設計模式與游戲完美開發(fā)
《設計模式與游戲完美開發(fā)》是作者十年磨一劍,將設計模式理論巧妙地融合到實踐中的*教材。
全書采用了整合式的項目教學,即以一個游戲的范例來應用23種設計模式的實現(xiàn)貫穿全書,讓讀者學習到整個游戲開發(fā)的全過程和作者想要傳承的經驗,并以淺顯易懂的比喻來解析難以理解的設計模式,讓想深入了解此領域的讀者更加容易上手。
本書既可以作為大學、專科和職業(yè)院校游戲程序設計專業(yè)的教材,也可以作為游戲從業(yè)人員提高游戲設計能力和規(guī)范運用設計模式的培訓教材,還可以作為有這方面職業(yè)興趣的讀者學習和提高的自學參考書。
十年磨一劍,作者將設計模式理論巧妙地融入到實踐中,以一個游戲的完整實現(xiàn)呈現(xiàn)設計模式的應用及經驗的傳承 《軒轅劍》之父蔡明宏、資深游戲制作人李佳澤、Product Evangelist at Unity TechnologiesKelvin Lo、信仁軟件設計創(chuàng)辦人 賴信仁、資深3D游戲美術劉明愷 聯(lián)合推薦全書采用了整合式的項目教學,即以一個游戲的范例來應用23種設計模式的實現(xiàn)貫穿全書,讓讀者學習到整個游戲開發(fā)的全過程和作者想要傳承的經驗,并以淺顯易懂的比喻來解析難以理解的設計模式,讓想深入了解此領域的讀者更加容易上手。
初次接觸設計模式(Design Patterns)是在求學階段,第一次看GoF的《Design Patterns: Elements of Reusable Object-Oriented Software》時,感覺尤如天書一般,只能大概了解Singleton、Strategy、Facade、Iterator這幾個Pattern的用法,至于為什么要使用、什么時候使用,完全沒有概念。進入職場后,先是跟著幾個大型游戲項目一同開發(fā)和學習,到后來,自己可以主持技術項目、開發(fā)網絡游戲引擎、游戲框架等。在這個過程中,時而拿起GoF的《Design Patterns》或是以設計模式為題的書籍,反復閱讀,逐漸地了解了每一種模式的應用以及它們的設計分析原理,并通過不斷地實踐與應用,才將它們融入自己的知識體系中。從2004年進入職場,一晃眼,在游戲業(yè)也超過了10的經歷,這些年在游戲行業(yè)工作的付出,除了得以溫飽之外,也從中吸收了不少的知識與經驗。記得某天在一個項目開發(fā)會議中,我與同仁分享如何將設計模式應用在游戲的開發(fā)設計中時,我突然察覺,應該將這些內容寫下來,并分享給更多的游戲設計師,于是就有了寫這本書的想法。通過寫作將經驗與大家分享,希望大家可以了解,在游戲行業(yè)中的工程師,不該只是進行著無意義程序代碼輸出的碼農,而是一群從事高級軟件分析實現(xiàn)的設計師。所以,整合多種領域知識于一身的游戲工程師,更需要以優(yōu)雅的方式來呈現(xiàn)這些知識匯集的結果,設計模式(Design Patterns)是各種軟件設計技巧的呈現(xiàn)方式,善用它們,更能表現(xiàn)出游戲設計工程師優(yōu)雅的一面。10年的游戲從業(yè)過程,接受過許多人的協(xié)助及幫忙:Jimmy & Silent兄弟20年的同學、朋友及合作伙伴們,有你們一路的協(xié)助與砥礪才能有今天;Justin Lee謝謝你的信任,也感謝你的忍受功力,可以讓我們一同完成不少作品;Mark Tsai謝謝你一路的提拔與信任;Jazzdog感謝你的支持,我一直知道程序與美術是可以同時存在于一個人身上的;Kai合作伙伴,感謝你的支持。最后謝謝我的家人,感謝老婆大人這10多年來忍受我在書房內不斷地堆積書本、小說及收藏品。感謝我3歲的女兒,因為你的到來,讓我知道沒什么比你更重要了。
蔡升達2016年10月
蔡升達當年為實現(xiàn)游戲夢從學術界進入游戲業(yè),累積了10年游戲開發(fā)經驗,包含多款大型多人線上游戲(MMORPG)、網頁游戲(Web Game)、移動平臺連線游戲(APP Game)。曾任職于臺灣地區(qū)知名游戲開發(fā)公司,擔任游戲設計師、專案程序統(tǒng)籌、研發(fā)技術中心經理等職務,現(xiàn)任知名新創(chuàng)團隊研發(fā)總監(jiān)一職。擅長游戲程序設計、網絡程序設計、分布式系統(tǒng)設計、電腦圖學、影像搜索、游戲制作規(guī)劃及運作、游戲專案管理。喜歡閱讀,家中有上千本藏書,包含信息技術、文學、奇幻小說、歷史小說等,因為看了很多,所以也有很多想法想與人分享。構想多年之后,某日下午終于下筆開始了這本書。十年磨一劍,作者將設計模式理論巧妙地融入到實踐中,以一個游戲的完整實現(xiàn)呈現(xiàn)設計模式的應用及經驗的傳承
第1篇 設計模式與游戲設計 第1章 游戲實現(xiàn)中的設計模式 2 1.1 設計模式的起源 2 1.2 軟件的設計模式是什么? 3 1.3 面向對象設計中常見的設計原則 4 1.4 為什么要學習設計模式 7 1.5 游戲程序設計與設計模式 8 1.6 模式的應用與學習方式 10 1.7 結論 11 第2章 游戲范例說明 12 2.1 游戲范例 12 2.2 GoF的設計模式范例 15 第2篇 基礎系統(tǒng) 第3章 游戲場景的轉換狀態(tài)模式(State) 20 3.1 游戲場景 20 3.1.1 場景的轉換 20 3.1.2 游戲場景可能的實現(xiàn)方式 23 3.2 狀態(tài)模式(State) 24 3.2.1 狀態(tài)模式(State)的定義 24 3.2.2 狀態(tài)模式(State)的說明 25 3.2.3 狀態(tài)模式(State)的實現(xiàn)范例 25 3.3 使用狀態(tài)模式(State)實現(xiàn)游戲場景的轉換 28 3.3.1 SceneState的實現(xiàn) 28 3.3.2 實現(xiàn)說明 29 3.3.3 使用狀態(tài)模式(State)的優(yōu)點 35 3.3.4 游戲執(zhí)行流程及場景轉換說明 36 3.4 狀態(tài)模式(State)面對變化時 37 3.5 結論 37 第4章 游戲主要類外觀模式(Facade) 39 4.1 游戲子功能的整合 39 4.2 外觀模式(Facade) 41 4.2.1 外觀模式(Facade)的定義 41 4.2.2 外觀模式(Facade)的說明 42 4.2.3 外觀模式(Facade)的實現(xiàn)說明 43 4.3 使用外觀模式(Facade)實現(xiàn)游戲主程序 44 4.3.1 游戲主程序架構設計 44 4.3.2 實現(xiàn)說明 45 4.3.3 使用外觀模式(Facade)的優(yōu)點 47 4.3.4 實現(xiàn)外觀模式(Facade)時的注意事項 48 4.4 外觀模式(Facade)面對變化時 48 4.5 結論 48 第5章 獲取游戲服務的唯一對象單例模式(Singleton) 50 5.1 游戲實現(xiàn)中的唯一對象 50 5.2 單例模式(Singleton) 51 5.2.1 單例模式(Singleton)的定義 51 5.2.2 單例模式(Singleton)的說明 51 5.2.3 單例模式(Singleton)的實現(xiàn)范例 52 5.3 使用單例模式(Singleton)獲取唯一的游戲服務對象 53 5.3.1 游戲服務類的單例模式實現(xiàn) 53 5.3.2 實現(xiàn)說明 54 5.3.3 使用單例模式(Singleton)后的比較 55 5.3.4 反對使用單例模式(Singleton)的原因 55 5.4 少用單例模式(Singleton)時如何方便地引用到單一對象 58 5.5 結論 63 第6章 游戲內各系統(tǒng)的整合中介者模式(Mediator) 64 6.1 游戲系統(tǒng)之間的溝通 64 6.2 中介者模式(Mediator) 68 6.2.1 中介者模式(Mediator)的定義 69 6.2.2 中介者模式(Mediator)的說明 69 6.2.3 中介者模式(Mediator)的實現(xiàn)范例 69 6.3 中介者模式(Mediator)作為系統(tǒng)之間的溝通接口 72 6.3.1 使用中介者模式(Mediator)的系統(tǒng)架構 73 6.3.2 實現(xiàn)說明 73 6.3.3 使用中介者模式(Mediator)的優(yōu)點 79 6.3.4 實現(xiàn)中介者模式(Mediator)時的注意事項 79 6.4 中介者模式(Mediator)面對變化時 80 6.5 結論 80 第7章 游戲的主循環(huán)Game Loop 82 7.1 GameLoop由此開始 82 7.2 怎么實現(xiàn)游戲循環(huán)(Game Loop) 84 7.3 在Unity3D中實現(xiàn)游戲循環(huán) 85 7.4 P級陣地的游戲循環(huán) 89 7.5 結論 92 第3篇 角色的設計 第8章 角色系統(tǒng)的設計分析 94 8.1 游戲角色的架構 94 8.2 角色類的規(guī)劃 95 第9章 角色與武器的實現(xiàn)橋接模式(Bridge) 98 9.1 角色與武器的關系 98 9.2 橋接模式(Bridge) 103 9.2.1 橋接模式(Bridge)的定義 103 9.2.2 橋接模式(Bridge)的說明 107 9.2.3 橋接模式(Bridge)的實現(xiàn)范例 108 9.3 使用橋接模式(Bridge)實現(xiàn)角色與武器接口 110 9.3.1 角色與武器接口設計 110 9.3.2 實現(xiàn)說明 111 9.3.3 使用橋接模式(Bridge)的優(yōu)點 116 9.3.4 實現(xiàn)橋接模式(Bridge)的注意事項 116 9.4 橋接模式(Bridge)面對變化時 116 9.5 結論 117 第10章 角色屬性的計算策略模式(Strategy) 118 10.1 角色屬性的計算需求 118 10.2 策略模式(Strategy) 121 10.2.1 策略模式(Strategy)的定義 122 10.2.2 策略模式(Strategy)的說明 122 10.2.3 策略模式(Strategy)的實現(xiàn)范例 123 10.3 使用策略模式(Strategy)實現(xiàn)攻擊計算 124 10.3.1 攻擊流程的實現(xiàn) 125 10.3.2 實現(xiàn)說明 125 10.3.3 使用策略模式(Strategy)的優(yōu)點 132 10.3.4 實現(xiàn)策略模式(Strategy)時的注意事項 133 10.4 策略模式(Strategy)面對變化時 134 10.5 結論 135 第11章 攻擊特效與擊中反應模板方法模式(Template Method) 137 11.1 武器的攻擊流程 137 11.2 模板方法模式(Template Method) 139 11.2.1 模板方法模式(Template Method)的定義 139 11.2.2 模板方法模式(Template Method)的說明 141 11.2.3 模板方法模式(Template Method)的實現(xiàn)范例 141 11.3 使用模板方法模式實現(xiàn)攻擊與擊中流程 142 11.3.1 攻擊與擊中流程的實現(xiàn) 143 11.3.2 實現(xiàn)說明 143 11.3.3 運用模板方法模式(Template Method)的優(yōu)點 145 11.3.4 修改擊中流程的實現(xiàn) 145 11.4 模板方法模式(Template Method)面對變化時 147 11.5 結論 149 第12章 角色AI狀態(tài)模式(State) 150 12.1 角色的AI 150 12.2 狀態(tài)模式(State) 158 12.3 使用狀態(tài)模式(State)實現(xiàn)角色AI 159 12.3.1 角色AI的實現(xiàn) 159 12.3.2 實現(xiàn)說明 160 12.3.3 使用狀態(tài)模式(State)的優(yōu)點 169 12.3.4 角色AI執(zhí)行流程 169 12.4 狀態(tài)模式(State)面對變化時 170 12.5 結論 172 第13章 角色系統(tǒng) 174 13.1 角色類 174 13.2 游戲角色管理系統(tǒng) 176 第4篇 角色的產生 第14章 游戲角色的產生工廠方法模式(Factory Method) 183 14.1 產生角色 183 14.2 工廠方法模式(Factory Method) 188 14.2.1 工廠方法模式(Factory Method)的定義 188 14.2.2 工廠方法模式(Factory Method)的說明 189 14.2.3 工廠方法模式(Factory Method)的實現(xiàn)范例 189 14.3 使用工廠方法模式(Factory Method)產生角色對象 195 14.3.1 角色工廠類 195 14.3.2 實現(xiàn)說明 196 14.3.3 使用工廠方法模式(Factory Method)的優(yōu)點 199 14.3.4 工廠方法模式(Factory Method)的實現(xiàn)說明 199 14.4 工廠方法模式(Factory Method)面對變化時 203 14.5 結論 205 第15章 角色的組裝建造者模式(Builder) 206 15.1 角色功能的組裝 206 15.2 建造者模式(Builder) 213 15.2.1 建造者模式(Builder)的定義 213 15.2.2 建造者模式(Builder)的說明 214 15.2.3 建造者模式(Builder)的實現(xiàn)范例 215 15.3 使用建造者模式(Builder)組裝角色的各項功能 217 15.3.1 角色功能的組裝 218 15.3.2 實現(xiàn)說明 219 15.3.3 使用建造者模式(Builder)的優(yōu)點 226 15.3.4 角色建造者的執(zhí)行流程 226 15.4 建造者模式(Builder)面對變化時 227 15.5 結論 228 第16章 游戲屬性管理功能享元模式(Flyweight) 229 16.1 游戲屬性的管理 229 16.2 享元模式(Flyweight) 236 16.2.1 享元模式(Flyweight)的定義 236 16.2.2 享元模式(Flyweight)的說明 237 16.2.3 享元模式(Flyweight)的實現(xiàn)范例 238 16.3 使用享元模式(Flyweight)實現(xiàn)游戲 242 16.3.1 SceneState的實現(xiàn) 242 16.3.2 實現(xiàn)說明 245 16.3.3 使用享元模式(Flyweight)的優(yōu)點 250 16.3.4 享元模式(Flyweight)的實現(xiàn)說明 250 16.4 享元模式(Flyweight)面對變化時 252 16.5 結論 252 第5篇 戰(zhàn)爭開始 第17章 Unity3D的界面設計組合模式(Composite) 254 17.1 玩家界面設計 254 17.2 組合模式(Composite) 259 17.2.1 組合模式(Composite)的定義 259 17.2.2 組合模式(Composite)的說明 260 17.2.3 組合模式(Composite)的實現(xiàn)范例 261 17.2.4 分了兩個子類但是要使用同一個操作界面 264 17.3 Unity3D游戲對象的分層式管理功能 265 17.3.1 游戲對象的分層管理 265 17.3.2 正確有效地獲取UI的游戲對象 266 17.3.3 游戲用戶界面的實現(xiàn) 267 17.3.4 兵營界面的實現(xiàn) 269 17.4 結論 274 第18章 兵營系統(tǒng)及兵營信息顯示 276 18.1 兵營系統(tǒng) 276 18.2 兵營系統(tǒng)的組成 277 18.3 初始兵營系統(tǒng) 281 18.4 兵營信息的顯示流程 287 第19章 兵營訓練單位命令模式(Command) 288 19.1 兵營界面上的命令 288 19.2 命令模式(Command) 291 19.2.1 命令模式(Command)的定義 291 19.2.2 命令模式(Command)的說明 294 19.2.3 命令模式(Command)的實現(xiàn)范例 294 19.3 使用命令模式(Command)實現(xiàn)兵營訓練角色 297 19.3.1 訓練命令的實現(xiàn) 297 19.3.2 實現(xiàn)說明 298 19.3.3 執(zhí)行流程 302 19.3.4 實現(xiàn)命令模式(Command)時的注意事項 303 19.4 命令模式(Command)面對變化時 305 19.5 結論 306 第20章 關卡設計責任鏈模式(Chain of Responsibility) 307 20.1 關卡設計 307 20.2 責任鏈模式(Chain of Responsibility) 312 20.2.1 責任鏈模式(Chain of Responsibility)的定義 312 20.2.2 責任鏈模式(Chain of Responsibility)的說明 314 20.2.3 責任鏈模式(Chain of Responsibility)的實現(xiàn)范例 314 20.3 使用責任鏈模式(Chain of Responsibility)實現(xiàn)關卡系統(tǒng) 317 20.3.1 關卡系統(tǒng)的設計 317 20.3.2 實現(xiàn)說明 318 20.3.3 使用責任鏈模式(Chain of Responsibility)的優(yōu)點 329 20.3.4 實現(xiàn)責任鏈模式(Chain of Responsibility)時的注意事項 329 20.4 責任鏈模式(Chain of Responsibility)面對變化時 330 20.5 結論 332 第6篇 輔助系統(tǒng) 第21章 成就系統(tǒng)觀察者模式(Observer) 334 21.1 成就系統(tǒng) 334 21.2 觀察者模式(Observer) 338 21.2.1 觀察者模式(Observer)的定義 338 21.2.2 觀察者模式(Observer)的說明 340 21.2.3 觀察者模式(Observer)的實現(xiàn)范例 341 21.3 使用觀察者模式(Observer)實現(xiàn)成就系統(tǒng) 344 21.3.1 成就系統(tǒng)的新架構 344 21.3.2 實現(xiàn)說明 346 21.3.3 使用觀察者模式(Observer)的優(yōu)點 358 21.3.4 實現(xiàn)觀察者模式(Observer)時的注意事項 358 21.4 觀察者模式(Observer)面對變化時 359 21.5 結論 361 第22章 存盤功能備忘錄模式(Memento) 362 22.1 存儲成就記錄 362 22.2 備忘錄模式(Memento) 366 22.2.1 備忘錄模式(Memento)的定義 366 22.2.2 備忘錄模式(Memento)的說明 367 22.2.3 備忘錄模式(Memento)的實現(xiàn)范例 367 22.3 使用備忘錄模式(Memento)實現(xiàn)成就記錄的保存 371 22.3.1 成就記錄保存的功能設計 371 22.3.2 實現(xiàn)說明 371 22.3.3 使用備忘錄模式(Memento)的優(yōu)點 374 22.3.4 實現(xiàn)備忘錄模式(Memento)的注意事項 374 22.4 備忘錄模式(Memento)面對變化時 374 22.5 結論 375 第23章 角色信息查詢訪問者模式(Visitor) 376 23.1 角色信息的提供 376 23.2 訪問者模式(Visitor) 385 23.2.1 訪問者模式(Visitor)的定義 386 23.2.2 訪問者模式(Visitor)的說明 390 23.2.3 訪問者模式(Visitor)的實現(xiàn)范例 392 23.3 使用訪問者模式(Visitor)實現(xiàn)角色信息查詢 397 23.3.1 角色信息查詢的實現(xiàn)設計 397 23.3.2 實現(xiàn)說明 398 23.3.3 使用訪問者模式(Visitor)的優(yōu)點 405 23.3.4 實現(xiàn)訪問者模式(Visitor)時的注意事項 405 23.4 訪問者模式(Visitor)面對變化時 405 23.5 結論 408 第7篇 調整與優(yōu)化 第24章 前綴字尾裝飾模式(Decorator) 410 24.1 前綴后綴系統(tǒng) 410 24.2 裝飾模式(Decorator) 415 24.2.1 裝飾模式(Decorator)的定義 415 24.2.2 裝飾模式(Decorator)的說明 418 24.2.3 裝飾模式(Decorator)的實現(xiàn)范例 419 24.3 使用裝飾模式(Decorator)實現(xiàn)前綴后綴的功能 422 24.3.1 前綴后綴功能的架構設計 423 24.3.2 實現(xiàn)說明 423 24.3.3 使用裝飾模式(Decorator)的優(yōu)點 433 24.3.4 實現(xiàn)裝飾模式(Decorator)時的注意事項 433 24.4 裝飾模式(Decorator)面對變化時 434 24.5 結論 435 第25章 俘兵適配器模式(Adapter) 436 25.1 游戲的寵物系統(tǒng) 436 25.2 適配器模式(Adapter) 440 25.2.1 適配器模式(Adapter)的定義 440 25.2.2 適配器模式(Adapter)的說明 441 25.2.3 適配器模式(Adapter)的實現(xiàn)范例 441 25.3 使用適配器模式(Adapter)實現(xiàn)俘兵系統(tǒng) 443 25.3.1 俘兵系統(tǒng)的架構設計 443 25.3.2 實現(xiàn)說明 443 25.3.3 與俘兵相關的新增部分 445 25.3.4 使用適配器模式(Adapter)的優(yōu)點 450 25.4 適配器模式(Adapter)面對變化時 450 25.5 結論 451 第26章 加載速度的優(yōu)化代理模式(Proxy) 453 26.1 最后的系統(tǒng)優(yōu)化 453 26.2 代理模式(Proxy) 457 26.2.1 代理模式(Proxy)的定義 458 26.2.2 代理模式(Proxy)的說明 458 26.2.3 代理模式(Proxy)的實現(xiàn)范例 459 26.3 使用代理模式(Proxy)測試和優(yōu)化加載速度 460 26.3.1 優(yōu)化加載速度的架構設計 460 26.3.2 實現(xiàn)說明 461 26.3.3 使用代理模式(Proxy)的優(yōu)點 464 26.3.4 實現(xiàn)代理模式(Proxy)時的注意事項 464 26.4 代理模式(Prory)面對變化時 466 26.5 結論 466 第8篇 未明確使用的模式 第27章 迭代器模式(Iterator)、原型模式(Prototype)和解釋器模式(Interpreter) 468 27.1 迭代器模式(Iterator) 468 27.2 原型模式(Prototype) 469 27.3 解釋器模式(Interpreter) 471 第28章 抽象工廠模式(Abstract Factory) 472 28.1 抽象工廠模式(Abstract Factory)的定義 472 28.2 抽象工廠模式(Abstract Factory)的實現(xiàn) 473 28.3 可應用抽象工廠模式的場合 476 參考文獻 477
你還可能感興趣
我要評論
|