书籍简介:
《Unity与C 网络游戏开发实战:基于VR、AI与分布式架构》以Unity图形开发和C 网络开发为主线,系统地介绍了网络仿真系统和网络游戏开发的相关知识。
《Unity与C 网络游戏开发实战:基于VR、AI与分布式架构》从客户端开发和服务器端开发两个方面着手讲解了一个完整的仿真模拟系统的开发,既有详细的基础知识,也有常见的流行技术,更有完整的项目实战案例,而且还介绍了VR、人工智能和分布式架构等前沿知识在开发中的应用。
《Unity与C 网络游戏开发实战:基于VR、AI与分布式架构》共21章,分为4篇。第1篇和第2篇为客户端开发,主要介绍了Unity基础与实战开发,涵盖Unity开发环境的搭建和调试;编写Hello World与仿真系统体验;Unity游戏开发语言;在Unity中使用图形学知识;Unity编辑器的使用;虚拟仿真训练系统的架构和模块;人物资源编辑与程序开发;场景资源编辑与程序开发;资源组件和交互物品开发;NGUI组件开发和操作交互开发。第3篇和第4篇为服务器端开发,主要介绍了C 网络开发基础与实战,涵盖C 语言基础;C 网络编程基础;多线程和异步套接字;MySQL数据库的使用;网络协议Protobuf的使用;设计架构简单的互动服务器体系;开发登录服务器LoginServer;开发网关服务器GateServer;开发中心服务器CenterServer;开发战场服务器BattleServer;仿真框架和人工智能。
《Unity与C 网络游戏开发实战:基于VR、AI与分布式架构》内容全面,讲解通俗易懂,适合网络游戏开发、军事虚拟仿真系统开发和智能网络仿真系统开发等领域的开发人员和技术爱好者阅读,也适合系统架构人员阅读。另外,《Unity与C 网络游戏开发实战:基于VR、AI与分布式架构》还适合作为相关院校和培训机构的培训教材使用。
作者简介:
王静逸
计算机学士、金融学硕士、中国计算机学会会员、神兔未来科技有限公司创始人、QQ炫舞(1与2)引擎开发工程师和客户端负责人。曾经任职于武汉中铁桥梁科学研究院、上海联想研究院和华为研究所,任研究员。曾经参与了腾讯QQ炫舞、全民炫舞微信手游及曙光之战OL等热门游戏的研发和图形引擎研发。创办神兔未来科技有限公司,从事分布式仿真、VR与AR等领域的图形学研究与物联网网络系统开发,并主持了多项军用仿真系统和武警虚拟现实训练系统的开发。目前在布比(BUMO)公链任研究员和架构师,并兼任第一视频集团研究院研究员与技术总监,从事分布式区块链和分布式人工智能的研究。
刘岵
中国科学院计算机硕士、中国人工智能产业发展联盟理事、中国人工智能学会智能传媒专委会委员、中国计算机学会区块链专委会委员。曾任诺基亚中国区和微软移动业务中国区技术总监。现任上市公司第一视频集团副总裁、研究院院长。有20余年的信息技术开发与管理经验。在核心期刊上发表过多篇论文,并拥有多项专利。
出版时间:
2019年02月
章节目录:
第1篇 Unity基础(客户端)
第1章 Unity介绍与相关环境的搭建和调试 2
1.1 Unity引擎介绍 2
1.1.1 Unity3D引擎部分 2
1.1.2 Unity3D编辑器部分 3
1.2 Unity引擎发展 5
1.3 Unity引擎应用场景和使用范围介绍 5
1.4 Unity软件安装 7
1.5 Unity Windows环境的安装和搭建 9
1.6 Unity Android环境的安装和搭建 11
1.7 Unity授权 15
1.8 Unity服务 16
第2章 编写Hello World与仿真系统体验 18
2.1 创建第一个空的工程 18
2.2 创建第一个脚本程序 20
2.3 编写第一个Hello Word程序 21
2.4 编译输出第一个程序 22
2.5 运行Hello World 23
2.6 打开仿真程序Demo 23
2.7 这是一个很好玩的仿真系统 25
2.8 进入训练场准备体验训练操作 25
2.9 控制人物行走 26
2.10 开动第一辆汽车 27
2.11 完成第一个仿真任务 27
2.12 本章小结与分析 28
第3章 Unity游戏开发语言 29
3.1 C#语言介绍 29
3.2 C#常用数据结构介绍 31
3.2.1 ArrayList链表结构 31
3.2.2 泛型List 31
3.2.3 Stack栈 32
3.2.4 队列Queue 33
3.2.5 字典Dictionary 34
3.3 C#的接口与继承 35
3.3.1 实现继承和接口继承 35
3.3.2 多重继承 35
3.3.3 结构的继承 35
3.4 C#的委托 37
3.5 C#多线程使用介绍 38
3.6 C#的反射机制 39
3.7 Unity中使用泛型 42
3.8 Unity中使用协程 42
3.9 Unity的序列化和网络协议库介绍 45
3.10 Unity中使用CLR进行Native交互 46
3.11 Unity中使用热更新语言Lua 47
3.12 本章小结与分析 50
第4章 在Unity中使用图形学知识 51
4.1 3D数学基本知识在游戏中的应用 51
4.2 三维坐标系 52
4.3 顶点坐标变换 53
4.3.1 向量是什么 53
4.3.2 矩阵是什么 54
4.3.3 如何操作向量 55
4.3.4 如何处理点或者向量与矩阵的乘法 55
4.3.5 点和向量通过矩阵的变换 56
4.4 光照与材质 58
4.4.1 什么是Shader的基本光照模型 59
4.4.2 什么是光照模型 59
4.4.3 什么是材质 61
4.5 Unity引擎中的渲染管线流程 67
4.6 Unity中实现模型的缩放和旋转等程序处理 70
4.7 Unity中计算射线相关的程序处理 74
4.8 Unity中制作一个简单的渲染特效 77
4.9 本章小结与分析 84
第5章 Unity编辑器的使用 86
5.1 创建一个空的工程 86
5.2 编辑器界面布局介绍 88
5.3 编辑器的常用功能介绍 89
5.4 编辑器模型编辑——旋转控制第一个模型 95
5.5 编辑器动作骨骼编辑——让人物动起来 96
5.6 编辑器光照和相机的编辑——让人物更真实 98
5.7 编辑器粒子特效编辑——让环境更绚丽 101
5.8 编辑器场景编辑——创建简单的战场 104
5.9 编辑器地形和光照贴图烘焙——让战场真实起来 105
5.10 编辑器遮挡剔除——提高战场的运行效率 107
5.11 编辑器资源管理——让工程更容易管理 109
5.12 编辑器控制台和调试——输出调试信息 110
5.13 编辑器资源商店和常用插件 111
5.14 编辑器材质编辑——让车辆变化一下样式 114
5.15 编辑器物理系统介绍——让人和车辆发生碰撞 116
5.16 本章小结与分析 118
第2篇 Unity实战(客户端)
第6章 虚拟仿真训练系统的架构和模块 122
6.1 什么是虚拟仿真训练 122
6.1.1 战斗模拟仿真训练 122
6.1.2 车辆仿真和工业操作 123
6.2 物理架构介绍——虚拟仿真训练系统 123
6.3 使用态势端发布授权任务 126
6.4 将分队长学员配置加入授权任务 127
6.5 启动仿真任务——完成一次美妙的任务体验 128
6.6 本章小结与分析 130
第7章 人物资源编辑与程序开发 132
7.1 模型资源的导入和整理编辑 132
7.2 人物动作资源的编辑和管理 134
7.3 数据资源的导入和整理 137
7.4 人物的控制和脚本程序开发 141
7.5 人物的行为状态机开发 147
7.6 人物特效的控制和状态交互 150
7.7 人物的物理状态和碰撞瞄准的程序交互 151
7.8 人物的属性和程序接口开发 154
7.9 在场景中运行人物资源和调试程序 158
7.10 本章小结与分析 159
第8章 场景资源编辑与程序开发 161
8.1 场景资源的导入和整理管理 161
8.2 场景数据资源的导入和场景程序管理 162
8.3 地形的编辑和程序相关功能开发 169
8.4 添加碰撞体树木和非碰撞体植被 172
8.5 创建光源和阴影渲染 174
8.6 添加场景静态物体和动态物体 176
8.7 添加场景水的插件并使用代码集成 182
8.8 添加天气系统插件并集成代码系统 187
8.9 添加场景道路插件并制作道路 192
8.10 添加天空盒和雾态效果 194
8.11 场景预览和渲染效率优化 196
8.12 场景系统加载切换和系统程序开发 198
8.13 本章小结与分析 202
第9章 资源组件和交互物品开发 203
9.1 资源组件的导入和整理管理 203
9.2 资源物品的数据导入和整理管理 205
9.3 AssetBundle的资源组成和功能API 207
9.4 开发自己的AssetBundle打包工具插件 208
9.5 加载和管理AssetBundle资源 212
9.6 车辆动力系统的插件使用和系统集成开发 216
9.7 关于飞行器直升机的开发和使用 223
9.8 地雷组件的开发和功能交互 225
9.9 物品管理器系统开发 230
9.10 本章小结与分析 235
第10章 NGUI组件开发和操作交互开发 236
10.1 NGUI插件介绍和导入工程 236
10.2 NGUI图集的使用和制作 237
10.3 NGUI图集的优化和DrawCall的优化策略 239
10.4 NGUI的底层实现原理和分析 240
10.5 UILable的使用 242
10.6 UISprite的使用 243
10.7 UIPanel的使用 244
10.8 UIScrollView的使用 245
10.9 UIButton的使用 247
10.10 UIRoot和UICamera的自适应 250
10.11 打造UI面向对象的动态加载和管理 251
10.12 登录UI功能开发 257
10.13 大厅任务信息系统UI功能开发 261
10.14 战场场景中主视角UI系统功能开发 268
10.15 VR开发——VR可以使用的VRGUI 276
10.16 本章小结与分析 277
第3篇 C 网络开发基础(服务器)
第11章 C 语言基础 280
11.1 C 简介 280
11.2 C 基本语法 281
11.3 C 数据结构 283
11.4 C 变量类型 289
11.5 C 修饰符类型 290
11.6 C 存储类 291
11.7 C 运算符和运算方式 294
11.8 C 函数 297
11.9 C 数组和高级功能 300
11.10 C 指针和高级功能 301
11.11 C 引用和常用方式 303
11.12 C 类和对象 305
11.13 C 继承和多态 307
11.14 C 接口和抽象 309
11.15 C 文件和流的处理 311
11.16 C STL库介绍 314
11.17 本章小结与分析 319
第12章 C 网络编程基础 321
12.1 Socket套接字 321
12.2 套接字寻址方式 326
12.3 Winsocket网络程序开发流程 328
12.4 在Visual Studio中创建网络工程 330
12.5 Winsocket编程准备 331
12.6 基于TCP的Socket编程 332
12.7 基于UDP的Socket编程 336
12.8 本章小结与分析 343
第13章 多线程和异步套接字 345
13.1 C 多线程开发 345
13.2 C 多线程互斥对象和同步 347
13.3 C 进程间通信 350
13.4 C 设置异步I/O的模式和方法 356
13.5 本章小结与分析 358
第14章 MySQL数据库的使用 359
14.1 MySQL数据库介绍和使用范围 359
14.2 安装MySQL数据库 360
14.3 MySQL可视化管理工具的使用 362
14.4 使用C 连接MySQL数据库 364
14.5 SQL语句和语法 369
14.6 MySQL备份导出数据和导入转移数据 371
14.7 本章小结与分析 374
第15章 网络协议Protobuf的使用 376
15.1 什么是Protobuf 376
15.2 Protobuf的功能是什么 378
15.3 Protobuf序列化的原理是什么 385
15.4 如何编写Protobuf的.proto文件 387
15.5 如何编译和生成Protobuf的编译程序 389
15.6 使用Protobuf协议制作一段网络小程序 392
15.7 本章小结与分析 399
第4篇 C 网络开发实战(服务器)
第16章 设计架构简单的互动服务器体系 402
16.1 Visio:一个绘制架构图的软件 402
16.2 如何使用图和连接线来表示架构 404
16.3 需要哪些服务来构建整个服务体系 406
16.4 登录服务器(LoginServer) 407
16.5 网关服务器(GateServer) 410
16.6 中心服务器(CenterServer) 413
16.7 战场服务器(BattleServer) 414
16.8 本章小结与分析 418
第17章 开发登录服务器LoginServer 420
17.1 登录服务器的作用 420
17.2 使用Protobuf生成登录授权文件和协议 421
17.3 创建LoginServer网络会话层底层模块 429
17.4 创建LoginServer服务逻辑模块 436
17.5 导入LoginServer的Protobuf协议 440
17.6 客户端Protobuf协议的导入和使用 443
17.7 从客户端登录到授权的逻辑处理过程 445
17.8 启动LoginServer,完成第一次授权登录 449
17.9 Redis缓存存储和信息处理 450
17.10 本章小结与分析 452
第18章 开发网关服务器GateServer 453
18.1 网关服务器及其作用 453
18.2 创建GateServer的框架主程序 454
18.3 创建网关转发和验证所需要的Protobuf协议脚本 461
18.4 生成服务器所需要的C 协议程序 464
18.5 生成客户端所需要的C#协议程序 466
18.6 完成网关服务器的逻辑功能开发 468
18.7 完成客户端从网关授权进入大厅的逻辑 478
18.8 本章小结与分析 481
第19章 开发中心服务器CenterServer 482
19.1 中心服务器及其作用 482
19.2 创建CenterServer框架主程序 484
19.3 创建中心服务器的Protobuf协议脚本 488
19.4 生成服务器所需要的C 协议程序 495
19.5 生成客户端所需要的C#协议程序 497
19.6 生成服务器data数据和协议代码 500
19.7 完成中心服务器的逻辑功能开发 504
19.8 启动客户端完成任务配置并开始仿真任务 513
19.9 本章小结与分析 520
第20章 开发战场服务器BattleServer 522
20.1 战场服务器及其作用 522
20.2 创建BattleServer框架主程序 524
20.3 创建战场服务器Protobuf协议脚本 527
20.4 生成服务器所需要的C 协议程序 537
20.5 生成客户端所需要的C#协议程序 539
20.6 生成服务器data数据和协议代码 550
20.7 创建战场服务器的聊天模块 553
20.8 创建战场逻辑模块 556
20.9 创建战场仿真人员同步模块 558
20.10 创建战场仿真车辆和飞行器模块 564
20.11 创建战场动态资源管理和监控模块 568
20.12 创建战场AI仿真敌人和飞行器AI状态机 571
20.13 调试战场服务器和客户端,启动仿真任务 576
20.14 本章小结与分析 579
第21章 一些仿真框架和人工智能的介绍 581
21.1 VR-LINK与HLA框架:高层体系模型框架的使用 581
21.2 游戏中常用的人工智能算法和深度学习引申 584
后记——全书总结与个人发展建议 588
封面图: