網(wǎng)絡(luò)多人游戲架構(gòu)與編程
定 價(jià):109 元
- 作者:[美]Joshua Glazer 格雷澤 Sanjay Madhav 馬達(dá)夫
- 出版時(shí)間:2017/9/1
- ISBN:9787115457790
- 出 版 社:人民郵電出版社
- 中圖法分類:TP317.63
- 頁碼:
- 紙張:膠版紙
- 版次:1
- 開本:16開
網(wǎng)絡(luò)多人游戲已經(jīng)成為游戲產(chǎn)業(yè)的重要組成部分,本書是一本深入探討關(guān)于網(wǎng)絡(luò)多人游戲編程的圖書。
全書分為13章,從網(wǎng)絡(luò)游戲的基本概念、互聯(lián)網(wǎng)、伯克利套接字、對(duì)象序列化、對(duì)象復(fù)制、網(wǎng)絡(luò)拓?fù)浜陀螒虬咐、延遲、抖動(dòng)和可靠性、改進(jìn)的延遲處理、可擴(kuò)展性、安全性、真實(shí)世界的引擎、玩家服務(wù)、云托管專用服務(wù)器等方面深入介紹了網(wǎng)絡(luò)多人游戲開發(fā)的知識(shí),既全面又詳盡地剖析了眾多核心概念。
本書的多數(shù)示例基于C 編寫,適合對(duì)C 有一定了解的讀者閱讀。本書既可以作為大學(xué)計(jì)算機(jī)相關(guān)專業(yè)的指導(dǎo)教程,也可以作為普通讀者學(xué)習(xí)網(wǎng)絡(luò)游戲編程的參考指南。
網(wǎng)絡(luò)多人游戲是一個(gè)數(shù)十億美元級(jí)的業(yè)務(wù),其中的一些游戲吸引了數(shù)以千萬計(jì)的玩家。在這本實(shí)用且代碼豐富的指南中,作者將指導(dǎo)你完成多人游戲開發(fā)的各個(gè)方面,他們將帶你構(gòu)建一個(gè)具有健壯性的多人游戲架構(gòu),并創(chuàng)建各個(gè)引擎級(jí)的系統(tǒng)。你將通過深入的代碼示例來學(xué)習(xí)兩個(gè)完整的游戲:一個(gè)動(dòng)作游戲和一個(gè)實(shí)時(shí)戰(zhàn)略(RTS)游戲。
首先,本書從游戲開發(fā)zhe的角度回顧網(wǎng)絡(luò)和網(wǎng)絡(luò)編程的基本要素。接下來講解管理游戲數(shù)據(jù)傳輸、通過網(wǎng)絡(luò)更新游戲?qū)ο蠛徒M織加入游戲的設(shè)備。你將學(xué)習(xí)如何在互聯(lián)網(wǎng)固有的不一致性前提下,確?煽康男阅,以及如何設(shè)計(jì)游戲代碼以實(shí)現(xiàn)zui大的安全性和可擴(kuò)展性。zui后,本書以解決兩個(gè)關(guān)鍵問題結(jié)束:結(jié)合玩家服務(wù)和將游戲托管在云端。
作者在美國(guó)南加州大學(xué)的多人游戲編程課程對(duì)本書的內(nèi)容進(jìn)行了廣泛的測(cè)試,學(xué)生和正向網(wǎng)絡(luò)游戲遷移的游戲開發(fā)zhe都會(huì)從中受益。
本書包括以下內(nèi)容:
游戲如何進(jìn)化以應(yīng)對(duì)網(wǎng)絡(luò)環(huán)境的挑戰(zhàn);
在游戲開發(fā)中使用互聯(lián)網(wǎng)通信協(xié)議和標(biāo)準(zhǔn);
使用多人網(wǎng)絡(luò)游戲中廣泛應(yīng)用的Berkeley Socket;
規(guī)范游戲數(shù)據(jù)格式,實(shí)現(xiàn)高效的互聯(lián)網(wǎng)傳輸;
同步狀態(tài),使得所有玩家共享同一個(gè)世界;
組織大型游戲的網(wǎng)絡(luò)拓?fù)洌?解決引起等待及數(shù)據(jù)丟失的延遲和抖動(dòng)問題;
在不影響性能的前提下擴(kuò)展游戲;
打擊安全漏洞和軟件作弊;
利用當(dāng)前流行游戲引擎?D?DUnreal 4和Unity游戲引擎;
整合玩家服務(wù),如比賽安排、成就和排行榜;
云端運(yùn)行游戲服務(wù)器。
Joshua Glazer是Naked Sky Entertainment的CTO和創(chuàng)始人之一。Naked Sky Entertainment是一個(gè)游戲開發(fā)工作室,開發(fā)了很多游戲,如RoboBlitz、MicroBot、Twister Mania和手機(jī)端游戲Max Axe、Scrap Force。他為許多項(xiàng)目提供咨詢,包括Epic Games公司的《虛幻引擎》(Unreal Engine)、Riot Games公司的《英雄聯(lián)盟》(League of Legends)、THQ公司《毀滅全人類》(Destroy All Humans),還包括藝電(Electronic Arts)、Midway、微軟(Microsoft)和派拉蒙電影公司(Paramount Pictures)等公司的很多項(xiàng)目。Joshua也是南加州大學(xué)(USC)的兼職講師,講授多人游戲編程和游戲引擎開發(fā)。
Sanjay Madhav是南加州大學(xué)(USC)的gao級(jí)講師,講授游戲編程、游戲引擎、數(shù)據(jù)結(jié)構(gòu)和編譯器知識(shí)。他在藝電(Electronic Arts)、Neversoft和Pandemic Studio做過開發(fā)zhe,涉足的游戲有《榮譽(yù)勛章:血戰(zhàn)太平洋》(Medal of Honor: Pacific Assault)、《托尼霍克極限滑板8》(Tony Hawks Project 8)、《指環(huán)王:征服》(Lord of the Rings: Conquest)和《破壞者》(The Saboteur)等。他也是《Game Programming Algorithms and Techniques》的作者之一。
第1章 網(wǎng)絡(luò)游戲概述1
1.1 多人游戲的簡(jiǎn)要?dú)v程1
1.1.1 本地多人游戲1
1.1.2 早期網(wǎng)絡(luò)多人游戲1
1.1.3 多用戶網(wǎng)絡(luò)游戲2
1.1.4 局域網(wǎng)游戲3
1.1.5 在線游戲3
1.1.6 大規(guī)模多人在線游戲4
1.1.7 移動(dòng)網(wǎng)絡(luò)游戲4
1.2 星際圍攻:部落5
1.2.1 平臺(tái)數(shù)據(jù)包模塊7
1.2.2 連接管理器7
1.2.3 流管理器8
1.2.4 事件管理器8
1.2.5 ghost管理器8
1.2.6 移動(dòng)管理器9
1.2.7 其他系統(tǒng)9
1.3 帝國(guó)時(shí)代10
1.3.1 輪班計(jì)時(shí)器11
1.3.2 同步12
1.4 總結(jié)13
1.5 復(fù)習(xí)題13
1.6 延伸的閱讀資料14
第2章 互聯(lián)網(wǎng)15
2.1 起源:分組交換15
2.2 TCP/IP模型17
2.3 物理層18
2.4 鏈路層18
2.5 網(wǎng)絡(luò)層22
2.5.1 IPv423
2.5.2 IPv636
2.6 傳輸層37
2.6.1 UDP38
2.6.2 TCP39
2.7 應(yīng)用層48
2.7.1 DHCP49
2.7.2 DNS49
2.8 NAT50
2.9 總結(jié)56
2.10 復(fù)習(xí)題57
2.11 延伸的閱讀資料58
第3章 伯克利套接字61
3.1 創(chuàng)建Socket61
3.2 API操作系統(tǒng)差異63
3.3 socket地址66
3.3.1 類型安全68
3.3.2 用字符串初始化sockaddr70
3.3.3 綁定socket73
3.4 UDP Socket74
3.5 TCP Socket79
3.5.1 通過連接的socket實(shí)現(xiàn)發(fā)送和接收80
3.5.2 類型安全的TCP Socket82
3.6 阻塞和非阻塞I/O84
3.6.1 多線程85
3.6.2 非阻塞I/O86
3.6.3 Select88
3.7 其他Socket選項(xiàng)92
3.8 總結(jié)94
3.9 復(fù)習(xí)題94
3.10 延伸的閱讀資料95
第4章 對(duì)象序列化97
4.1 序列化的需求97
4.2 流100
4.2.1 內(nèi)存流101
4.2.2 字節(jié)存儲(chǔ)次序的兼容性105
4.2.3 比特流109
4.3 引用數(shù)據(jù)115
4.3.1 內(nèi)聯(lián)或嵌入116
4.3.2 鏈接117
4.4 壓縮119
4.4.1 稀疏數(shù)組壓縮120
4.4.2 熵編碼121
4.4.3 定點(diǎn)123
4.4.4 幾何壓縮125
4.5 可維護(hù)性127
4.5.1 抽象序列化方向127
4.5.2 數(shù)據(jù)驅(qū)動(dòng)的序列化129
4.6 總結(jié)132
4.7 復(fù)習(xí)題133
4.8 延伸的閱讀資料134
第5章 對(duì)象復(fù)制135
5.1 世界狀態(tài)135
5.2 復(fù)制對(duì)象135
5.2.1 對(duì)象創(chuàng)建注冊(cè)表139
5.2.2 一個(gè)數(shù)據(jù)包中的多個(gè)對(duì)象143
5.3 樸素的世界狀態(tài)復(fù)制方法144
5.4 世界狀態(tài)中的變化148
5.5 RPC作為序列化對(duì)象155
5.6 自定義解決方案158
5.7 總結(jié)159
5.8 復(fù)習(xí)題160
5.9 延伸的閱讀資料160
第6章 網(wǎng)絡(luò)拓?fù)浜陀螒虬咐?61
6.1 網(wǎng)絡(luò)拓?fù)?61
6.1.1 客戶端-服務(wù)器161
6.1.2 對(duì)等網(wǎng)絡(luò)163
6.2 客戶端-服務(wù)器的實(shí)現(xiàn)165
6.2.1 服務(wù)器和客戶端的代碼分離166
6.2.2 網(wǎng)絡(luò)管理器和歡迎新客戶端167
6.2.3 輸入共享和客戶端代理172
6.3 對(duì)等網(wǎng)絡(luò)的實(shí)現(xiàn)177
6.3.1 歡迎新對(duì)等體和開始游戲179
6.3.2 命令共享和鎖步回合制181
6.3.3 保持同步187
6.4 總結(jié)192
6.5 復(fù)習(xí)題192
6.6 延伸的閱讀資料193
第7章 延遲、抖動(dòng)和可靠性195
7.1 延遲195
7.1.1 非網(wǎng)絡(luò)延遲195
7.1.2 網(wǎng)絡(luò)延遲198
7.2 抖動(dòng)199
7.3 數(shù)據(jù)包丟失201
7.4 可靠性:TCP還是UDP202
7.5 數(shù)據(jù)包傳遞通知204
7.5.1 標(biāo)記傳出的數(shù)據(jù)包205
7.5.2 接收數(shù)據(jù)包并發(fā)送確認(rèn)206
7.5.3 接收確認(rèn)并傳遞狀態(tài)211
7.6 對(duì)象復(fù)制可靠性216
7.7 模擬真實(shí)世界的條件224
7.8 總結(jié)226
7.9 復(fù)習(xí)題227
7.10 延伸的閱讀資料228
第8章 改進(jìn)的延遲處理229
8.1 沉默的客戶終端229
8.2 客戶端插值231
8.3 客戶端預(yù)測(cè)233
8.3.1 航位推測(cè)法236
8.3.2 客戶端移動(dòng)預(yù)測(cè)和重放238
8.3.3 通過技巧和優(yōu)化隱藏延遲243
8.4 服務(wù)器端回退244
8.5 總結(jié)245
8.6 復(fù)習(xí)題246
8.7 延伸的閱讀資料246
第9章 可擴(kuò)展性247
9.1 對(duì)象范圍和相關(guān)性247
9.1.1 靜態(tài)區(qū)域248
9.1.2 使用視錐249
9.1.3 其他可見性技術(shù)250
9.1.4 不可見時(shí)的相關(guān)性252
9.2 服務(wù)器分區(qū)253
9.3 實(shí)例化255
9.4 優(yōu)先級(jí)和頻率255
9.5 總結(jié)256
9.6 復(fù)習(xí)題257
9.7 延伸的閱讀資料257
第10章 安全性259
10.1 數(shù)據(jù)包嗅探259
10.1.1 中間人攻擊259
10.1.2 在主機(jī)上的數(shù)據(jù)包嗅探262
10.2 輸入驗(yàn)證263
10.3 軟件作弊檢測(cè)264
10.3.1 維爾福反作弊系統(tǒng)265
10.3.2 典獄長(zhǎng)反作弊系統(tǒng)266
10.4 保護(hù)服務(wù)器267
10.4.1 分布式拒絕服務(wù)攻擊267
10.4.2 壞數(shù)據(jù)267
10.4.3 時(shí)序攻擊268
10.4.4 入侵269
10.5 總結(jié)270
10.6 復(fù)習(xí)題271
10.7 延伸的閱讀資料271
第11章 真實(shí)世界的引擎273
11.1 虛幻引擎4273
11.1.1 套接字和基本的網(wǎng)絡(luò)體系273
11.1.2 游戲?qū)ο蠛屯負(fù)?74
11.1.3 Actor復(fù)制275
11.1.4 遠(yuǎn)程過程調(diào)用276
11.2 Unity277
11.2.1 傳輸層API278
11.2.2 游戲?qū)ο蠛屯負(fù)?78
11.2.3 生成對(duì)象和復(fù)制279
11.2.4 遠(yuǎn)程過程調(diào)用279
11.2.5 比賽安排280
11.3 總結(jié)280
11.4 復(fù)習(xí)題281
11.5 延伸的閱讀資料281
第12章 玩家服務(wù)283
12.1 選擇一種玩家服務(wù)283
12.2 基本設(shè)置283
12.2.1 初始化、運(yùn)行和關(guān)閉285
12.2.2 用戶ID和名稱286
12.3 游戲大廳和比賽安排287
12.4 網(wǎng)絡(luò)291
12.5 玩家統(tǒng)計(jì)294
12.6 玩家成就299
12.7 排行榜300
12.8 其他服務(wù)302
12.9 總結(jié)303
12.10 復(fù)習(xí)題303
12.11 延伸的閱讀資料304
第13章 云托管專用服務(wù)器305
13.1 托管或不托管305
13.2 行業(yè)工具306
13.2.1 REST307
13.2.2 JSON307
13.2.3 Node.JS308
13.3 概述和術(shù)語308
13.3.1 服務(wù)器游戲?qū)嵗?09
13.3.2 游戲服務(wù)器進(jìn)程309
13.3.3 游戲服務(wù)器310
13.3.4 硬件311
13.4 本地服務(wù)器進(jìn)程管理器311
13.5 虛擬機(jī)管理器318
13.6 總結(jié)327
13.7 復(fù)習(xí)題328
13.8 延伸的閱讀資料328
附錄A 現(xiàn)代C 基礎(chǔ)329