網絡多人游戲架構與編程

網絡多人游戲架構與編程
定價:654
NT $ 569
 

內容簡介

網絡多人游戲已經成為游戲產業的重要組成部分,本書是一本深入探討關於網絡多人游戲編程的圖書。

全書分為13章,從網絡游戲的基本概念、互聯網、伯克利套接字、對象序列化、對象復制、網絡拓撲和游戲案例、延遲、抖動和可靠性、改進的延遲處理、可擴展性、安全性、真實世界的引擎、玩家服務、雲托管專用服務器等方面深入介紹了網絡多人游戲開發的知識,既全面又詳盡地剖析了眾多核心概念。

本書的多數示例基於C++編寫,適合對C++有一定了解的讀者閱讀。本書既可以作為大學計算機相關專業的指導教程,也可以作為普通讀者學習網絡游戲編程的參考指南。

Joshua Glazer是Naked Sky Entertainment的CTO和創始人之一。Naked Sky Entertainment是一個游戲開發工作室,開發了很多游戲,如RoboBlitz、MicroBot、Twister Mania和手機端游戲Max Axe、Scrap Force。他為許多項目提供咨詢,包括Epic Games公司的《虛幻引擎》(Unreal Engine)、Riot Games公司的《英雄聯盟》(League of Legends)、THQ公司《毀滅全人類》(Destroy All Humans),還包括藝電(Electronic Arts)、Midway、微軟(Microsoft)和派拉蒙電影公司(Paramount Pictures)等公司的很多項目。Joshua也是南加州大學(USC)的兼職講師,講授多人游戲編程和游戲引擎開發。

Sanjay Madhav是南加州大學(USC)的gao級講師,講授游戲編程、游戲引擎、數據結構和編譯器知識。他在藝電(Electronic Arts)、Neversoft和Pandemic Studio做過開發zhe,涉足的游戲有《榮譽勛章:血戰太平洋》(Medal of Honor: Pacific Assault)、《托尼霍克極限滑板8》(Tony Hawk』s Project 8)、《指環王:征服》(Lord of the Rings: Conquest)和《破壞者》(The Saboteur)等。他也是《Game Programming Algorithms and Techniques》的作者之一。
 

目錄

第1章 網絡游戲概述1
1.1 多人游戲的簡要歷程1
1.1.1 本地多人游戲1
1.1.2 早期網絡多人游戲1
1.1.3 多用戶網絡游戲2
1.1.4 局域網游戲3
1.1.5 在線游戲3
1.1.6 大規模多人在線游戲4
1.1.7 移動網絡游戲4
1.2 星際圍攻:部落5
1.2.1 平台數據包模塊7
1.2.2 連接管理器7
1.2.3 流管理器8
1.2.4 事件管理器8
1.2.5 ghost管理器8
1.2.6 移動管理器9
1.2.7 其他系統9
1.3 帝國時代10
1.3.1 輪班計時器11
1.3.2 同步12
1.4 總結13
1.5 復習題13
1.6 延伸的閱讀資料14

第2章 互聯網15
2.1 起源:分組交換15
2.2 TCP/IP模型17
2.3 物理層18
2.4 鏈路層18
2.5 網絡層22
2.5.1 IPv423
2.5.2 IPv636
2.6 傳輸層37
2.6.1 UDP38
2.6.2 TCP39
2.7 應用層48
2.7.1 DHCP49
2.7.2 DNS49
2.8 NAT50
2.9 總結56
2.10 復習題57
2.11 延伸的閱讀資料58

第3章 伯克利套接字61
3.1 創建Socket61
3.2 API操作系統差異63
3.3 socket地址66
3.3.1 類型安全68
3.3.2 用字符串初始化sockaddr70
3.3.3 綁定socket73
3.4 UDPSocket74
3.5 TCPSocket79
3.5.1 通過連接的socket實現發送和接收80
3.5.2 類型安全的TCPSocket82
3.6 阻塞和非阻塞I/O84
3.6.1 多線程85
3.6.2 非阻塞I/O86
3.6.3 Select88
3.7 其他Socket選項92
3.8 總結94
3.9 復習題94
3.10 延伸的閱讀資料95

第4章 對象序列化97
4.1 序列化的需求97
4.2 流100
4.2.1 內存流101
4.2.2 字節存儲次序的兼容性105
4.2.3 比特流109
4.3 引用數據115
4.3.1 內聯或嵌入116
4.3.2 鏈接117
4.4 壓縮119
4.4.1 稀疏數組壓縮120
4.4.2 熵編碼121
4.4.3 定點123
4.4.4 幾何壓縮125
4.5 可維護性127
4.5.1 抽象序列化方向127
4.5.2 數據驅動的序列化129
4.6 總結132
4.7 復習題133
4.8 延伸的閱讀資料134

