遊戲編程模式 游戏编程模式
[美] Robert Nystrom 尼斯卓姆
- 出版商: 人民郵電
- 出版日期: 2024-09-01
- 售價: $414
- 貴賓價: 9.5 折 $393
- 語言: 簡體中文
- 頁數: 306
- 裝訂: 平裝
- ISBN: 7115426880
- ISBN-13: 9787115426888
- 
    相關分類:
    
      遊戲開發設計、遊戲設計 Game-design
 
- 此書翻譯自: Game Programming Patterns (Paperback)
立即出貨(限量) (庫存=4)
買這商品的人也買了...
- 
                
                   C++ Primer, 4/e (中文版) C++ Primer, 4/e (中文版)$990$891
- 
                
                   無瑕的程式碼 - 敏捷軟體開發技巧守則 (Clean Code: A Handbook of Agile Software Craftsmanship) 無瑕的程式碼 - 敏捷軟體開發技巧守則 (Clean Code: A Handbook of Agile Software Craftsmanship)$580$452
- 
                
                   Kent Beck 的實作模式 (Implementation Patterns) Kent Beck 的實作模式 (Implementation Patterns)$320$272
- 
                
                   $768遊戲引擎架構 (Game Engine Architecture) $768遊戲引擎架構 (Game Engine Architecture)
- 
                
                   $594網絡遊戲核心技術與實戰 $594網絡遊戲核心技術與實戰
- 
                
                   物件導向設計模式-可再利用物件導向軟體之要素 (精裝典藏版) (Design Patterns: Elements of Reusable Object-Oriented Software) 物件導向設計模式-可再利用物件導向軟體之要素 (精裝典藏版) (Design Patterns: Elements of Reusable Object-Oriented Software)$550$550
- 
                
                   $654CLR via C#, 4/e (簡體中文版) $654CLR via C#, 4/e (簡體中文版)
- 
                
                   精通 Python|運用簡單的套件進行現代運算 (Introducing Python: Modern Computing in Simple Packages) 精通 Python|運用簡單的套件進行現代運算 (Introducing Python: Modern Computing in Simple Packages)$780$616
- 
                
                   設計模式與遊戲開發的完美結合 設計模式與遊戲開發的完美結合$690$538
- 
                
                   $1,008游戲設計藝術, 2/e (The Art of Game Design: A Book of Lenses, 2/e) $1,008游戲設計藝術, 2/e (The Art of Game Design: A Book of Lenses, 2/e)
- 
                
                   $505垃圾回收的演算法與實現 $505垃圾回收的演算法與實現
- 
                
                   $208代碼結構 $208代碼結構
- 
                
                   $354軟件設計重構 $354軟件設計重構
- 
                
                   網站擷取|使用 Python (Web Scraping with Python: Collecting Data from the Modern Web) 網站擷取|使用 Python (Web Scraping with Python: Collecting Data from the Modern Web)$580$458
- 
                
                   $534遊戲編程算法與技巧 $534遊戲編程算法與技巧
- 
                
                   $474Unity 3D 實戰核心技術詳解 $474Unity 3D 實戰核心技術詳解
- 
                
                   Python 自動化的樂趣|搞定重複瑣碎 & 單調無聊的工作 (中文版) (Automate the Boring Stuff with Python: Practical Programming for Total Beginners) Python 自動化的樂趣|搞定重複瑣碎 & 單調無聊的工作 (中文版) (Automate the Boring Stuff with Python: Practical Programming for Total Beginners)$500$425
- 
                
                   破解線上遊戲:電玩駭客的自動化 Bot 開發寶典 (Game Hacking: Developing Autonomous Bots for Online Games) 破解線上遊戲:電玩駭客的自動化 Bot 開發寶典 (Game Hacking: Developing Autonomous Bots for Online Games)$550$429
- 
                
                   平衡掌控者 — 遊戲數值戰鬥設計 平衡掌控者 — 遊戲數值戰鬥設計$390$371
- 
                
                   $228遊戲開發入門:數學和物理 $228遊戲開發入門:數學和物理
- 
                
                   $713網絡多人遊戲架構與編程 (Multiplayer Game Programming: Architecting Networked Games) $713網絡多人遊戲架構與編程 (Multiplayer Game Programming: Architecting Networked Games)
- 
                
                   遊戲引擎架構, 2/e (Game Engine Architecture, 2/e) 遊戲引擎架構, 2/e (Game Engine Architecture, 2/e)$1,314$1,248
- 
                
                   Unity 2D 遊戲開發 (Developing 2D Games with Unity: Independent Game Programming with C#) Unity 2D 遊戲開發 (Developing 2D Games with Unity: Independent Game Programming with C#)$479$455
- 
                
                   $403Unity3D 動作遊戲開發實戰 $403Unity3D 動作遊戲開發實戰
- 
                
                   $654多人在線遊戲架構實戰:基於 C++ 的分佈式遊戲編程 $654多人在線遊戲架構實戰:基於 C++ 的分佈式遊戲編程
商品描述
<內容介紹>
遊戲開發一直是熱門的領域,掌握良好的遊戲編程模式是開發人員的應備技能。本書細緻地講解了遊戲開發需要用到的各種編程模式,並提供了豐富的示例。
全書共分20章,通過三大部分內容全面介紹了與遊戲編程模式相關的各類知識點。首部分介紹了基礎知識和框架;第二部分深入探索設計模式,並介紹了模式與遊戲開發之間的關聯;第三部分介紹了13種有效的遊戲設計模式。
本書提供了豐富的代碼示例,通過理論和代碼示例相結合的方式幫助讀者更好地學習。無論是遊戲領域的設計人員、開發人員,還是想要進入遊戲開發領域的學生和普通程序員,都可以閱讀本書。
<章節目錄>
第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
作者簡介
Robert Nystrom是一位擁有20年以上職業編程經驗的開發者,而他在其中大概一半的時間從事遊戲開發。在藝電(Electronic Arts)的8年時間裏,他曾參與勁爆美式足球(Madden)系列這樣龐大的項目,也曾投身於亨利·海茨沃斯大冒險(Henry Ptatsworth in the Puzzing Adventure)這樣稍小規模的遊戲開發之中。他所開發的遊戲遍及PC、Gamecube、PS2、XBox、X360以及DS平臺。但他最引以為傲的,是為開發者們提供了開發工具和共享庫。他熱衷於尋求易用的、漂亮的代碼來延伸和增強開發者們的創造力



 
     
     
     
    
 
    
 
    
 
     
     
    