Unity 3D网络游戏实战 PDF_游戏开发教程

资源名称:Unity 3D网络游戏实战 PDF

内容简介:

深入讲解Unity3D网络游戏开发的原理和实现细节,全面剖析游戏网络框架设计。 ·实战性强,以多人坦克对战游戏案例贯穿全书,详述网络游戏的开发过程,帮助读者掌握商业游戏的设计思路和实现方法。

作者简介:

罗培羽,广州四三九九信息科技有限公司项目负责人、主程序,参与《卡布魔镜》《卡布西游》《卡布仙踪》等多款游戏的开发工作。对游戏程序开发有着深入了解,对游戏项目的组织和管理有着一定的实战经验。目前关注休闲手机游戏、虚拟现实和现实增强、独立游戏等领域。

曾组织团队开发3D仙剑同人游戏《仙剑5前传之心愿》,该项目为目前仅有的一款成功的3D仙剑同人,引起仙侠游戏圈的普遍关注。发布后获得游侠网单机RPG类下载排行第四名,仙剑官方也给予高度评价。

自2009年开始,发布《教你用vb制作rpg游戏》、《教你制作3DRPG游戏》、《掌握X3D》、《不会电脑也汇编》等大量教程。2004年出版专著《手把手教你用c#制作rpg游戏》,该书为《十二五全国高校数字游戏设计精品教材》系列之一。

资源目录:

前言

第1章 掌握Unity3D基本元素 / 1

1.1 最最简单的游戏 / 2

1.1.1 Unity3D的界面构成 / 2

1.1.2 在场景中创建立方体 / 3

1.1.3 编写第一个程序 / 4

1.1.4 测试游戏 / 6

1.1.5 总结 / 6

1.2 导入资源 / 6

1.2.1 从本地导入素材 / 7

1.2.2 从本地导入包文件 / 7

1.2.3 从AssetStore导入 / 8

1.3 山体系统 / 10

1.4 灯光 / 12

1.5 材质 / 14

1.5.1 什么是材质 / 14

1.5.2 如何创建材质 / 15

1.5.3 Mesh Renderer组件 / 16

1.5.4 着色器 / 16

1.6 预设 / 19

1.6.1 制作预设 / 19

1.6.2 预设的实例化 / 19

1.6.3 使用预设的例子 / 20

1.7 声音 / 22

1.7.1 音源 / 22

1.7.2 接收器 / 23

1.7.3 简单播放器 / 23

1.8 GUI / 24

1.8.1 GUI绘图基础 / 24

1.8.2 编写HelloWorld程序 / 25

1.8.3 绘制登录框 / 25

1.9 场景 / 26

1.9.1 创建场景 / 27

1.9.2 场景切换 / 27

1.10 导出游戏 / 28

第2章 坦克控制单元 / 31

2.1 导入坦克模型 / 31

2.1.1 导入模型 / 31

2.1.2 调整尺寸 / 32

2.1.3 材质和贴图 / 33

2.2 行走控制 / 34

2.2.1 基础知识 / 35

2.2.2 上下左右移动 / 37

2.2.3 转向和前后移动 / 38

2.3 相机跟随 / 40

2.3.1 数学原理 / 41

2.3.2 跟随算法 / 42

2.3.3 设置跟随目标 / 46

2.3.4 横向旋转相机 / 47

2.3.5 纵向旋转相机 / 50

2.3.6 滚轮调节距离 / 51

2.4 旋转炮塔 / 52

2.4.1 坦克的层次结构 / 52

2.4.2 炮塔 / 56

2.4.3 炮管 / 58

2.5 车辆行驶 / 61

2.5.1 Unity3D的物理系统 / 62

2.5.2 车轮碰撞器 / 65

2.5.3 控制车辆 / 69

2.5.4 制动(刹车) / 73

2.6 轮子和履带 / 74

2.6.1 轮子转动 / 74

2.6.2 履带滚动 / 77

2.7 音效 / 79

第3章 火炮与敌人 / 82

3.1 发射炮弹 / 82

3.1.1 制作炮弹 / 82

3.1.2 制作爆炸效果 / 83

3.1.3 炮弹轨迹 / 84

3.1.4 坦克开炮 / 86

3.2 摧毁敌人 / 88

3.2.1 坦克的控制类型 / 88

3.2.2 坦克的生命值 / 89

3.2.3 焚烧特效 / 89

3.2.4 坦克被击中后的处理 / 90

3.2.5 炮弹的攻击处理 / 92

3.3 准心 / 94

3.3.1 概念和原理 / 94

3.3.2 计算目标射击位置 / 96

3.3.3 计算实际射击位置 / 101

