關(guān)于我們
書單推薦
新書推薦
|
設(shè)計模式與游戲完美開發(fā)
《設(shè)計模式與游戲完美開發(fā)》是作者十年磨一劍,將設(shè)計模式理論巧妙地融合到實踐中的*教材。
全書采用了整合式的項目教學(xué),即以一個游戲的范例來應(yīng)用23種設(shè)計模式的實現(xiàn)貫穿全書,讓讀者學(xué)習(xí)到整個游戲開發(fā)的全過程和作者想要傳承的經(jīng)驗,并以淺顯易懂的比喻來解析難以理解的設(shè)計模式,讓想深入了解此領(lǐng)域的讀者更加容易上手。
本書既可以作為大學(xué)、?坪吐殬I(yè)院校游戲程序設(shè)計專業(yè)的教材,也可以作為游戲從業(yè)人員提高游戲設(shè)計能力和規(guī)范運用設(shè)計模式的培訓(xùn)教材,還可以作為有這方面職業(yè)興趣的讀者學(xué)習(xí)和提高的自學(xué)參考書。
十年磨一劍,作者將設(shè)計模式理論巧妙地融入到實踐中,以一個游戲的完整實現(xiàn)呈現(xiàn)設(shè)計模式的應(yīng)用及經(jīng)驗的傳承 《軒轅劍》之父蔡明宏、資深游戲制作人李佳澤、Product Evangelist at Unity TechnologiesKelvin Lo、信仁軟件設(shè)計創(chuàng)辦人 賴信仁、資深3D游戲美術(shù)劉明愷 聯(lián)合推薦全書采用了整合式的項目教學(xué),即以一個游戲的范例來應(yīng)用23種設(shè)計模式的實現(xiàn)貫穿全書,讓讀者學(xué)習(xí)到整個游戲開發(fā)的全過程和作者想要傳承的經(jīng)驗,并以淺顯易懂的比喻來解析難以理解的設(shè)計模式,讓想深入了解此領(lǐng)域的讀者更加容易上手。
初次接觸設(shè)計模式(Design Patterns)是在求學(xué)階段,第一次看GoF的《Design Patterns: Elements of Reusable Object-Oriented Software》時,感覺尤如天書一般,只能大概了解Singleton、Strategy、Facade、Iterator這幾個Pattern的用法,至于為什么要使用、什么時候使用,完全沒有概念。進(jìn)入職場后,先是跟著幾個大型游戲項目一同開發(fā)和學(xué)習(xí),到后來,自己可以主持技術(shù)項目、開發(fā)網(wǎng)絡(luò)游戲引擎、游戲框架等。在這個過程中,時而拿起GoF的《Design Patterns》或是以設(shè)計模式為題的書籍,反復(fù)閱讀,逐漸地了解了每一種模式的應(yīng)用以及它們的設(shè)計分析原理,并通過不斷地實踐與應(yīng)用,才將它們?nèi)谌胱约旱闹R體系中。從2004年進(jìn)入職場,一晃眼,在游戲業(yè)也超過了10的經(jīng)歷,這些年在游戲行業(yè)工作的付出,除了得以溫飽之外,也從中吸收了不少的知識與經(jīng)驗。記得某天在一個項目開發(fā)會議中,我與同仁分享如何將設(shè)計模式應(yīng)用在游戲的開發(fā)設(shè)計中時,我突然察覺,應(yīng)該將這些內(nèi)容寫下來,并分享給更多的游戲設(shè)計師,于是就有了寫這本書的想法。通過寫作將經(jīng)驗與大家分享,希望大家可以了解,在游戲行業(yè)中的工程師,不該只是進(jìn)行著無意義程序代碼輸出的碼農(nóng),而是一群從事高級軟件分析實現(xiàn)的設(shè)計師。所以,整合多種領(lǐng)域知識于一身的游戲工程師,更需要以優(yōu)雅的方式來呈現(xiàn)這些知識匯集的結(jié)果,設(shè)計模式(Design Patterns)是各種軟件設(shè)計技巧的呈現(xiàn)方式,善用它們,更能表現(xiàn)出游戲設(shè)計工程師優(yōu)雅的一面。10年的游戲從業(yè)過程,接受過許多人的協(xié)助及幫忙:Jimmy & Silent兄弟20年的同學(xué)、朋友及合作伙伴們,有你們一路的協(xié)助與砥礪才能有今天;Justin Lee謝謝你的信任,也感謝你的忍受功力,可以讓我們一同完成不少作品;Mark Tsai謝謝你一路的提拔與信任;Jazzdog感謝你的支持,我一直知道程序與美術(shù)是可以同時存在于一個人身上的;Kai合作伙伴,感謝你的支持。最后謝謝我的家人,感謝老婆大人這10多年來忍受我在書房內(nèi)不斷地堆積書本、小說及收藏品。感謝我3歲的女兒,因為你的到來,讓我知道沒什么比你更重要了。
蔡升達(dá)2016年10月
蔡升達(dá)當(dāng)年為實現(xiàn)游戲夢從學(xué)術(shù)界進(jìn)入游戲業(yè),累積了10年游戲開發(fā)經(jīng)驗,包含多款大型多人線上游戲(MMORPG)、網(wǎng)頁游戲(Web Game)、移動平臺連線游戲(APP Game)。曾任職于臺灣地區(qū)知名游戲開發(fā)公司,擔(dān)任游戲設(shè)計師、專案程序統(tǒng)籌、研發(fā)技術(shù)中心經(jīng)理等職務(wù),現(xiàn)任知名新創(chuàng)團(tuán)隊研發(fā)總監(jiān)一職。擅長游戲程序設(shè)計、網(wǎng)絡(luò)程序設(shè)計、分布式系統(tǒng)設(shè)計、電腦圖學(xué)、影像搜索、游戲制作規(guī)劃及運作、游戲?qū)0腹芾。喜歡閱讀,家中有上千本藏書,包含信息技術(shù)、文學(xué)、奇幻小說、歷史小說等,因為看了很多,所以也有很多想法想與人分享。構(gòu)想多年之后,某日下午終于下筆開始了這本書。十年磨一劍,作者將設(shè)計模式理論巧妙地融入到實踐中,以一個游戲的完整實現(xiàn)呈現(xiàn)設(shè)計模式的應(yīng)用及經(jīng)驗的傳承
第1篇 設(shè)計模式與游戲設(shè)計 第1章 游戲?qū)崿F(xiàn)中的設(shè)計模式 2 1.1 設(shè)計模式的起源 2 1.2 軟件的設(shè)計模式是什么? 3 1.3 面向?qū)ο笤O(shè)計中常見的設(shè)計原則 4 1.4 為什么要學(xué)習(xí)設(shè)計模式 7 1.5 游戲程序設(shè)計與設(shè)計模式 8 1.6 模式的應(yīng)用與學(xué)習(xí)方式 10 1.7 結(jié)論 11 第2章 游戲范例說明 12 2.1 游戲范例 12 2.2 GoF的設(shè)計模式范例 15 第2篇 基礎(chǔ)系統(tǒng) 第3章 游戲場景的轉(zhuǎn)換狀態(tài)模式(State) 20 3.1 游戲場景 20 3.1.1 場景的轉(zhuǎn)換 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)游戲場景的轉(zhuǎ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í)行流程及場景轉(zhuǎn)換說明 36 3.4 狀態(tài)模式(State)面對變化時 37 3.5 結(jié)論 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 游戲主程序架構(gòu)設(shè)計 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 結(jié)論 48 第5章 獲取游戲服務(wù)的唯一對象單例模式(Singleton) 50 5.1 游戲?qū)崿F(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)獲取唯一的游戲服務(wù)對象 53 5.3.1 游戲服務(wù)類的單例模式實現(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 結(jié)論 63 第6章 游戲內(nèi)各系統(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)架構(gòu) 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 結(jié)論 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 結(jié)論 92 第3篇 角色的設(shè)計 第8章 角色系統(tǒng)的設(shè)計分析 94 8.1 游戲角色的架構(gòu) 94 8.2 角色類的規(guī)劃 95 第9章 角色與武器的實現(xiàn)橋接模式(Bridge) 98 9.1 角色與武器的關(guān)系 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 角色與武器接口設(shè)計 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 結(jié)論 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 結(jié)論 135 第11章 攻擊特效與擊中反應(yīng)模板方法模式(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 結(jié)論 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 結(jié)論 172 第13章 角色系統(tǒng) 174 13.1 角色類 174 13.2 游戲角色管理系統(tǒng) 176 第4篇 角色的產(chǎn)生 第14章 游戲角色的產(chǎn)生工廠方法模式(Factory Method) 183 14.1 產(chǎn)生角色 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)產(chǎn)生角色對象 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 結(jié)論 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 結(jié)論 228 第16章 游戲?qū)傩怨芾砉δ芟碓J剑‵lyweight) 229 16.1 游戲?qū)傩缘墓芾?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 結(jié)論 252 第5篇 戰(zhàn)爭開始 第17章 Unity3D的界面設(shè)計組合模式(Composite) 254 17.1 玩家界面設(shè)計 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游戲?qū)ο蟮姆謱邮焦芾砉δ?265 17.3.1 游戲?qū)ο蟮姆謱庸芾?265 17.3.2 正確有效地獲取UI的游戲?qū)ο?266 17.3.3 游戲用戶界面的實現(xiàn) 267 17.3.4 兵營界面的實現(xiàn) 269 17.4 結(jié)論 274 第18章 兵營系統(tǒng)及兵營信息顯示 276 18.1 兵營系統(tǒng) 276 18.2 兵營系統(tǒng)的組成 277 18.3 初始兵營系統(tǒng) 281 18.4 兵營信息的顯示流程 287 第19章 兵營訓(xùn)練單位命令模式(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)兵營訓(xùn)練角色 297 19.3.1 訓(xùn)練命令的實現(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 結(jié)論 306 第20章 關(guān)卡設(shè)計責(zé)任鏈模式(Chain of Responsibility) 307 20.1 關(guān)卡設(shè)計 307 20.2 責(zé)任鏈模式(Chain of Responsibility) 312 20.2.1 責(zé)任鏈模式(Chain of Responsibility)的定義 312 20.2.2 責(zé)任鏈模式(Chain of Responsibility)的說明 314 20.2.3 責(zé)任鏈模式(Chain of Responsibility)的實現(xiàn)范例 314 20.3 使用責(zé)任鏈模式(Chain of Responsibility)實現(xiàn)關(guān)卡系統(tǒng) 317 20.3.1 關(guān)卡系統(tǒng)的設(shè)計 317 20.3.2 實現(xiàn)說明 318 20.3.3 使用責(zé)任鏈模式(Chain of Responsibility)的優(yōu)點 329 20.3.4 實現(xiàn)責(zé)任鏈模式(Chain of Responsibility)時的注意事項 329 20.4 責(zé)任鏈模式(Chain of Responsibility)面對變化時 330 20.5 結(jié)論 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)的新架構(gòu) 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 結(jié)論 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 成就記錄保存的功能設(shè)計 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 結(jié)論 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)設(shè)計 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 結(jié)論 408 第7篇 調(diào)整與優(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 前綴后綴功能的架構(gòu)設(shè)計 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 結(jié)論 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)的架構(gòu)設(shè)計 443 25.3.2 實現(xiàn)說明 443 25.3.3 與俘兵相關(guān)的新增部分 445 25.3.4 使用適配器模式(Adapter)的優(yōu)點 450 25.4 適配器模式(Adapter)面對變化時 450 25.5 結(jié)論 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)化加載速度的架構(gòu)設(shè)計 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 結(jié)論 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 可應(yīng)用抽象工廠模式的場合 476 參考文獻(xiàn) 477
你還可能感興趣
我要評論
|