| 作者 |
| 步磊峰王静逸 刘岵 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782001061053 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------TypeScript图形渲染实战:基于WebGL的3D架构与实现--------------------------- 为了让广大3D图形爱好者能能够快速地学习WebGL图形编程,本书按照循序渐进的方式,由浅入深地讲解了WebGL图形编程的相关知识点。3D图形编程是一个庞大的主题,从宏观角度,笔者将整个3D图形编程分为三个层次,也即画出来、画的美和画的快。本书定位于画出来,目的是让读者使用TypeScript语言及WebGL 3D API编写一个WebGLApplication应用程序框架及WebGLUtilLib封装库,来渲染id Software公司的Quake3及Doom 3这两个引擎的场景和骨骼动画格式。 ---------------------------Unity与C++网络游戏开发实战:基于VR、AI与分布式架构--------------------------- 本书以Unity图形开发和C++网络开发为主线,系统地介绍了网络仿真系统和网络游戏开发的相关知识。本书从客户端开发和服务器端开发两个方面着手,讲解了一个完整的仿真模拟系统的开发,既有详细的基础知识,也有常见的流行技术,更有完整的项目实战案例,而且还介绍了AR、人工智能和分布式架构等前沿知识在开发中的应用。本书共21章,分为4篇。第1、2篇为客户端开发,主要介绍了Unity基础与实战开发;第3、4篇为服务器端开发,主要介绍了C++网络开发基础与实战 本书内容全面,讲解通俗易懂,适合网络游戏开发、军事虚拟仿真和智能网络仿真系统开发等领域的开发人员和技术爱好者阅读,也适合系统架构人员阅读。另外,本书还适合作为相关院校和培训机构的培训教材使用。 |
| 目录 |
---------------------------TypeScript图形渲染实战:基于WebGL的3D架构与实现--------------------------- 前言 第1篇 数据结构基础 第1章 SystemJS与Webpack 2 1.1 准备工作 3 1.1.1 安装Node.js 3 1.1.2 安装Viusal Studio Code 4 1.2 安装和配置SystemJS 5 1.2.1 安装SystemJS 5 1.2.2 使用SystemJS 7 1.2.3 第一个TypeScript程序 8 1.3 安装和配置Webpack 9 1.3.1 安装Webpack 9 1.3.2 配置Webpack 11 1.3.3 调用build命令 12 1.3.4 配置tsconfig.json文件 12 1.3.5 调用build和dev命令 13 1.3.6 使用watch命令 14 1.3.7 联合使用watch和dev命令 15 1.3.8 使用Webpack压缩打包源码 16 1.4 SysemJS VS. Webpack 16 1.5 编译(Compile)VS.转义(Transpile) 18 1.6 断点调试 19 1.6.1 安装及配置Debugger for Chrome扩展 19 1.6.2 断点调试TypeScript程序 20 1.6.3 VS Code Debug快捷键 21 1.7 本章总结 21 第2章 TypeScript封装和实现常用容器 22 2.1 ArrayBuffer、DataView及类型数组实现原理 23 2.1.1 C/C++模拟JS/TS中的ArrayBuffer对象 23 2.1.2 C/C++模拟JS/TS中的DataView对象 24 2.1.3 C/C++版CDataView VS. JS/TS版DataView 25 2.1.4 C/C++模拟JS/TS中的Float32Array对象 26 2.1.5 C/C++版CFloat32Array VS. JS/TS版Float32Array 28 2.1.6 JS/TS中的类型数组对象 30 2.2 封装动态类型数组 31 2.2.1 TypedArrayList的成员变量及构造函数 31 2.2.2 TypedArrayList的push方法 32 2.2.3 TypedArrayList的slice方法和subarray方法 33 2.2.4 TypedArrayList的其他方法和属性 35 2.2.5 capacityChangedCallback回调函数 36 2.3 封装关联数组 36 2.3.1 JS/TS中的关联数组 37 2.3.2 TypeScript索引签名 37 2.3.3 ES 6 Map对象 38 2.3.4 封装成Dictionary字典对象 39 2.3.5 测试Dictionary对象 42 2.3.6 红黑树还是哈希表 42 2.4 实现SGI STL风格双向循环链表 44 2.4.1 泛型的ListNode结构 45 2.4.2 List中的头节点 45 2.4.3 双向循环概念 46 2.4.4 List的查询与遍历操作 46 2.4.5 List的插入操作 48 2.4.6 List的删除操作 50 2.4.7 List的push / pop / push_front / pop_front操作 51 2.5 封装队列与栈 51 2.5.1 声明IAdapter泛型接口 52 2.5.2 实现AdapterBase抽象基类 52 2.5.3 实现Queue子类和Stack子类 53 2.6 实现通用树结构 54 2.6.1 树结构的内存表示 54 2.6.2 树节点添加时的要点 55 2.6.3 树节点isDescendantOf和remove方法的实现 56 2.6.4 实现addChild等方法 58 2.6.5 查询树结构的层次关系 59 2.6.6 广度/深度优先遍历算法 60 2.6.7 队列及栈在广度/深度优先遍历中的应用 62 2.6.8 广度/深度线性遍历枚举器 63 2.6.9 树结构枚举器的实现 63 2.6.10 测试树结构迭代器 67 2.6.11 深度优先的递归遍历 71 2.7 本章总结 73 第2篇 WebGL图形编程基础 第3章 WebGLApplication框架 76 3.1 Application体系结构概述 77 3.2 第一个WebGL Demo 78 3.2.1 技术要点描述 78 3.2.2 Demo的成员变量与构造函数 80 3.2.3 资源同步加载 82 3.2.4 立方体、坐标系、三角形及文字渲染 83 3.2.5 更新操作 85 3.2.6 键盘输入事件处理 86 3.2.7 总结Application框架的使用流程 87 3.3 Application框架实现 87 3.3.1 成员变量与构造函数 88 3.3.2 启动/查询/停止Application 89 3.3.3 不间断地更新操作 90 3.3.4 CanvasInputEvent及其子类 92 3.3.5 DOM中的getBoundingRect方法 93 3.3.6 实现viewportToCanvasCoordinate方法 94 3.3.7 将DOM Event事件转换为CanvasInputEvent事件 95 3.3.8 实现EventListenerObject接口进行事件分发 96 3.3.9 让事件起作用 97 3.3.10 定时器Timer系统 97 3.3.11 增删定时器对象 98 3.3.12 触发多个定时任务的操作 100 3.3.13 WebGLApplication子类 101 3.3.14 CameraApplication子类 102 3.4 HTML页面系统 103 3.4.1 HTML页面系统简介 103 3.4.2 HTML页面源码 104 3.4.3 入口文件main.ts 105 3.5 异步资源加载及同步操作 107 3.5.1 使用Promise封装HTTP异步请求 107 3.5.2 实现AsyncLoadTestApplication类 109 3.5.3 异步run函数的覆写(override)与测试 110 3.5.4 Promise.all异步并发加载及同步操作 111 3.5.5 本书后续的资源加载及同步策略 114 3.6 本章总结 114 第4章 WebGL基础 116 4.1 WebGL中的类 116 4.2 准备工作 117 4.2.1 创建WebGLRenderingContext对象 117 4.2.2 WebGLContextAttributes对象与帧缓冲区 118 4.2.3 渲染状态 120 4.2.4 WebGLContextEvent事件 121 4.3 基本几何图元绘制Demo 122 4.3.1 视矩阵、投影矩阵、裁剪和视口 122 4.3.2 GLSL ES着色语言 123 4.3.3 WebGLShader对象 126 4.3.4 GLSL ES精度限定符与WebGLShaderPrecisionFormat对象 128 4.3.5 WebGLProgram对象 130 4.3.6 WebGLActiveInfo对象 132 4.3.7 WebGLUniformLocation对象 134 4.3.8 WebGLBuffer对象 137 4.3.9 渲染数据存储思考 140 4.3.10 Interleaved数组的存储、寻址及绘制 141 4.3.11 drawArrays绘制基本几何图元 144 4.3.12 详解基本几何图元 146 4.3.13 drawElements绘制方法 149 4.4 本章总结 152 第5章 WebGLUtilLib渲染框架 153 5.1 WebGLUtilLib框架类结构体系 153 5.2 GLAttribState类的实现 155 5.2.1 预定义顶点属性常量值 156 5.2.2 GLAttribState类的bit位操作 157 5.2.3 getInterleavedLayoutAttribOffsetMap方法 158 5.2.4 getSequencedLayoutAttribOffsetMap方法 160 5.2.5 getSepratedLayoutAttribOffsetMap方法 161 5.2.6 getVertexByteStride方法 162 5.2.7 setAttribVertexArrayPointer方法 163 5.2.8 setAttribVertexArrayState方法 164 5.3 GLProgram相关类的实现 166 5.3.1 常用的VS和FS uniform变量 166 5.3.2 GLProgram的成员变量和构造函数 167 5.3.3 loadShaders方法 168 5.3.4 绑定和解绑GLProgram 169 5.3.5 载入uniform变量 170 5.3.6 GLProgramCache类 171 5.3.7 GLShaderSource对象 172 5.3.8 初始化常用的着色器 173 5.4 GLMesh相关类的实现 174 5.4.1 VAO对象与GLMeshBase类 174 5.4.2 GLStaticMesh类实现细节 175 5.4.3 GLMeshBuilder类成员变量 178 5.4.4 GLMeshBuilder类构造方法 179 5.4.5 GLMeshBuilder类的color、texcoord、normal和vertex方法 181 5.4.6 GLMeshBuilder类的begin和end方法 184 5.5 GLTexture类的实现 187 5.5.1 GLTexture的成员变量和构造函数 187 5.5.2 GLTexture类的upload方法 188 5.5.3 mipmap相关的静态方法 189 5.5.4 GLTexture的bind / unbind、wrap和filter方法 190 5.5.5 GLTexture的createDefaultTexture静态方法 191 5.6 本章总结 192 第6章 3D图形中的数学基础 193 6.1 坐标系 193 6.1.1 OpenGL / WebGL中的坐标系 193 6.1.2 左手坐标系与右手坐标系 194 6.2 TSM数学库 196 6.3 向量 197 6.3.1 向量的概念 197 6.3.2 向量的大小(或长度) 198 6.3.3 两个向量之间的距离 199 6.3.4 单位向量 199 6.3.5 向量的加法 199 6.3.6 向量的减法 200 6.3.7 向量的缩放 201 6.3.8 负向量 202 6.3.9 向量的点乘 202 6.3.10 向量的叉乘 203 6.4 矩阵 204 6.4.1 矩阵的定义 205 6.4.2 矩阵的乘法 205 6.4.3 单位矩阵 206 6.4.4 矩阵的转置 207 6.4.5 矩阵的行列式与求逆 207 6.5 仿射变换 208 6.5.1 平移矩阵 209 6.5.2 缩放矩阵 209 6.5.3 绕任意轴旋转矩阵 210 6.6 视图矩阵与投影矩阵 211 6.6.1 视图(摄像机)矩阵 212 6.6.2 投影矩阵 213 6.7 四元数 214 6.8 平面 215 6.8.1 构造平面 216 6.8.2 平面的单位化 217 6.8.3 点与平面的距离与关系 217 6.9 矩阵堆栈 218 6.9.1 构造函数与worldMatrix属性 219 6.9.2 矩阵的入栈、出栈及load方法 219 6.9.3 仿射变换操作 220 6.10 摄像机 220 6.10.1 成员变量和构造函数 221 6.10.2 摄像机的移动和旋转 222 6.10.3 摄像机的更新 224 6.10.4 摄像机的相关属性 225 6.11 WebGLCoordSystem类 227 6.12 本章总结 228 第7章 多视口渲染基本几何体、坐标系及文字 230 7.1 使用GLMeshBuilder多视口渲染基本几何体 230 7.1.1 Demo的需求描述 230 7.1.2 Demo的成员变量和构造函数 231 7.1.3 drawByMatrixWithColorShader方法绘制流程 233 7.1.4 使用INTERLEAVED顶点存储格式绘制三角形 234 7.1.5 使用SEQUENCED顶点存储格式绘制四边形 235 7.1.6 使用SEPARATED顶点存储格式绘制立方体 236 7.1.7 创建多视口的方法 239 7.1.8 WebGL中的纹理坐标系 240 7.1.9 drawByMultiViewportsWithTextureShader方法绘制流程 240 7.1.10 绘制纹理立方体 242 7.1.11 实现Atlas纹理贴图效果 243 7.1.12 收尾工作 245 7.2 坐标系、文字渲染及空间变换Demo 246 7.2.1 Demo的需求描述 246 7.2.2 Demo的成员变量和构造函数 247 7.2.3 生成单视口或多视口坐标系数组 248 7.2.4 覆写(override)更新和渲染虚方法 249 7.2.5 覆写(override)键盘事件处理虚方法 250 7.2.6 drawFullCoordSystem方法 250 7.2.7 drawFullCoordSystemWithRotatedCube方法 252 7.2.8 DrawHelper类的drawFullCoordSystem方法 254 7.2.9 深度测试对坐标系绘制的影响 255 7.2.10 drawText方法 256 7.2.11 MathHelper类的obj2GLViewportSpace方法 258 7.2.12 3D图形中的数学变换流水线 258 7.3 本章总结 259 第3篇 开发实战 第8章 解析与渲染Quake3 BSP场景 262 8.1 Q3BspApplication入口类 262 8.2 解析Quake3 BSP二进制文件 264 8.2.1 Quake3BspParser类的常量定义 264 8.2.2 Q3BSPLump结构定义 265 8.2.3 解析BSP文件头 266 8.2.4 解析实体字符串数据 267 8.2.5 解析材质数据 269 8.2.6 解析顶点数据 270 8.2.7 解析顶点索引数据 273 8.2.8 解析渲染表面数据 273 8.2.9 Quake3与WebGL坐标系转换 276 8.3 渲染Quake3 BSP场景 277 8.3.1 Quake3BspScene的初始化 278 8.3.2 DrawSurface对象 278 8.3.3 封装Promise加载所有纹理 279 8.3.4 生成GLStaticMesh对象 280 8.3.5 绘制整个BSP场景 282 8.4 本章总结 283 第9章 解析和渲染Doom3 PROC场景 285 9.1 Doom3Application入口类 285 9.2 解析Doom3 PROC场景 286 9.2.1 Doom3词法解析规则 287 9.2.2 IDoom3Tokenizer词法解析器 287 9.2.3 Doom3 PROC文件格式总览 288 9.2.4 Doom3ProcParser的parse方法 289 9.2.5 Doom3Area、Doom3Surface及Doom3Vertex类 290 9.2.6 Doom3ProcParser的_readArea方法 292 9.2.7 Doom3ProcParser的_readSurface方法 293 9.2.8 Doom3ProcParser的_readPortals方法 295 9.2.9 Doom3ProcParser的_readNodes方法 297 9.3 使用Doom3ProcScene加载和渲染PROC场景 298 9.3.1 RenderSurface对象 299 9.3.2 Doom3ProcScene的draw方法 299 9.3.3 Doom3ProcScene类的loadTextures方法 300 9.3.4 Doom3ProcScene的parseDoom3Map方法 301 9.4 AABB包围盒 303 9.4.1 AABB包围盒与OBB包围盒的特点 304 9.4.2 构建AABB包围盒 304 9.4.3 计算AABB包围盒的9个顶点坐标值 306 9.4.4 计算变换后的AABB包围盒 307 9.4.5 AABB包围盒的两个常用碰检算法 307 9.5 摄像机视截体 308 9.5.1 摄像机视截体的概念 308 9.5.2 Frustum类的成员变量和构造函数 309 9.5.3 buildFromCamera方法的实现 310 9.5.4 让Camera类支持Frustum 312 9.5.5 Frustum与包围盒及三角形的可见行测试 313 9.5.6 让GLStaticMesh支持包围盒 314 9.5.7 更新Doom3ProcScene的draw方法 314 9.5.8 将Frustum绘制出来 315 9.5.9 Doom3ProcScene类增加包围盒绘制方法 316 9.6 本章总结 316 第10章 解析和渲染Doom3 MD5骨骼蒙皮动画 318 10.1 骨骼蒙皮动画原理 318 10.1.1 骨骼蒙皮动画效果演示 319 10.1.2 骨骼蒙皮动画中的各种坐标系 320 10.1.3 骨骼蒙皮动画数学关键点的问答 321 10.2 解析和渲染.md5mesh文件格式 322 10.2.1 .md5mesh文件解析流程 323 10.2.2 .md5mesh中的绑定姿态 324 10.2.3 解析绑定姿态 325 10.2.4 .md5mesh中的蒙皮数据 326 10.2.5 解析蒙皮数据 329 10.2.6 计算顶点最终位置 330 10.2.7 加载和生成纹理 331 10.2.8 绘制绑定姿态(BindPose) 332 10.3 解析和渲染.md5anim文件格式 333 10.3.1 .md5anim的解析流程 333 10.3.2 解析.md5anim中的关节层次信息 334 10.3.3 解析.md5anim中的包围盒数据 336 10.3.4 解析.md5anim中的baseframe数据 337 10.3.5 解析.md5anim中的frame数据 338 10.3.6 帧动作姿态结构 339 10.3.7 MD5Anim类的buildLocalSkeleton方法 340 10.3.8 MD5Anim类的updateToModelSpaceSkeleton方法 342 10.3.9 MD5SkinedMesh类的playAnim方法 342 10.3.10 MD5SkinedMesh的drawAnimPose方法 343 10.4 实现MD5SkinedMeshApplication Demo 344 10.5 本章总结 346 ---------------------------Unity与C++网络游戏开发实战:基于VR、AI与分布式架构--------------------------- 序言 前言 第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 |