3.3.4 绘制准心 / 103

3.4 绘制生命条 / 104

3.4.1 生命条素材 / 105

3.4.2 绘制生命条 / 105

3.5 击杀提示 / 107

3.5.1 谁发射了炮弹 / 107

3.5.2 谁被击中 / 107

3.5.3 显示击杀提示 / 108

3.6 炮弹的音效 / 110

3.6.1 发射音效 / 110

3.6.2 爆炸音效 / 111

第4章 人工智能 / 113

4.1 基于有限状态机的人工智能 / 113

4.1.1 有限状态机 / 113

4.1.2 分层有限状态机 / 115

4.2 程序结构 / 116

4.2.1 AI类的结构 / 116

4.2.2 在Tank中调用 / 118

4.3 搜寻目标 / 119

4.3.1 搜寻规则 / 119

4.3.2 坦克标签 / 119

4.3.3 主动搜寻算法 / 120

4.3.4 被动搜寻算法 / 122

4.3.5 调试 / 123

4.4 向敌人开炮 / 124

4.4.1 电脑控制的方式 / 124

4.4.2 炮塔炮管的目标角度 / 125

4.4.3 调试程序 / 125

4.4.4 开炮 / 126

4.5 走向目的地 / 128

4.5.1 路点 / 128

4.5.2 路径 / 128

4.5.3 根据场景标志物生成路径 / 130

4.5.4 给AI指定路径 / 131

4.5.5 操控坦克 / 132

4.5.6 调试程序 / 136

4.6 使用NavMesh计算路径 / 137

4.6.1 NavMesh的原理 / 137

4.6.2 生成导航图 / 137

4.6.3 生成路径 / 140

4.7 行为决策 / 143

4.7.1 巡逻状态 / 144

4.7.2 进攻状态 / 145

4.7.3 调试 / 146

4.8 战场系统 / 147

4.8.1 单例模式 / 147

4.8.2 BattleTank / 148

4.8.3 战场逻辑 / 148

4.8.4 敌我区分 / 150

4.8.5 出生点 / 151

4.8.6 坦克预设 / 152

4.8.7 开启一场两军对峙的战斗 / 152

4.8.8 战场结算 / 154

4.8.9 开始战斗 / 155

第5章 代码分离的界面系统 / 157

5.1 Unity UI系统 / 157

5.1.1 创建UI部件 / 158

5.1.2 Canvas画布 / 159

5.1.3 EventSystem / 161

5.1.4 RectTransform / 162

5.1.5 其他UGUI组件 / 164

5.1.6 事件触发 / 165

5.1.7 简单的面板调用 / 165

5.2 制作界面素材 / 167

5.2.1 标题面板和信息面板 / 167

5.2.2 制作预设 / 168

5.3 面板基类PanelBase / 168

5.3.1 代码与资源分离的优势 / 168

5.3.2 面板系统的设计 / 169

5.3.3 面板基类的设计要点 / 169

5.3.4 面板基类的实现 / 170

5.4 面板管理器PanelMgr / 172

5.4.1 层级管理 / 173

5.4.2 打开面板OpenPanel / 174

5.4.3 关闭面板ClosePanel / 176

5.5 面板逻辑 / 176

5.5.1 标题面板TitlePanel / 176

5.5.2 信息面板InfoPanel / 178

5.6 调用界面系统 / 179

5.6.1 界面系统的资源 / 179

5.6.2 界面系统的调用 / 179

5.7 胜负面板 / 181

5.7.1 面板素材 / 181

5.7.2 面板逻辑 / 181

5.7.3 面板调用 / 183

5.8 设置面板 / 184

5.8.1 面板素材 / 184

5.8.2 面板逻辑 / 185

5.8.3 面板调用 / 186

第6章 网络基础 / 188

6.1 七层网络模型 / 189

6.1.1 应用层 / 190

6.1.2 传输层 / 190

6.1.3 网络层 / 190

6.1.4 数据链路层 / 191

6.1.5 物理层 / 191

6.2 IP与端口 / 192

6.2.1 IP地址 / 192

6.2.2 端口 / 192

6.2.3 C#中的相关类型 / 193

6.3 TCP协议 / 193

6.3.1 TCP连接的建立 / 193

6.3.2 TCP的数据传输 / 195

6.3.3 TCP连接的终止 / 195

6.4 Socket套接字 / 196

6.4.1 Socket连接的流程 / 196

6.4.2 Socket类 / 196

6.5 同步Socket程序 / 198

6.5.1 新建控制台程序 / 198

6.5.2 编写服务端程序 / 199

6.5.3 客户端界面 / 202