第5章 對象復制135
5.1 世界狀態135
5.2 復制對象135
5.2.1 對象創建注冊表139
5.2.2 一個數據包中的多個對象143
5.3 朴素的世界狀態復制方法144
5.4 世界狀態中的變化148
5.5 RPC作為序列化對象155
5.6 自定義解決方案158
5.7 總結159
5.8 復習題160
5.9 延伸的閱讀資料160

第6章 網絡拓撲和游戲案例161
6.1 網絡拓撲161
6.1.1 客戶端—服務器161
6.1.2 對等網絡163
6.2 客戶端—服務器的實現165
6.2.1 服務器和客戶端的代碼分離166
6.2.2 網絡管理器和歡迎新客戶端167
6.2.3 輸入共享和客戶端代理172
6.3 對等網絡的實現177
6.3.1 歡迎新對等體和開始游戲179
6.3.2 命令共享和鎖步回合制181
6.3.3 保持同步187
6.4 總結192
6.5 復習題192
6.6 延伸的閱讀資料193

第7章 延遲、抖動和可靠性195
7.1 延遲195
7.1.1 非網絡延遲195
7.1.2 網絡延遲198
7.2 抖動199
7.3 數據包丟失201
7.4 可靠性:TCP還是UDP202
7.5 數據包傳遞通知204
7.5.1 標記傳出的數據包205
7.5.2 接收數據包並發送確認206
7.5.3 接收確認並傳遞狀態211
7.6 對象復制可靠性216
7.7 模擬真實世界的條件224
7.8 總結226
7.9 復習題227
7.10 延伸的閱讀資料228

第8章 改進的延遲處理229
8.1 沉默的客戶終端229
8.2 客戶端插值231
8.3 客戶端預測233
8.3.1 航位推測法236
8.3.2 客戶端移動預測和重放238
8.3.3 通過技巧和優化隱藏延遲243
8.4 服務器端回退244
8.5 總結245
8.6 復習題246
8.7 延伸的閱讀資料246
第9章 可擴展性247
9.1 對象范圍和相關性247
9.1.1 靜態區域248
9.1.2 使用視錐249
9.1.3 其他可見性技術250
9.1.4 不可見時的相關性252
9.2 服務器分區253
9.3 實例化255
9.4 優先級和頻率255
9.5 總結256
9.6 復習題257
9.7 延伸的閱讀資料257

第10章 安全性259
10.1 數據包嗅探259
10.1.1 中間人攻擊259
10.1.2 在主機上的數據包嗅探262
10.2 輸入驗證263
10.3 軟件作弊檢測264
10.3.1 維爾福反作弊系統265
10.3.2 典獄長反作弊系統266
10.4 保護服務器267
10.4.1 分布式拒絕服務攻擊267
10.4.2 壞數據267
10.4.3 時序攻擊268
10.4.4 入侵269
10.5 總結270
10.6 復習題271
10.7 延伸的閱讀資料271

第11章 真實世界的引擎273
11.1 虛幻引擎4273
11.1.1 套接字和基本的網絡體系273
11.1.2 游戲對象和拓撲274
11.1.3 Actor復制275
11.1.4 遠程過程調用276
11.2 Unity277
11.2.1 傳輸層API278
11.2.2 游戲對象和拓撲278
11.2.3 生成對象和復制279
11.2.4 遠程過程調用279
11.2.5 比賽安排280
11.3 總結280
11.4 復習題281
11.5 延伸的閱讀資料281

第12章 玩家服務283
12.1 選擇一種玩家服務283
12.2 基本設置283
12.2.1 初始化、運行和關閉285
12.2.2 用戶ID和名稱286
12.3 游戲大廳和比賽安排287
12.4 網絡291
12.5 玩家統計294
12.6 玩家成就299
12.7 排行榜300
12.8 其他服務302
12.9 總結303
12.10 復習題303
12.11 延伸的閱讀資料304

第13章 雲托管專用服務器305
13.1 托管或不托管305
13.2 行業工具306
13.2.1 REST307
13.2.2 JSON307
13.2.3 Node.JS308
13.3 概述和術語308
13.3.1 服務器游戲實例309
13.3.2 游戲服務器進程309
13.3.3 游戲服務器310
13.3.4 硬件311
13.4 本地服務器進程管理器311
13.5 虛擬機管理器318
13.6 總結327
13.7 復習題328
13.8 延伸的閱讀資料328

附錄A 現代C++基礎329
網路書店 類別 折扣 價格
  1. 新書
    87
    $569