图书介绍
Unity3D网络游戏实战pdf电子书版本下载
- 罗培羽著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111612179
- 出版时间:2019
- 标注页数:416页
- 文件大小:137MB
- 文件页数:434页
- 主题词:游戏程序-程序设计
PDF下载
下载说明
Unity3D网络游戏实战PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 网络游戏的开端:Echo 1
1.1藏在幕后的服务端 1
1.2网络连接的端点: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协议 7
1.3开始网络编程:Echo 8
1.3.1什么是Echo程序 8
1.3.2编写客户端程序 8
1.3.3客户端代码知识点 10
1.3.4完成客户端 11
1.3.5创建服务端程序 12
1.3.6编写服务端程序 14
1.3.7服务端知识点 15
1.3.8测试Echo程序 15
1.4更多API 16
1.5公网和局域网 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状态检测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如何使用网络模块 57
3.4.1委托 57
3.4.2通信协议 59
3.4.3消息队列 60
3.4.4 NetManager类 60
3.4.5测试网络模块 64
3.5进入游戏:Enter协议 66
3.5.1创建角色 67
3.5.2接收Enter协议 70
3.5.3测试Enter协议 70
3.6服务端如何处理消息 72
3.6.1反射机制 72
3.6.2消息处理函数 73
3.6.3事件处理 74
3.6.4玩家数据 76
3.6.5处理Enter协议 77
3.7玩家列表:List协议 77
3.7.1客户端处理 78
3.7.2服务端处理 79
3.7.3测试 79
3.8移动同步:Move协议 80
3.8.1客户端处理 80
3.8.2服务端处理 81
3.8.3测试 81
3.9玩家离开:Leave协议 82
3.9.1客户端处理 82
3.9.2服务端处理 82
3.9.3测试 82
3.10攻击动作:Attack协议 83
3.10.1播放攻击动作 83
3.10.2客户端处理 87
3.10.3服务端处理 88
3.10.4测试 88
3.11攻击伤害:Hit协议 89
3.11.1客户端处理 89
3.11.2服务端处理 91
3.12角色死亡:Die协议 91
3.12.1客户端处理 91
3.12.2测试 92
第4章 正确收发数据流 94
4.1 TCP数据流 94
4.1.1系统缓冲区 94
4.1.2粘包半包现象 96
4.1.3人工重现粘包现象 97
4.2解决粘包问题的方法 97
4.2.1长度信息法 97
4.2.2固定长度法 98
4.2.3结束符号法 98
4.3解决粘包的代码实现 99
4.3.1发送数据 99
4.3.2接收数据 99
4.3.3处理数据 101
4.3.4完整的示例 104
4.3.5测试程序 106
4.4大端小端问题 109
4.4.1为什么会有大端小端之分 110
4.4.2使用Reverse()兼容大小端编码 111
4.4.3手动还原数值 111
4.5完整发送数据 112
4.5.1不完整发送示例 113
4.5.2如何解决发送不完整问题 113
4.5.3 ByteArray和Queue 117
4.5.4解决线程冲突 120
4.5.5为什么要使用队列 121
4.6高效的接收数据 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网络层 135
5.1.4网络接口 135
5.2数据传输流程 136
5.2.1 TCP连接的建立 136
5.2.2 TCP的数据传输 137
5.2.3 TCP连接的终止 138
5.3常用TCP参数 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章 通用客户端网络模块 148
6.1网络模块设计 148
6.1.1对外接口 148
6.1.2内部设计 149
6.2网络事件 150
6.2.1事件类型 151
6.2.2监听列表 151
6.2.3分发事件 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协议 158
6.5.1为什么会有协议类 158
6.5.2使用 JsonUtility 159
6.5.3协议格式 160
6.5.4协议文件 161
6.5.5协议体的编码解码 162
6.5.6协议名的编码解码 163
6.6发送数据 165
6.6.1 Send 165
6.6.2 SendCallback 166
6.6.3测试 167
6.7消息事件 168
6.8接收数据 170
6.8.1新的成员 171
6.8.2 ConnectCallback 171
6.8.3 ReceiveCallback 172
6.8.4 OnReceiveData 172
6.8.5 Update 174
6.8.6测试 175
6.9心跳机制 176
6.9.1 PING和PONG协议 176
6.9.2成员变量 177
6.9.3发送PING协议 178
6.9.4监听PONG协议 178
6.9.5测试 179
6.10 Protobuf协议 179
6.10.1什么是Protobuf 179
6.10.2编写proto文件 180
6.10.3生成协议类 181
6.10.4导入protobuf-net.dll 183
6.10.5编码解码 183
第7章 通用服务端框架 186
7.1服务端架构 187
7.1.1总体架构 187
7.1.2模块划分 187
7.1.3游戏流程 188
7.2 Json编码解码 189
7.2.1添加协议文件 189
7.2.2引用System.web.Extensions 190
7.2.3修改MsgBase类 191
7.2.4测试 192
7.3网络模块 193
7.3.1整体结构 193
7.3.2 ClientState 194
7.3.3开启监听和多路复用 194
7.3.4处理监听消息 196
7.3.5处理客户端消息 197
7.3.6关闭连接 198
7.3.7处理协议 199
7.3.8Timer 200
7.3.9发送协议 201
7.3.10测试 202
7.4心跳机制 204
7.4.1 lastPingTime 204
7.4.2时间戳 204
7.4.3回应MsgPing协议 205
7.4.4超时处理 205
7.4.5测试程序 206
7.5玩家的数据结构 206
7.5.1完整的ClientState 206
7.5.2 PlayerData 208
7.5.3 Player 208
7.5.4 PlayerManager 209
7.6配置MySQL数据库 211
7.6.1安装并启动MySQL数据库 211
7.6.2安装Navicat for MySQL 213
7.6.3配置数据表 214
7.6.4 安装connector 215
7.6.5 MySQL基础知识 216
7.7数据库模块 217
7.7.1连接数据库 218
7.7.2防止SQL注入 220
7.7.3IsAccountExist 220
7.7.4 Register 221
7.7.5 CreatePlayer 223
7.7.6 CheckPassword 224
7.7.7 GetPlayerData 225
7.7.8 UpdatePlayerData 226
7.8登录注册功能 226
7.8.1注册登录协议 227
7.8.2记事本协议 228
7.8.3注册功能 229
7.8.4登录功能 229
7.8.5退出功能 231
7.8.6 获取文本功能 231
7.8.7 保存文本功能 231
7.8.8客户端界面 232
7.8.9 客户端监听 233
7.8.10客户端注册功能 235
7.8.11客户端登录功能 235
7.8.12客户端记事本功能 236
7.8.13测试 236
第8章 完整大项目《坦克大战》 239
8.1《坦克大战》游戏功能 239
8.1.1登录注册 239
8.1.2房间系统 240
8.1.3战斗系统 241
8.2坦克模型 242
8.2.1导入模型 242
8.2.2模型结构 243
8.3资源管理器 245
8.3.1设计构想 245
8.3.2代码实现 245
8.3.3测试 246
8.4坦克类 246
8.4.1设计构想 246
8.4.2代码实现 246
8.4.3测试 247
8.5行走控制 248
8.5.1速度参数 249
8.5.2移动控制 249
8.5.3测试 250
8.5.4走在地形上 251
8.6坦克爬坡 253
8.6.1 Unity的物理系统 253
8.6.2添加物理组件 253
8.6.3测试 254
8.7相机跟随 255
8.7.1功能需求 255
8.7.2数学原理 255
8.7.3编写代码 257
8.7.4测试 258
8.8旋转炮塔 260
8.8.1炮塔元素 260
8.8.2旋转控制 261
8.8.3测试 262
8.9发射炮弹 262
8.9.1制作炮弹预设 262
8.9.2制作爆炸效果 263
8.9.3炮弹组件 264
8.9.4坦克开炮 266
8.9.5测试 268
8.10摧毁敌人 269
8.10.1坦克的生命值 269
8.10.2焚烧特效 270
8.10.3坦克被击中处理 271
8.10.4炮弹的攻击处理 272
8.10.5测试 272
第9章UI界面模块 274
9.1界面模块的设计 274
9.1.1简单的界面调用 274
9.1.2通用界面模块 275
9.2场景结构 277
9.3面板基类BasePanel 278
9.3.1设计要点 278
9.3.2代码实现 278
9.3.3知识点 279
9.4界面管理器PanelManager 281
9.4.1层级管理 281
9.4.2打开面板 282
9.4.3关闭面板 284
9.5登录面板LoginPanel 284
9.5.1导入资源 284
9.5.2 UI组件 286
9.5.3制作面板预设 286
9.5.4登录面板类 289
9.5.5打开面板 289
9.5.6引用UI组件 290
9.5.7网络监听 291
9.5.8登录和注册按钮 293
9.5.9 收到登录协议 293
9.6注册面板RegisterPanel 294
9.6.1制作面板预设 294
9.6.2注册面板类 296
9.6.3按钮事件 298
9.6.4收到注册协议 299
9.7提示面板TipPanel 300
9.7.1制作面板预设 300
9.7.2提示面板类 301
9.7.3测试面板 302
9.8游戏入口GameMain 303
9.8.1设计要点 303
9.8.2代码实现 304
9.8.3缓存用户名 305
9.9功能测试 306
9.9.1登录 306
9.9.2注册 307
9.9.3下线 309
第10章 游戏大厅和房间 310
10.1列表面板预设 311
10.1.1整体结构 311
10.1.2个人信息栏 312
10.1.3操作栏 312
10.1.4房间列表栏 313
10.1.5 Scroll View 315
10.1.6列表项Room 316
10.2房间面板预设 318
10.2.1整体结构 318
10.2.2 列表栏 319
10.2.3列表项 player 320
10.2.4控制栏 322
10.3协议设计 322
10.3.1查询战绩MsgGetAchieve协议 323
10.3.2查询 房间列表MsgGetRoom-List协议 323
10.3.3创建房间 MsgCreateRoom协议 324
10.3.4进入房间 MsgEnterRoom协议 324
10.3.5查询房间信息 MsgGetRoom-Info协议 324
10.3.6退出房间 MsgLeaveRoom协议 325
10.3.7开始战斗MsgStartBattle协议 325
10.4列表面板逻辑 326
10.4.1面板类 326
10.4.2获取部件 326
10.4.3网络监听 328
10.4.4刷新战绩 329
10.4.5刷新房间列表 329
10.4.6 加入房间 330
10.4.7创建房间 331
10.4.8刷新按钮 332
10.5房间面板逻辑 332
10.5.1面板类 332
10.5.2获取部件 333
10.5.3网络监听 334
10.5.4刷新玩家列表 334
10.5.5退出房间 336
10.5.6开始战斗 336
10.6打开列表面板 337
10.7服务端玩家数据 337
10.7.1存储数据 338
10.7.2临时数据 338
10.8服务端房间类 339
10.8.1管理器和房间类的关系 339
10.8.2房间类的设计要点 340
10.8.3添加玩家 341
10.8.4选择阵营 343
10.8.5删除玩家 343
10.8.6选择新房主 345
10.8.7广播消息 345
10.8.8生成房间信息 345
10.9服务端房间管理器 347
10.9.1数据结构 347
10.9.2获取房间 347
10.9.3添加房间 348
10.9.4删除房间 348
10.9.5生成列表信息 348
10.10服务端消息处理 349
10.10.1查询战绩MsgGet-Achieve 350
10.10.2查询房间列表MsgGetRoom-List 350
10.10.3创建房间MsgCreate-Room 351
10.10.4进入房间MsgEnterRoom 351
10.10.5查询房间信息 MsgGet-RoomInfo 352
10.10.6离开房间 MsgLeave-Room 352
10.11玩家事件处理 353
10.12测试 354
第11章 战斗和胜负判定 358
11.1协议设计 358
11.1.1进入战斗MsgEnterBattle 359
11.1.2战斗结果MsgBattleResult 359
11.1.3退出战斗MsgLeaveBattle 360
11.2坦克 360
11.2.1不同阵营的坦克预设 360
11.2.2战斗模块 361
11.2.3同步坦克SyncTank 362
11.2.4坦克的属性 362
11.3战斗管理器 363
11.3.1设计要点 363
11.3.2管理器类 363
11.3.3坦克管理 364
11.3.4重置战场 365
11.3.5开始战斗 366
11.3.6产生坦克 367
11.3.7战斗结束 369
11.3.8玩家离开 369
11.4战斗结果面板 369
11.4.1面板预设 369
11.4.2面板逻辑 371
11.5服务端开启战斗 373
11.5.1能否开始战斗 373
11.5.2定义出生点 373
11.5.3坦克信息 376
11.5.4开启战斗 377
11.5.5消息处理 377
11.6服务端胜负判断 378
11.6.1是否死亡 379
11.6.2胜负决断函数 379
11.6.3定时器 380
11.6.4 Room::Update 380
11.7服务端断线处理 381
11.8测试 382
11.8.1进入战场 382
11.8.2离开战场 384
第12章 同步战斗信息 386
12.1同步理论 387
12.1.1同步的过程 387
12.1.2同步的难题 387
12.2状态同步 389
12.2.1直接状态同步 389
12.2.2跟随算法 390
12.2.3预测算法 390
12.3帧同步 391
12.3.1指令同步 391
12.3.2从Update说起 392
12.3.3什么是同步帧 393
12.3.4指令 394
12.3.5指令的执行 394
12.4协议设计 395
12.4.1位置同步MsgSyncTank 396
12.4.2开火MsgFire 396
12.4.3击中MsgHit 397
12.5发送同步信息 397
12.5.1发送位置信息 397
12.5.2发送开火信息 398
12.5.3发送击中信息 399
12.6处理同步信息 400
12.6.1协议监听 400
12.6.2 OnMsgSyncTank 401
12.6.3 OnMsgFire 401
12.6.4 OnMsgHit 402
12.7同步坦克SyncTank 402
12.7.1预测算法的成员变量 402
12.7.2移动到预测位置 403
12.7.3 初始化 404
12.7.4更新预测位置 405
12.7.5炮弹同步 406
12.8服务端消息处理 406
12.8.1位置同步MsgSyncTank 407
12.8.2 开火MsgFire 408
12.8.3 击中MsgHit 409
12.8.4调试 410
12.9完善细节 412
12.9.1滚动的轮子和履带 412
12.9.2灵活操作 413
12.9.3准心 413
12.9.4 自动瞄准 414
12.9.5界面和场景优化 414
12.9.6 战斗面 板 415
12.9.7击杀提示 416
12.10结语 416