![]() ![]() |
腾讯游戏开发精粹Ⅲ 读者对象:游戏客户端、服务器工程师或有志于投身游戏技术领域的读者。
《腾讯游戏开发精粹Ⅲ》是腾讯游戏研发团队不断积累沉淀的技术结晶,是继 2019年推出《腾讯游戏开发精粹I》和《《腾讯游戏开发精粹II》后的诚意续作。本书收录了 21 个在上线项目中得到验证的技术方案,深入介绍了腾讯公司在游戏开发领域的新研究成果和新技术进展,涉及人工智能、计算机图形、动画和物理、客户端架构和技术、服务端架构和技术及管线和工具等多个方向。本书适合游戏从业者、游戏相关专业师生及对游戏幕后技术原理感兴趣的普通玩家。
腾讯游戏学堂是腾讯游戏设立的致力于打造游戏知识分享和行业交流的平台,通过游戏行业专业人才培养、高校产学研合作、行业交流及开发者生态建设等,推动游戏行业良性发展,以能力生长,助游戏创作。
第1章 适用于MOBA游戏的帧同步移动预表现方案 1
1.1 网络游戏的客户端预表现技术 1 1.2 帧同步及客户端预表现原理 2 1.2.1 帧同步的原理与流程 2 1.2.2 逻辑与表现分离 3 1.2.3 客户端预表现基本流程 5 1.3 帧同步下的移动预表现实现方案 6 1.3.1 预测移动的基本表现要素 8 1.3.2 移动预表现与技能衔接处理 8 1.3.3 预测位置的修正 10 1.3.4 墙体和动态阻挡 14 1.4 移动手感指标与实验 15 1.5 总结 17 第2章 基于网格的视野技术方案 18 2.1 实现及原理 19 2.1.1 离线处理 21 2.1.2 运行时处理 25 2.1.3 渲染迷雾 28 2.2 性能优化 29 2.2.1 内存优化 30 2.2.2 计算性能优化 32 2.3 总结 33 第3章 移动端App集成UE的实践 34 3.1 移动端App集成UE简介 34 3.1.1 价值、意义和对手机QQ相关技术的影响 34 3.1.2 线上数据和成果展示 35 3.2 UE的SDK化之旅 35 3.2.1 启动器改造—集成移动端App的关键起点 36 3.2.2 针对移动端App特点的引擎生命周期改造 41 3.3 针对移动端App需求的引擎极致轻量化 44 3.3.1 包体优化:二进制代码文件 44 3.3.2 包体优化:资源文件 46 3.3.3 内存优化 52 3.4 应用功能的展示 58 3.4.1 QQ秀 58 3.4.2 游戏 59 3.4.3 聊天表情录制 60 3.5 总结 60 第4章 UE的Dedicated Server优化实践 61 4.1 DS管理优化 61 4.1.1 游戏服务架构 62 4.1.2 SeedDS模式优化方案 64 4.1.3 MultiWorld模式 69 4.2 Tick优化 74 4.2.1 引擎层Tick优化 74 4.2.2 逻辑层Tick优化 78 4.2.3 Tick优化小结 79 4.3 网络层优化 79 4.3.1 网络同步简介 80 4.3.2 DirtySystem的构建 80 4.3.3 网络相关性优化 83 4.4 业务层优化 87 4.4.1 动画优化 87 4.4.2 OverlapEvents实现分析和性能优化 90 4.5 总结 92 第5章 深入剖析高性能游戏数据库TcaplusDB的存储引擎 93 5.1 数据库存储引擎概述 93 5.2 LSH存储引擎的整体架构 94 5.2.1 LSH存储引擎的设计思想 94 5.2.2 LSH存储引擎架构设计 95 5.2.3 存储引擎的读写删流程 97 5.3 LSH存储引擎的实时自适应设计 99 5.3.1 LSH存储引擎的rehash 100 5.3.2 LSH存储引擎进行数据整理 102 5.4 引擎线程模型及动态负载均衡 105 5.4.1 TcaplusDB的线程模型 105 5.4.2 动态负载均衡算法 105 5.5 总结和展望 107 第6章 面向游戏的服务网格:Tbuspp2 108 6.1 微服务架构模型简介 108 6.2 游戏后台对服务网格的能力需求分析 109 6.2.1 游戏与Web服务后台运行模式的差异 110 6.2.2 为什么需要Tbuspp2 110 6.3 Tbuspp2设计 113 6.3.1 系统架构 113 6.3.2 领域建模 114 6.4 Tbuspp2核心实现机制 118 6.4.1 信令、数据独立信道,支持高效可靠信息交换 118 6.4.2 两级队列模型,提供功能扩展弹性 120 6.4.3 按需路由同步,从容支持大规模集群 122 6.4.4 Stateful Group治理,全面支持游戏后台需求 123 6.5 总结 128 第7章 混合语言程序的混合调用栈火焰图 129 7.1 混合语言程序 129 7.2 混合调用栈火焰图 130 7.2.1 性能热点与火焰图 130 7.2.2 原生调用栈获取问题 131 7.2.3 脚本调用栈获取问题 132 7.2.4 混合调用栈获取问题 134 7.2.5 混合调用栈火焰图监控服务 135 7.3 目标进程的调试控制 137 7.4 快速获取跨进程原生调用栈 140 7.4.1 优化Linux平台的原生调用栈获取 140 7.4.2 优化Windows平台的原生调用栈获取 144 7.4.3 addr2func的查询优化 146 7.4.4 Linux平台中UE的堆栈获取 148 7.5 安全获取跨进程脚本调用栈 150 7.5.1 获取执行环境指针 151 7.5.2 模拟调用栈回溯 154 7.6 合并脚本调用栈与原生调用栈 157 7.7 优化混合调用栈统计数据编码 158 7.8 混合调用栈火焰图获取总结 162 第8章 出海游戏的LQA工业化 163 8.1 LQA工业化背景简介 163 8.2 LQA工业化的过程及方法 166 8.2.1 LQA工业化的提取阶段 168 8.2.2 LQA工业化的翻译阶段 170 8.2.3 LQA工业化的合入阶段 171 8.2.4 LQA工业化的测试阶段 175 8.2.5 LQA工业化的大版本合并阶段 179 8.3 总结 182 第9章 在TPS类游戏中应用可微渲染进行资源转换与优化 183 9.1 在TPS类游戏中应用可微渲染简介 183 9.2 背景知识 184 9.2.1 什么是可微渲染 184 9.2.2 可微渲染的光栅化实现 185 9.2.3 可微渲染在游戏和虚拟现实行业中的应用 187 9.2.4 TPS类游戏的特点 187 9.3 基于可微渲染进行资源转换与优化的一般框架 189 9.4 可微渲染器的实现 190 9.4.1 可微渲染器基本功能的实现 190 9.4.2 游戏方面的修改与扩展 194 9.5 材质拟合相关处理 196 9.5.1 观察视角相关内容的处理 196 9.5.2 材质的处理 198 9.5.3 材质转换之后的效果 200 9.6 网格的处理 202 9.7 总结与展望 204 第10章 DirectX Shader Compiler适配UE4移动平台 205 10.1 着色器与变体 205 10.1.1 移动平台性能评估标准 205 10.1.2 DirectX Shader Compiler 207 10.2 适配UE 208 10.2.1 OpenGL & Vulkan RHI适配 208 10.2.2 Metal RHI适配 211 第11章 大规模复杂场景下光照烘焙面临的挑战及解决方案 219 11.1 光照烘焙的背景与现有解决方案 219 11.2 光照烘焙中大规模光源的管理方案 221 11.2.1 单个光源的选取 222 11.2.2 单个光源的采样 227 11.2.3 基于多重重要性采样的样本融合 228 11.2.4 方案的收益 229 11.3 烘焙中复杂光路下的采样优化 230 11.3.1 一种基于GPU实现的空间方向树的自适应路径引导算法 230 11.3.2 基于时空蓄水池的路径重采样算法 237 11.4 烘焙中的降噪器优化 241 11.4.1 基于双边滤波的自研光照贴图降噪器 241 11.4.2 结合双边滤波的Optix降噪器优化 246 第12章 光照烘焙中基于GPU实现的接缝修复方案 247 12.1 光照烘焙及接缝问题简介 247 12.2 相关背景知识 248 12.2.1 关键术语 248 12.2.2 光线追踪 249 12.2.3 联合双边滤波 249 12.2.4 SVGF 250 12.3 工业界现有光照烘焙接缝修复方案 251 12.4 实现细节 252 12.4.1 Seam Finder Pass 252 12.4.2 Seam Filter Pass 255 12.5 接缝修复效果对比 257 12.6 总结 259 第13章 VRS在移动端的集成与实践 260 13.1 VRS概述 260 13.2 VRS介绍 260 13.2.1 VRS的概念 261 13.2.2 VRS的原理 261 13.2.3 VRS的作用 262 13.3 着色率控制方式 263 13.3.1 Per-Draw 263 13.3.2 Per-Triangle 263 13.3.3 Per-Region 264 13.4 VRS中Per-Draw的集成 265 13.4.1 UE4中的VRS材质 266 13.4.2 VRS中的基元组件 270 13.4.3 VRS中的渲染硬件接口 273 13.5 VRS中Per-Draw的实践 276 13.5.1 将VRS用于具有低频细节材质的物体 276 13.5.2 将VRS用于快速移动的物体 277 13.5.3 将VRS用于近处的物体 279 13.6 总结与展望 281 第14章 基于帧预测的移动端高帧率性能优化技术 282 14.1 解决思路 283 14.2 生成预测帧的方法 285 14.2.1 使用深度在屏幕空间还原场景网格 287 14.2.2 顶点的重投影及走样的修复 289 14.2.3 帧预测的实现 292 14.3 适配帧预测的管线 298 14.3.1 以“渲染帧-预测帧”为一对的渲染管线 298 14.3.2 直接在渲染线程插补中间帧的渲染管线 300 14.4 适配帧预测管线的负载均衡方案 301 14.4.1 管线的渲染负载均衡 302 14.4.2 成对渲染管线中Game线程游戏逻辑的跳帧更新及 负载均衡方案 304 14.5 优化效果与总结 313 第15章 基于UE4的开放世界地形渲染 315 15.1 开放世界地形渲染简介 315 15.2 方案背景 316 15.3 方案设计思路 316 15.4 地形着色方式 318 15.4.1 Weightmap着色 318 15.4.2 MaterialID着色 319 15.4.3 Hybrid MaterialID着色 319 15.4.4 MaterialID编辑工具 320 15.5 地形渲染管线 321 15.5.1 UE4中的Landscape渲染流程 322 15.5.2 GPU Driven Terrain渲染流程 323 15.5.3 CPU端技术细节 324 15.5.4 GPU端技术细节 326 15.6 效果收益与性能分析 332 15.6.1 测试场景 332 15.6.2 Metal平台性能数据 333 15.6.3 OpenGL ES平台性能数据 333 15.7 总结 335 第16章 游戏中的极端天气渲染 336 16.1 游戏中的天气 336 16.2 认识风暴云 337 16.3 中央气旋分析与建模 338 16.3.1 风暴位置与大小 339 16.3.2 风暴眼的形态 340 16.3.3 风暴流动与旋转 345 16.3.4 风暴眼的垂直结构 349 16.3.5 风暴色彩与氛围 351 16.4 流体模拟 352 16.4.1 流体在数学上的表达 353 16.4.2 密度场扩散过程 354 16.4.3 体积云的流体模拟 356 16.5 体积散射与风暴云光照 358 16.5.1 光照方程 358 16.5.2 相函数 360 16.5.3 风暴云光照 362 16.6 闪电与内部光照 365 16.6.1 闪电光照拟合 365 16.6.2 闪电形态 366 16.7 环境交互 367 16.7.1 投影 368 16.7.2 自定义缓冲 368 第17章 移动端贴图压缩优化 371 17.1 ZTC纹理压缩 371 17.2 移动端常见压缩格式回顾 371 17.2.1 ETC1 372 17.2.2 ETC1s 374 17.2.3 ASTC 374 17.2.4 PVRTC 376 17.2.5 ETC1和ASTC的问题 377 17.3 ZTC格式设计 377 17.3.1 支持更多的块尺寸 378 17.3.2 块分区 378 17.3.3 Endpoint Direction(PCA)优化 379 17.3.4 亮度码本修订 380 17.3.5 RGBA格式的压缩 380 17.3.6 基于双线性插值的编码 381 17.4 ZTC数据计算 382 17.4.1 优化base color 383 17.4.2 匹配partition 383 17.4.3 边界拟合 383 17.4.4 ZTC转码ASTC 384 17.4.5 未来的工作 385 17.5 ZTC测试 385 17.5.1 RGB 386 17.5.2 Normal 386 17.5.3 RGBA 387 17.6 总结 388 第18章 显存管理 389 18.1 内存管理 389 18.1.1 内存碎片 389 18.1.2 内存分配算法 390 18.2 通用显存管理 392 18.2.1 为什么要实现通用显存管理 392 18.2.2 VMA介绍 393 18.2.3 VMA显存分配 393 18.2.4 VMA显存碎片整理 402 18.3 专用显存管理 403 18.3.1 GPU Driven显存管理需求 403 18.3.2 GPU Driven显存分配 404 18.3.3 显存碎片整理 406 第19章 基于Vulkan Ray Query的移动端光线追踪反射效果 409 19.1 移动平台的光线追踪特性简介 409 19.1.1 支持光线追踪的图形API 410 19.1.2 光线追踪管线和光线查询 410 19.2 基于光线查询的材质系统 411 19.2.1 现有实现及其局限性 412 19.2.2 可见性缓冲区 414 19.2.3 材质系统的实现 415 19.3 光线追踪反射 422 19.3.1 世界空间法线纹理和Thin GBuffer 423 19.3.2 实现原理 425 19.3.3 结果与分析 428 19.4 总结 429 第20章 移动端全局光照演变的思考与实践 430 20.1 什么是全局光照 430 20.2 静态光照烘焙 431 20.2.1 光照贴图 431 20.2.2 光照探针 432 20.2.3 静态光照烘焙的局限性与优势 433 20.3 基于预计算传输的全局光照 434 20.3.1 如何让光照动起来 434 20.3.2 预计算辐射传输 434 20.3.3 数据存储的优化 435 20.3.4 基于预计算的半动态GI的局限性 436 20.4 动态全局光照SmartGI 437 20.4.1 移动端全动态GI方案的挑战 437 20.4.2 已有全动态GI方案的分析 437 20.4.3 使用混合架构实现全动态GI的基本框架 438 20.4.4 使用屏幕空间数据做光照缓存 439 20.4.5 使用体素化数据做光照缓存 440 20.4.6 使用离散图元做光照缓存 442 20.4.7 多光照缓存的收集 444 20.4.8 全动态GI的性能优化 446 20.4.9 全动态GI的渲染效果 452 20.5 未来的展望与思考 455 20.5.1 GI算法的持续迭代 455 20.5.2 移动端硬件能力的持续演变和提升 456 第21章 动作匹配及神经动画技术 457 21.1 背景介绍 457 21.1.1 自然动画的目标 459 21.1.2 骨骼动画 460 21.1.3 游戏动画中的根骨骼 460 21.1.4 骨骼动画中的正向动力学 461 21.1.5 骨骼动画中的反向动力学 462 21.1.6 游戏动画中的状态机 464 21.2 动作匹配 465 21.2.1 动作捕捉中的数据采集 467 21.2.2 设计动作捕捉中的数据采集的脚本 468 21.2.3 未来轨迹的预测 469 21.2.4 动作姿态特征提取 471 21.2.5 运动数据的混合 472 21.2.6 动作匹配技术总结 473 21.3 基于学习的动作匹配 473 21.3.1 匹配数据的神经网络压缩 473 21.3.2 将动作匹配中涉及的三个网络进行连接 474 21.3.3 神经相位动画技术 475 21.4 游戏动画中的多风格技术 481 21.4.1 游戏动画中的多风格及数据采集 481 21.4.2 多风格网络设计 482 21.4.3 风格效果 484 21.5 小结 485 第22章 深度照片还原——Light Stage人像数字扫描管线 486 22.1 人像扫描介绍 486 22.2 拍摄 488 22.2.1 Light Stage拍摄 488 22.2.2 LookDev拍摄 489 22.3 数据处理 491 22.3.1 Light Stage数据处理 491 22.3.2 LookDev数据处理 493 22.4 三维重建 495 22.4.1 点云匹配 495 22.4.2 模型重构 496 22.4.3 贴图映射 496 22.5 美术制作 496 22.5.1 模型清理 497 22.5.2 模型包裹 498 22.5.3 PBR贴图生成 499 22.5.4 细节纹理贴图 499 22.5.5 高模制作 502 22.5.6 烘焙 503 22.5.7 贴图制作 503 22.6 LookDev 506 22.6.1 毛发制作 506 22.6.2 光照环境匹配 509 22.6.3 Maya Arnold 513 22.6.4 Unreal Substrate 516 22.6.5 Unreal MetaHuman 520 22.7 总结 526 第23章 语音驱动的面部动画生成算法 527 23.1 解决方案与核心技术 527 23.1.1 面部动画驱动技术 528 23.1.2 口型表情动画生成技术 528 23.2 基于音素方案的实现流程 531 23.2.1 总体流程 531 23.2.2 音素、视素、动作单元的概念 532 23.2.3 从音频文件到口型动画的基础实现 538 23.2.4 解决协同发音的难题 542 23.3 其他辅助效果 547 23.3.1 与情绪的结合 547 23.3.2 手势、挑眉、身体姿态的配合 548 23.3.3 最终效果 551 23.4 总结 552
你还可能感兴趣
我要评论
|