6.5.4 客户端程序 / 203

6.6 异步Socket程序 / 205

6.6.1 BeginAccept / 205

6.6.2 BeginReceive / 205

6.6.3 Conn(state) / 206

6.6.4 服务端程序(主体结构) / 208

6.6.5 服务端程序(Accept回调) / 210

6.6.6 服务端程序(接收回调) / 211

6.6.7 开启服务端 / 212

6.6.8 客户端界面 / 212

6.6.9 客户端程序 / 213

6.6.10 调试程序 / 215

6.7 MySQL / 216

6.7.1 配置MySQL环境 / 216

6.7.2 建立MySQL数据库 / 218

6.7.3 MySQL基础知识 / 218

6.7.4 MySQL留言板服务端程序 / 220

6.7.5 调试程序 / 222

6.8 类的序列化 / 223

6.9 定时器 / 225

6.10 线程互斥 / 226

6.11 通信协议和消息列表 / 228

6.11.1 通信协议 / 228

6.11.2 服务端程序 / 229

6.11.3 消息列表 / 229

6.11.4 客户端场景 / 230

6.11.5 客户端程序 / 231

6.11.6 调试 / 236

第7章 服务端框架 / 238

7.1 服务端架构 / 238

7.1.1 总体架构 / 238

7.1.2 游戏流程 / 239

7.1.3 连接的数据结构 / 240

7.1.4 数据库结构 / 241

7.1.5 项目结构 / 241

7.2 数据管理类DataMgr / 243

7.2.1 数据表结构 / 243

7.2.2 角色数据 / 244

7.2.3 Player的初步版本 / 244

7.2.4 连接数据库 / 245

7.2.5 防止sql注入 / 246

7.2.6 Register注册 / 247

7.2.7 CreatePlayer创建角色 / 249

7.2.8 登录校验 / 250

7.2.9 获取角色数据 / 251

7.2.10 保存角色数据 / 252

7.2.11 调试 / 253

7.3 临时数据 / 255

7.4 网络管理类ServNet / 256

7.4.1 粘包分包现象 / 256

7.4.2 粘包分包的处理方法 / 256

7.4.3 Conn连接类 / 257

7.4.4 ServNet网络处理类 / 260

7.4.5 ReceiveCb的粘包分包处理 / 261

7.4.6 发送消息 / 264

7.4.7 启动服务端 / 265

7.4.8 调试 / 265

7.5 心跳 / 267

7.5.1 心跳机制 / 267

7.5.2 时间戳 / 268

7.5.3 使用定时器 / 269

7.5.4 心跳协议 / 270

7.5.5 调试心跳协议 / 270

7.6 协议 / 271

7.6.1 协议基类 / 272

7.6.2 字符串协议 / 273

7.6.3 字节流协议 / 274

7.6.4 字节流辅助方法 / 276

7.6.5 使用协议 / 278

7.6.6 调试 / 280

7.7 中间层Player类 / 282

7.7.1 登录流程 / 282

7.7.2 下线 / 282

7.7.3 Player类的实现 / 283

7.8 消息分发 / 285

7.8.1 消息处理的类 / 285

7.8.2 消息处理类的实现 / 286

7.8.3 反射 / 287

7.9 注册登录 / 289

7.9.1 协议 / 289

7.9.2 注册功能 / 290

7.9.3 登录功能 / 291

7.9.4 登出功能 / 292

7.9.5 获取分数功能 / 293

7.9.6 增加分数功能 / 293

7.9.7 输出服务端信息 / 294

7.9.8 Main中的调用 / 294

7.9.9 测试用客户端 / 295

7.9.10 调试 / 297

第8章 客户端网络模块 / 300

8.1 网络模块设计 / 300

8.1.1 整体架构 / 300

8.1.2 监听表 / 301

8.1.3 类结构 / 301

8.2 委托 / 302

8.2.1 使用委托 / 302

8.2.2 示例 / 302

8.2.3 操作符 / 303

8.3 MsgDistribution消息分发 / 304

8.3.1 MsgDistribution的成员 / 304

8.3.2 DispatchMsgEvent / 305

8.3.3 AddListener / 306

8.4 Connection连接 / 307

8.4.1 Connection的成员 / 307

8.4.2 连接服务端 / 309

8.4.3 关闭连接 / 309

8.4.4 异步回调 / 310

8.4.5 消息处理 / 311

8.4.6 发送数据 / 311

8.4.7 心跳机制 / 312

8.5 NetMgr网络管理 / 313

8.6 登录注册功能 / 314

8.6.1 界面资源 / 315

8.6.2 登录面板功能 / 316

8.6.3 注册面板功能 / 319

