W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
羅培羽 著
適讀人群 :游戲開發(fā)愛好者:想要自己制作一款游戲的人,作為自學參考書。游戲開發(fā)崗位求職者:想要謀求游戲公司開發(fā)崗位的人,作為自學參考書。職場新人:游戲公司程序員,作為自學參
詳解Socket編程,指導搭建穩(wěn)健的網(wǎng)絡框架;解析網(wǎng)游中常見的卡頓、頻繁掉線等問題;探求適宜的實時同步算法。
包含完整的多人對戰(zhàn)游戲案例,揭秘登錄注冊、游戲大廳、戰(zhàn)斗系統(tǒng)等模塊的實現(xiàn)細節(jié)。
本書針對第1版進行改版,將“單機游戲”融入到網(wǎng)絡部分的實例中,在講解網(wǎng)絡通信原理的同時,給出各個知識點的案例,并開發(fā)客戶端的網(wǎng)絡模塊和服務端程序框架。
然后將一部分的坦克游戲改造成聯(lián)網(wǎng)對戰(zhàn)的多人游戲。
本書基于Unity3D新版本編寫,書中例子為商業(yè)游戲簡化版本,讀者可以從中了解商業(yè)游戲的設計思路和實現(xiàn)方法。
讀者看完本書,初步擁有開發(fā)一款完整網(wǎng)絡游戲的能力。
想要制作當今熱門的網(wǎng)絡游戲,特別是開發(fā)手機網(wǎng)絡游戲,或者想要到游戲公司求職,都需要深入了解網(wǎng)絡游戲的開發(fā)技術。 《Unity3D網(wǎng)絡游戲?qū)崙?zhàn)(第2版)》分為三大部分,揭示網(wǎng)絡游戲開發(fā)的細節(jié)?! 〉?部分“扎基礎”(第1-5章) 介紹TCP網(wǎng)絡游戲開發(fā)的必備知識。包括TCP異步連接、多路復用技術;處理粘包分包的方法;設置正確的網(wǎng)絡參數(shù)、完整的發(fā)送數(shù)據(jù)、安全的關閉連接等方法。第3章介紹了一款簡單網(wǎng)絡游戲開發(fā)的全過程?! 〉诙糠帧按羁蚣堋保ǖ?章和第7章) 介紹了商業(yè)級客戶端網(wǎng)絡框架的實現(xiàn)方法。這套框架具有較高的通用性,解決了網(wǎng)絡游戲開發(fā)中常遇到的問題,且達到極點的性能要求,可以運用在多種游戲上。書中還實現(xiàn)了一套C#服務端框架,使用select多路復用,做到底層與邏輯分離,具有消息分發(fā)、事件處理等模塊?! 〉谌糠帧白鲇螒颉保ǖ?-12章) 通過一個完整的實例,講解網(wǎng)絡游戲的設計思路。包括游戲?qū)嶓w的類設計、怎樣組織代碼、怎樣實現(xiàn)游戲大廳(房間系統(tǒng))、怎樣實現(xiàn)實體的同步。這一部分會使用第二部分搭好的框架,逐步做出完整的游戲。
羅培羽,正在創(chuàng)作好玩游戲的程序員,目前任職于廣州四三九九公司。 在四三九九公司,參與《卡布西游》《卡布仙蹤》《卡布魔鏡》《坦克射擊》《海陸大戰(zhàn)》等多個項目研發(fā)工作;作為獨立游戲開發(fā)者,主導《仙劍5前傳之心愿》《蝕夢》等項目研發(fā),擁有豐富的實戰(zhàn)經(jīng)驗?! ∽?009年發(fā)布第一部視頻教程《教你用VB制作RPG游戲》以來,先后發(fā)布了《教你制作3DRPG游戲》《手把手教你用C#制作RPG游戲》等教程,并出版了《Unity3D網(wǎng)絡游戲?qū)崙?zhàn)(第1版)》一書;作為游戲蠻牛專欄作家,撰寫數(shù)十篇技術文章。 目前關注手機游戲、AI技術等領域;并以第三方視角記錄普通開發(fā)者的心路歷程。
★本書詳細介紹了TCP/IP網(wǎng)絡協(xié)議底層,網(wǎng)絡數(shù)據(jù)的發(fā)送與接收原理。書中包含大量的示例教程,結合Unity3D引擎通過實戰(zhàn)的項目從無到有一點點向讀者介紹網(wǎng)絡游戲是如何跑起來的,如果你對網(wǎng)絡感興趣,這是一本不容錯過的好書?! 猆nity全國UUG意見領袖UVP價值專家宣雨松MOMO ★在網(wǎng)絡游戲爆發(fā)的今天,學習網(wǎng)絡編程變得越來越重要。本書充分考慮初學者的學習路線,配以大量實例和圖片進行講解,語言通俗易懂,是初學者學習網(wǎng)絡編程難得的中文資料。 ——《Unity Shader入門精要》作者馮樂樂
前言
第1章 網(wǎng)絡游戲的開端:Echo 1
1.1 藏在幕后的服務端 1
1.2 網(wǎng)絡連接的端點:Socket 3
1.2.1 Socket 3
1.2.2 IP地址 3
1.2.3 端口 4
1.2.4 Socket通信的流程 6
1.2.5 TCP和UDP協(xié)議 7
1.3 開始網(wǎng)絡編程:Echo 8
1.3.1 什么是Echo程序 8
1.3.2 編寫客戶端程序 8
1.3.3 客戶端代碼知識點 10
1.3.4 完成客戶端 11
1.3.5 創(chuàng)建服務端程序 12
1.3.6 編寫服務端程序 14
1.3.7 服務端知識點 15
1.3.8 測試Echo程序 15
1.4 更多API 16
1.5 公網(wǎng)和局域網(wǎng) 17
第2章 分身有術:異步和多路復用 19
2.1 什么樣的代碼是異步代碼 19
2.2 異步客戶端 20
2.2.1 異步Connect 21
2.2.2 Show Me The Code 22
2.2.3 異步Receive 23
2.2.4 異步Send 26
2.3 異步服務端 29
2.3.1 管理客戶端 29
2.3.2 異步Accept 30
2.3.3 程序結構 31
2.3.4 代碼展示 31
2.4 實踐:做個聊天室 35
2.4.1 服務端 35
2.4.2 客戶端 35
2.4.3 測試 36
2.5 狀態(tài)檢測Poll 36
2.5.1 什么是Poll 36
2.5.2 Poll客戶端 37
2.5.3 Poll服務端 38
2.6 多路復用Select 41
2.6.1 什么是多路復用 41
2.6.2 Select服務端 42
2.6.3 Select客戶端 44
第3章 實踐出真知:大亂斗游戲 45
3.1 什么是大亂斗游戲 45
3.2 搭建場景 46
3.3 角色類Human 49
3.3.1 類結構設計 49
3.3.2 BaseHuman 49
3.3.3 角色預設 51
3.3.4 CtrlHuman 54
3.3.5 SyncHuman 57
3.4 如何使用網(wǎng)絡模塊 57
3.4.1 委托 57
3.4.2 通信協(xié)議 59
3.4.3 消息隊列 60
3.4.4 NetManager類 60
3.4.5 測試網(wǎng)絡模塊 64
3.5 進入游戲:Enter協(xié)議 66
3.5.1 創(chuàng)建角色 67
3.5.2 接收Enter協(xié)議 70
3.5.3 測試Enter協(xié)議 70
3.6 服務端如何處理消息 72
3.6.1 反射機制 72
3.6.2 消息處理函數(shù) 73
3.6.3 事件處理 74
3.6.4 玩家數(shù)據(jù) 76
3.6.5 處理Enter協(xié)議 77
3.7 玩家列表:List協(xié)議 77
3.7.1 客戶端處理 78
3.7.2 服務端處理 79
3.7.3 測試 79
3.8 移動同步:Move協(xié)議 80
3.8.1 客戶端處理 80
3.8.2 服務端處理 81
3.8.3 測試 81
3.9 玩家離開:Leave協(xié)議 82
3.9.1 客戶端處理 82
3.9.2 服務端處理 82
3.9.3 測試 82
3.10 攻擊動作:Attack協(xié)議 83
3.10.1 播放攻擊動作 83
3.10.2 客戶端處理 87
3.10.3 服務端處理 88
3.10.4 測試 88
3.11 攻擊傷害:Hit協(xié)議 89
3.11.1 客戶端處理 89
3.11.2 服務端處理 91
3.12 角色死亡:Die協(xié)議 91
3.12.1 客戶端處理 91
3.12.2 測試 92
第4章 正確收發(fā)數(shù)據(jù)流 94
4.1 TCP數(shù)據(jù)流 94
4.1.1 系統(tǒng)緩沖區(qū) 94
4.1.2 粘包半包現(xiàn)象 96
4.1.3 人工重現(xiàn)粘包現(xiàn)象 97
4.2 解決粘包問題的方法 97
4.2.1 長度信息法 97
4.2.2 固定長度法 98
4.2.3 結束符號法 98
4.3 解決粘包的代碼實現(xiàn) 99
4.3.1 發(fā)送數(shù)據(jù) 99
4.3.2 接收數(shù)據(jù) 99
4.3.3 處理數(shù)據(jù) 101
4.3.4 完整的示例 104
4.3.5 測試程序 106
4.4 大端小端問題 109
4.4.1 為什么會有大端小端之分 110
4.4.2 使用Reverse()兼容大小端編碼 111
4.4.3 手動還原數(shù)值 111
4.5 完整發(fā)送數(shù)據(jù) 112
4.5.1 不完整發(fā)送示例 113
4.5.2 如何解決發(fā)送不完整問題 113
4.5.3 ByteArray和Queue 117
4.5.4 解決線程沖突 120
4.5.5 為什么要使用隊列 121
4.6 高效的接收數(shù)據(jù) 122
4.6.1 不足之處 122
4.6.2 完整的ByteArray 123
4.6.3 將ByteArray應用到異步程序 129
第5章 深入了解TCP,解決暗藏問題 133
5.1 從TCP到銅線 133
5.1.1 應用層 133
5.1.2 傳輸層 134
5.1.3 網(wǎng)絡層 135
5.1.4 網(wǎng)絡接口 135
5.2 數(shù)據(jù)傳輸流程 136
5.2.1 TCP連接的建立 136
5.2.2 TCP的數(shù)據(jù)傳輸 137
5.2.3 TCP連接的終止 138
5.3 常用TCP參數(shù) 138
5.3.1 ReceiveBufferSize 138
5.3.2 SendBufferSize 139
5.3.3 NoDelay 139
5.3.4 TTL 140
5.3.5 ReuseAddress 141
5.3.6 LingerState 142
5.4 Close的恰當時機 144
5.5 異常處理 146
5.6 心跳機制 147
第6章 通用客戶端網(wǎng)絡模塊 148
6.1 網(wǎng)絡模塊設計 148
6.1.1 對外接口 148
6.1.2 內(nèi)部設計 149
6.2 網(wǎng)絡事件 150
6.2.1 事件類型 151
6.2.2 監(jiān)聽列表 151
6.2.3 分發(fā)事件 152
6.3 連接服務端 152
6.3.1 Connect 152
6.3.2 ConnectCallback 154
6.3.3 測試程序 155
6.4 關閉連接 156
6.4.1 isClosing? 157
6.4.2 Close 157
6.4.3 測試 158
6.5 Json協(xié)議 158
6.5.1 為什么會有協(xié)議類 158
6.5.2 使用JsonUtility 159
6.5.3 協(xié)議格式 160
6.5.4 協(xié)議文件 161
6.5.5 協(xié)議體的編碼解碼 162
6.5.6 協(xié)議名的編碼解碼 163
6.6 發(fā)送數(shù)據(jù) 165
6.6.1 Send 165
6.6.2 SendCallback 166
6.6.3 測試 167
6.7 消息
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: