新到貨2本75折
游戲編程模式

游戲編程模式

  • 定價:414
  • 優惠價:87360
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

游戲開發一直是熱門的領域,掌握良好的游戲編程模式是開發人員的應備技能。

本書細致地講解了游戲開發需要用到的各種編程模式,並提供了豐富的示例。

全書共分20章,通過三大部分內容全面介紹了與游戲編程模式相關的各類知識點。

首部分介紹了基礎知識和框架;第二部分深入探索設計模式,並介紹了模式與游戲開發之間的關聯;第三部分介紹了13種有效的游戲設計模式。

本書提供了豐富的代碼示例,通過理論和代碼示例相結合的方式幫助讀者更好地學習。無論是游戲領域的設計人員、開發人員,還是想要進入游戲開發領域的學生和普通程序員,都可以閱讀本書。

RobertNystrom是一位擁有20年以上職業編程經驗的開發者,而他在其中大概一半的時間從事游戲開發。在藝電(ElectronicArts)的8年時間里,他曾參與勁爆美式足球(Madden)系列這樣龐大的項目,也曾投身於亨利·海茨沃斯大冒險(HenryHatsworthinthePuzzlingAdventure)這樣稍小規模的游戲開發之中。他所開發的游戲遍及PC、GameCube、PS2、XBox、X360以及DS平台。但他引以為傲的,是為開發者們提供了開發工具和共享庫。他熱衷於尋求易用的、漂亮的代碼來延伸和增強開發者們的創造力。Robert與他的妻子和兩個女兒定居於西雅圖,在那里你很有可能會見到他正在為朋友們下廚,或者在為他們上啤酒。
 

目錄

第1篇  概述
第1章 架構,性能和游戲 3
1.1 什麼是軟件架構 3
1.1.1 什麼是好的軟件架構 3
1.1.2 你如何做出改變 4
1.1.3 我們如何從解耦中受益 5
1.2 有什麼代價 5
1.3 性能和速度 6
1.4 壞代碼中的好代碼 7
1.5 尋求平衡 8
1.6 簡單性 9
1.7 准備出發 9

第2篇  再探設計模式
第2章 命令模式 13
2.1 配置輸入 14
2.2 關於角色的說明 16
2.3 撤銷和重做 18
2.4 類風格化還是函數風格化 21
2.5 參考 22
第3章 享元模式 23
3.1 森林之樹 23
3.2 一千個實例 25
3.3 享元模式 26
3.4 扎根之地 26
3.5 性能表現如何 30
3.6 參考 31
第4章 觀察者模式 33
4.1 解鎖成就 33
4.2 這一切是怎麼工作的 34
4.2.1 觀察者 35
4.2.2 被觀察者 35
4.2.3 可被觀察的物理模塊 37
4.3 它太慢了 38
4.4 太多的動態內存分配 39
4.4.1 鏈式觀察者 39
4.4.2 鏈表節點池 42
4.5 余下的問題 43
4.5.1 銷毀被觀察者和觀察者 43
4.5.2 不用擔心,我們有GC 44
4.5.3 接下來呢 44
4.6 觀察者模式的現狀 45
4.7 觀察者模式的未來 46
第5章 原型模式 47
5.1 原型設計模式 47
5.1.1 原型模式效果如何 50
5.1.2 生成器函數 51
5.1.3 模板 51
5.1.4 頭等公民類型(First-class types) 52
5.2 原型語言范式 52
5.2.1 Self 語言 53
5.2.2 結果如何 54
5.2.3 JavaScript如何 55
5.3 原型數據建模 57
第6章 單例模式 61
6.1 單例模式 61
6.1.1 確保一個類只有一個實例 61
6.1.2 提供一個全局指針以訪問唯一實例 62
6.2 使用情境 63
6.3 后悔使用單例的原因 65
6.3.1 它是一個全局變量 65
6.3.2 它是個畫蛇添足的解決方案 66
6.3.3 延遲初始化剝離了你的控制 67
6.4 那麼我們該怎麼做 68
6.4.1 看你究竟是否需要類 68
6.4.2 將類限制為單一實例 70
6.4.3 為實例提供便捷的訪問方式 71
6.5 剩下的問題 73
第7章 狀態模式 75
7.1 我們曾經相遇過 75
7.2 救星:有限狀態機 78
7.3 枚舉和分支 79
7.4 狀態模式 82
7.4.1 一個狀態接口 82
7.4.2 為每一個狀態定義一個類 83
7.4.3 狀態委托 84
7.5 狀態對象應該放在哪里呢 84
7.5.1 靜態狀態 84
7.5.2 實例化狀態 85
7.6 進入狀態和退出狀態的行為 86
7.7 有什麼收獲嗎 88
7.8 並發狀態機 88
7.9 層次狀態機 89
7.10 下推自動機 91
7.11 現在知道它們有多有用了吧 92

