编辑推荐
null
内容简介
本书以Unity图形开发和C++网络开发为主线,系统地介绍了网络仿真系统和网络游戏开发的相关知识。本书从客户端开发和服务器端开发两个方面着手,讲解了一个完整的仿真模拟系统的开发,既有详细的基础知识,也有常见的流行技术,更有完整的项目实战案例,而且还介绍了AR、人工智能和分布式架构等前沿知识在开发中的应用。本书共21章,分为4篇。第1、2篇为客户端开发,主要介绍了Unity基础与实战开发;第3、4篇为服务器端开发,主要介绍了C++网络开发基础与实战。 本书内容全面,讲解通俗易懂,适合网络游戏开发、军事虚拟仿真和智能网络仿真系统开发等领域的开发人员和技术爱好者阅读,也适合系统架构人员阅读。另外,本书还适合作为相关院校和培训机构的培训教材使用。
作者介绍
王静逸,计算机学士、金融学硕士、中国计算机学会会员、神兔未来科技有限公司创始人、QQ炫舞(1与2)引擎开发工程师和客户端负责人。曾经任职于武汉中铁桥梁科学研究院、上海联想研究院和华为研究所,任研究员。曾经参与了腾讯QQ炫舞、全民炫舞微信手游及曙光之战OL等热门游戏的研发和图形引擎研发。创办神兔未来科技有限公司,从事分布式仿真、VR与AR等领域的图形学研究与物联网网络系统开发,并主持了多项军用仿真系统和武警虚拟现实训练系统的开发。目前在布比(BUMO)公链任研究员和架构师,并兼任第一视频集团研究院研究员与技术总监,从事分布式区块链和分布式人工智能的研究。 刘岵,中国科学院计算机硕士、中国人工智能产业发展联盟理事、中国人工智能学会智能传媒专委会委员、中国计算机学会区块链专委会委员。曾任诺基亚中国区和微软移动业务中国区技术总监。现任上市公司第一视频集团副总裁、研究院院长。有20余年的信息技术开发与管理经验。在核心期刊上发表过多篇论文,并拥有多项专利。
目 录
序言 前言 第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
媒体评论
null