8.7 位置同步的服务端程序 / 320

8.7.1 协议 / 321

8.7.2 场景 / 321

8.7.3 协议处理 / 324

8.7.4 事件处理 / 324

8.8 位置同步的客户端程序 / 325

8.8.1 客户端资源 / 325

8.8.2 客户端程序 / 326

8.9 调试框架 / 331

第9章 房间系统 / 334

9.1 游戏界面 / 335

9.1.1 登录面板 / 335

9.1.2 注册面板 / 336

9.1.3 提示面板 / 337

9.1.4 UGUI的滑动区域 / 338

9.1.5 房间列表面板 / 340

9.1.6 房间面板 / 342

9.1.7 创建预设 / 343

9.2 协议设计 / 344

9.3 提示框的功能实现 / 346

9.4 登录注册的功能实现 / 348

9.4.1 登录面板的功能 / 348

9.4.2 GameMgr / 349

9.4.3 注册面板的功能 / 350

9.4.4 调试 / 351

9.5 房间列表面板的功能 / 352

9.5.1 获取部件 / 353

9.5.2 开启监听 / 354

9.5.3 刷新成绩栏 / 355

9.5.4 刷新房间列表 / 355

9.5.5 刷新按钮 / 357

9.5.6 加入房间 / 357

9.5.7 新建房间 / 358

9.5.8 登出 / 359

9.5.9 测试面板 / 360

9.6 房间面板的功能 / 360

9.6.1 获取部件 / 361

9.6.2 监听 / 362

9.6.3 刷新列表 / 362

9.6.4 退出按钮 / 364

9.6.5 开始战斗 / 365

9.6.6 测试面板 / 366

第10章 房间系统服务端 / 368

10.1 玩家数据 / 368

10.2 房间类 / 370

10.2.1 数据结构 / 370

10.2.2 添加玩家 / 371

10.2.3 删除玩家 / 372

10.2.4 更换房主 / 373

10.2.5 广播消息 / 373

10.2.6 输出房间信息 / 374

10.3 房间管理器 / 374

10.3.1 数据结构 / 374

10.3.2 创建房间 / 375

10.3.3 离开房间 / 376

10.3.4 输出房间列表 / 376

10.4 玩家消息处理 / 377

10.4.1 查询成绩GetAchieve / 377

10.4.2 获取房间列表GetRoomList / 377

10.4.3 创建房间CreateRoom / 378

10.4.4 加入房间EnterRoom / 379

10.4.5 获取房间信息GetRoomInfo / 380

10.4.6 离开房间LeaveRoom / 380

10.5 玩家事件处理 / 381

10.6 调试 / 382

第11章 战场系统 / 386

11.1 协议设计 / 386

11.2 开始战斗 / 388

11.2.1 客户端战场数据 / 389

11.2.2 获取阵营 / 390

11.2.3 清理场景 / 390

11.2.4 开始战斗 / 391

11.2.5 产生坦克 / 391

11.2.6 服务端战场数据 / 394

11.2.7 服务端条件检测 / 395

11.2.8 服务端开启战斗 / 395

11.2.9 服务端消息处理 / 396

11.2.10 调试程序 / 397

11.3 三种同步位置方案 / 398

11.3.1 瞬移式位置同步 / 399

11.3.2 移动式位置同步 / 400

11.3.3 预测式位置同步 / 401

11.4 位置同步的服务端处理 / 402

11.5 位置同步的客户端处理 / 404

11.5.1 发送同步信息 / 404

11.5.2 网络同步类型 / 405

11.5.3 预测目标位置 / 405

11.5.4 向目标位置移动 / 408

11.5.5 监听服务端协议 / 408

11.5.6 调试 / 409

11.6 同步炮塔炮管 / 410

11.7 轮子和履带 / 411

第12章 炮火同步 / 413

12.1 炮弹同步 / 413

12.1.1 协议设计 / 413

12.1.2 服务端处理 / 414

12.1.3 客户端发送同步信息 / 415

12.1.4 客户端接收同步信息 / 416

12.2 伤害同步 / 418

12.2.1 协议设计 / 418

12.2.2 服务端处理 / 418

12.2.3 客户端发送伤害信息 / 420

12.2.4 客户端接收伤害信息 / 420

12.3 胜负判断 / 423

12.3.1 协议设计 / 423

12.3.2 服务端胜负判断 / 423

12.3.3 服务端处理战斗结果 / 424

12.3.4 客户端接收战斗结果 / 425

12.4 中途退出 / 427

12.5 完整的游戏 / 428

资源截图:

1.png

QIW.NET最初发布于2022年7月31日 @ am1:12