第3篇  序列型模式
第8章 雙緩沖 95
8.1 動機 95
8.1.1 計算機圖形系統是如何工作的(概述) 95
8.1.2 第一幕,第一場 96
8.1.3 回到圖形上 97
8.2 模式 98
8.3 使用情境 98
8.4 注意事項 98
8.4.1 交換本身需要時間 98
8.4.2 我們必須有兩份緩沖區 99
8.5 示例代碼 99
8.5.1 並非只針對圖形 102
8.5.2 人工非智能 102
8.5.3 緩存這些巴掌 106
8.6 設計決策 107
8.6.1 緩沖區如何交換 107
8.6.2 緩沖區的粒度如何 109
8.7 參考 110
第9章 游戲循環 111
9.1 動機 111
9.1.1 CPU探秘 111
9.1.2 事件循環 112
9.1.3 時間之外的世界 113
9.1.4 秒的長短 113
9.2 模式 114
9.3 使用情境 114
9.4 使用須知 114
9.5 示例代碼 115
9.5.1 跑,能跑多快就跑多快 115
9.5.2 小睡一會兒 115
9.5.3 小改動,大進步 116
9.5.4 把時間追回來 118
9.5.5 留在兩幀之間 119
9.6 設計決策 120
9.6.1 誰來控制游戲循環,你還是平台 121
9.6.2 你如何解決能量耗損 121
9.6.3 如何控制游戲速度 122
9.7 參考 123
第10章 更新方法 125
10.1 動機 125
10.2 模式 127
10.3 使用情境 128
10.4 使用須知 128
10.4.1 將代碼划分至單幀之中使其變得更加復雜 128
10.4.2 你需要在每幀結束前存儲游戲狀態以便下一幀繼續 128
10.4.3 所有對象都在每幀進行模擬,但並非真正同步 129
10.4.4 在更新期間修改對象列表時必須謹慎 129
10.5 示例代碼 130
10.5.1 子類化實體 132
10.5.2 定義實體 132
10.5.3 逝去的時間 135
10.6 設計決策 136
10.6.1 update方法依存於何類中 136
10.6.2 那些未被利用的對象該如何處理 137
10.7 參考 137

第4篇  行為型模式
第11章 字節碼 141
11.1 動機 141
11.1.1 魔法大戰 141
11.1.2 先數據后編碼 142
11.1.3 解釋器模式 142
11.1.4 虛擬機器碼 145
11.2 字節碼模式 145
11.3 使用情境 145
11.4 使用須知 146
11.4.1 你需要個前端界面 146
11.4.2 你會想念調試器的 147
11.5 示例 147
11.5.1 法術API 147
11.5.2 法術指令集 148
11.5.3 棧機 149
11.5.4 組合就能得到行為 153
11.5.5 一個虛擬機 155
11.5.6 語法轉換工具 155
11.6 設計決策 157
11.6.1 指令如何訪問堆棧 157
11.6.2 應該有哪些指令 158
11.6.3 值應當如何表示 158
11.6.4 如何生成字節碼 161
11.7 參考 162
第12章 子類沙盒 163
12.1 動機 163
12.2 沙盒模式 165
12.3 使用情境 165
12.4 使用須知 165
12.5 示例 166
12.6 設計決策 168
12.6.1 需要提供什麼操作 168
12.6.2 是直接提供函數,還是由包含它們的對象提供 169
12.6.3 基類如何獲取其所需的狀態 170
12.7 參考 173
第13章 類型對象 175
13.1 動機 175
13.1.1 經典的面向對象方案 175
13.1.2 一個類的類 177
13.2 類型對象模式 178
13.3 使用情境 179
13.4 使用須知 179
13.4.1 類型對象必須手動跟蹤 179
13.4.2 為每個類型定義行為更困難 179
13.5 示例 180
13.5.1 構造函數:讓類型對象更加像類型 181
13.5.2 通過繼承共享數據 183
13.6 設計決策 185
13.6.1 類型對象應該封裝還是暴露 186
13.6.2 持有類型對象如何創建 187
13.6.3 類型能否改變 187
13.6.4 支持何種類型的派生 188
13.7 參考 189

第5篇  解耦型模式
第14章 組件模式 193
14.1 動機 193
14.1.1 難題 194
14.1.2 解決難題 194
14.1.3 寬松的末端 194
14.1.4 捆綁在一起 195
14.2 模式 196
14.3 使用情境 196
14.4 注意事項 196
14.5 示例代碼 197
14.5.1 一個龐大的類 197
14.5.2 分割域 198
14.5.3 分割其余部分 200
14.5.4 重構Bjorn 202
14.5.5 刪掉Bjorn 204
14.6 設計決策 206
14.6.1 對象如何獲得組件 206
14.6.2 組件之間如何傳遞信息 207
14.7 參考 210
第15章 事件隊列 211
15.1 動機 211
15.1.1 用戶圖形界面的事件循環 211
15.1.2 中心事件總線 212
15.1.3 說些什麼好呢 213
15.2 事件隊列模式 215
15.3 使用情境 215
15.4 使用須知 215
15.4.1 中心事件隊列是個全局變量 216
15.4.2 游戲世界的狀態任你掌控 216
15.4.3 你會在反饋系統循環中繞圈子 216
15.5 示例代碼 217
15.5.1 環狀緩沖區 219
15.5.2 匯總請求 222
15.5.3 跨越線程 223
15.6 設計決策 224
15.6.1 入隊的是什麼 224
15.6.2 誰能從隊列中讀取 224
15.6.3 誰可以寫入隊列 225
15.6.4 隊列中對象的生命周期是什麼 226
15.7 參考 227
第16章 服務定位器 229
16.1 動機 229
16.2 服務定位器模式 230
16.3 使用情境 230
16.4 使用須知 231
16.4.1 服務必須被定位 231
16.4.2 服務不知道被誰定位 231
16.5 示例代碼 231
16.5.1 服務 231
16.5.2 服務提供器 232
16.5.3 簡單的定位器 232
16.5.4 空服務 233
16.5.5 日志裝飾器 235
16.6 設計決策 236
16.6.1 服務是如何被定位的 236
16.6.2 當服務不能被定位時發生了什麼 239
16.6.3 服務的作用域多大 240
16.7 其他參考 241

第6篇  優化型模式
第17章 數據局部性 245
17.1 動機 245
17.1.1 數據倉庫 246
17.1.2 CPU的托盤 247
17.1.3 等下,數據即性能 248
17.2 數據局部性模式 249
17.3 使用情境 249
17.4 使用須知 250
17.5 示例代碼 250
17.5.1 連續的數組 251
17.5.2 包裝數據 255
17.5.3 熱/冷分解 258
17.6 設計決策 260
17.6.1 你如何處理多態 260
17.6.2 游戲實體是如何定義的 261
17.7 參考 263
第18章 臟標記模式 265
18.1 動機 265
18.1.1 局部變換和世界變換 266
18.1.2 緩存世界變換 267
18.1.3 延時重算 268
18.2 臟標記模式 269
18.3 使用情境 269
18.4 使用須知 270
18.4.1 延時太長會有代價 270
18.4.2 必須保證每次狀態改動時都設置臟標記 271
18.4.3 必須在內存中保存上次的衍生數據 271
18.5 示例代碼 271
18.5.1 未優化的遍歷 272
18.5.2 讓我們「臟」起來 273
18.6 設計抉擇 275
18.6.1 何時清除臟標記 275
18.6.2 臟標記追蹤的粒度多大 276
18.7 參考 276
第19章 對象池 277
19.1 動機 277
19.1.1 碎片化的害處 277
19.1.2 二者兼顧 278
19.2 對象池模式 278
19.3 使用情境 279
19.4 使用須知 279
19.4.1 對象池可能在閑置的對象上浪費內存 279
19.4.2 任意時刻處於存活狀態的對象數目恆定 279
19.4.3 每個對象的內存大小是固定的 280
19.4.4 重用對象不會被自動清理 281
19.4.5 未使用的對象將占用內存 281
19.5 示例代碼 281
19.6 設計決策 287
19.6.1 對象是否被加入對象池 287
19.6.2 誰來初始化那些被重用的對象 288
19.7 參考 290
第20章 空間分區 291
20.1 動機 291
20.1.1 戰場上的部隊 291
20.1.2 繪制戰線 292
20.2 空間分區模式 293
20.3 使用情境 293
20.4 使用須知 293
20.5 示例代碼 293
20.5.1 一張方格紙 294
20.5.2 相連單位的網格 294
20.5.3 進入戰場 296
20.5.4 刀光劍影的戰斗 297
20.5.5 沖鋒陷陣 298
20.5.6 近在咫尺,短兵相接 299
20.6  設計決策 302
20.6.1 分區是層級的還是扁平的 302
20.6.2 分區依賴於對象集合嗎 302
20.6.3 對象只存儲在分區中嗎 304
20.7  參考 305
 

詳細資料

  • ISBN:9787115426888
  • 規格:306頁 / 普通級 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【其他】2024采實電子書全書系:春暖花開‧享閱讀,參展書單書85折起、任選3本79折
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折