40万字内部技术结晶:《腾讯游戏开发精粹》正式发布!

管理员账号

2019-09-06

正值一年开学季,腾讯游戏学院为持续钻研学习的开发者和广大游戏爱好者们,带来一份重磅知识干货——《腾讯游戏开发精粹》。本书包含腾讯互娱多个原创技术方案和上线游戏应用案例,全面阐述腾讯互娱最新技术积累和创新。

很长一段时间以来,游戏开发由于技术领域广、不同游戏类型需求差异大等原因,相关的知识和技术流通不够普及,不利于从业者的进步,长远来看甚至会影响行业的持续发展。我们希望将腾讯互娱在上线项目中得到验证,且具有一定的通用性及时效性的前沿技术精华,编撰成书,与行业探讨共享,希望这本书能成为一小步,促进更开放的未来。

本书由多位资深技术总监编辑审校,10多位从事一线技术研发和前沿创新的技术专家执笔撰写,筹备时间长达18个月,累计更新迭代6个版本。涵盖游戏数学、游戏物理、计算机图形、人工智能及后台架构、游戏脚本系统、开发工具6大技术领域,共计40万字。从重要的基础概念开始一直讲到深入的技术细节,具有非常强的实践和参考意义,希望帮助游戏爱好者学习入门,游戏开发者精进技术。

《无限法则》的船只模拟方案

船只模拟在游戏中比较常见,无论是帆船、汽艇还是游艇,在模拟上都可以简化成动力、浮力和水的阻力的叠加,如何近似地计算这些力,从而在物理引擎的模拟下有逼真的表现,是一个难点。本方案能适应各种天气的水面,也能充分发挥各种类型船只的特点。

《最强NBA》写实模型优化方案

本方案适用于需要大量写实风格的真实角色以及超大量动作(几千套)的游戏,如体育竞技类游戏。本方案主要围绕着动作资源和性能优化两方面,对移动端写实角色提出一种优化的制作和实现方案。

MOBA手游的摇杆移动解决方案

MOBA手游中,摇杆移动会有遇到障碍物后绕障碍物滑行的问题,通过一种基于SDF的解决方案,为玩家提供更好的体验。

MMORPG的体素优化方案

《天涯明月刀》项目组曾分享体素的使用,体素在游戏中可用于行走、飞行、摄像机等碰撞检测,但因内存过大,难以普及。本方案通过体素内存和性能上的优化,减少内存需求,提升运行效率。

MMORPG的有限多线程模型

MMORPG 因涉及大量视野的感知,80%以上的性能消耗在和视野有关的模块上,而低于20%的时间执行剩下所有的逻辑,后者的开发成本却占整体的80%以上。本次介绍的有限多线程模型,可以平衡开发成本和性能问题。

酷跑类游戏的路径系统方案

在酷跑类游戏中,通过一个路径系统,人物的移动靠路径引导,并且在路径上有物理运动(走、跑、跳和碰撞反馈),实现一些有趣的、弯曲的跑动场景,例如滑轨、过山车跑道等。

寻路算法的优化方案

本方案介绍跳点搜索(JPS)算法的效率、多线程、内存、路径等优化方法,通过加速跳点的寻找或减少需要拓展的跳点数目,来降低寻路时间。

C#代码转Lua 代码的翻译方案

使用本方案,在开发时可以使用C#,在发布时会将C#代码翻译成Lua 代码,可以兼顾C#的开发效率,又享受Lua 动态语言的便利,适用于有代码热更新诉求的Unity手机游戏。

虚幻引擎4集成Lua方案

Lua 作为一种轻量的嵌入型脚本语言,在游戏开发中得到了广泛应用,提高了游戏业务的开发效率。本方案主要介绍如何将Lua 集成到虚幻引擎4中,使得可以用Lua开发虚幻4游戏。

游戏AI开发框架组件behaviac

behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具。本方案首先概述了behaviac的工作原理、行为树的核心概念和behaviac对行为树的优化,然后从类型信息入手剖析了元编程在behaviac中的使用。

FASTBuild分布式编译工具

围绕C++引擎项目代码编译和材质着色器(Shader)编译两个痛点,介绍如何使用FASTBuild工具来提高Unreal 项目的开发效率。

读者评论

  • 本文不是一个吹嘘的文章,不会讲很多高深的架构,相反,会讲解很多基础的问题和写法问题,如果读者自认为基础问题和写法问题都是不是问题,那请忽略这篇文章,<a href="https://www.1680380.com/view/xingyft/pk10kai.html"> 幸运飞艇</a>节省出时间去做一些有意义的事情。

    一、开发工具
    不知道有多少“老”程序员还在使用 Eclipse,这些程序员们要不就是因循守旧,要不就是根本就不知道其他好的开发工具的存在,Eclipse 吃内存卡顿的现象,以及各种偶然莫名异常的出现,都告知我们是时候寻找新的开发工具了。

    1. 更换 IDE

    根本就不想多解释要换什么样的 IDE,如果你想成为一个优秀的 J**a 程序员,请更换 IntelliJ IDEA。使用 IDEA 的好处,请搜索谷歌。<a href="https://www.1680380.com/view/klsf_tianjin/klsf_index.html"> 天津快乐十分</a>

    1. 别告诉我快捷键不好用

    更换 IDE 不在我本文的重点内容中,所以不想用太多的篇幅去写为什么更换IDE。在这里,我只能告诉你,更换 IDE 只为了更好、更快的写好 J**a 代码。原因略。

    别告诉我快捷键不好用,请尝试新事物。

    二、Bean
    Bean 使我们使用最多的模型之一,我将以大篇幅去讲解 Bean,希望读者好好体会。

    1. Domain 包名

    根据很多 J**a 程序员的”经验”来看,一个数据库表则对应着一个 Domain 对象,所以很多程序员在写代码时,包名则使用:com.**.domain ,这样写好像已经成为了行业的一种约束,数据库映射对象就应该是 Domain。但是你错了,Domain 是一个领域对象,往往我们再做传统 J**a 软件 Web 开发中,这些 Domain 都是贫血模型,是没有行为的,或是没有足够的领域模型的行为的,所以,以这个理论来讲,这些 Domain 都应该是一个普通的 entity 对象,并非领域对象,所以请把包名改为:com.**.entity。
    <a href="https://1680380.com/view/fcssq/index.html"> 福彩双色球</a>

    Kiwi2021发表于 2021/4/9 17:06:50
  • 好用到爆的J**a技巧

    本文不是一个吹嘘的文章,不会讲很多高深的架构,相反,会讲解很多基础的问题和写法问题,如果读者自认为基础问题和写法问题都是不是问题,那请忽略这篇文章,节省出时间去做一些有意义的事情。[url][福彩双色球]https://1680380.com/view/fcssq/index.html[/url]

    一、开发工具
    不知道有多少“老”程序员还在使用 Eclipse,这些程序员们要不就是因循守旧,要不就是根本就不知道其他好的开发工具的存在,Eclipse 吃内存卡顿的现象,以及各种偶然莫名异常的出现,都告知我们是时候寻找新的开发工具了。

    1. 更换 IDE

    根本就不想多解释要换什么样的 IDE,如果你想成为一个优秀的 J**a 程序员,请更换 IntelliJ IDEA。使用 IDEA 的好处,请搜索谷歌。

    1. 别告诉我快捷键不好用

    更换 IDE 不在我本文的重点内容中,所以不想用太多的篇幅去写为什么更换IDE。在这里,我只能告诉你,更换 IDE 只为了更好、更快的写好 J**a 代码。原因略。

    别告诉我快捷键不好用,请尝试新事物。

    二、Bean
    Bean 使我们使用最多的模型之一,我将以大篇幅去讲解 Bean,希望读者好好体会。

    1. Domain 包名

    根据很多 J**a 程序员的”经验”来看,一个数据库表则对应着一个 Domain 对象,所以很多程序员在写代码时,包名则使用:com.**.domain ,这样写好像已经成为了行业的一种约束,数据库映射对象就应该是 Domain。但是你错了,Domain 是一个领域对象,往往我们再做传统 J**a 软件 Web 开发中,这些 Domain 都是贫血模型,是没有行为的,或是没有足够的领域模型的行为的,所以,以这个理论来讲,这些 Domain 都应该是一个普通的 entity 对象,并非领域对象,所以请把包名改为:com.**.entity。[url][幸运飞艇]https://www.1680380.com/view/xingyft/pk10kai.html[/url]

    如果你还不理解我说的话,请看一下 Vaughn Vernon 出的一本叫做IMPLEMENTING DOMAIN-DRIVEN DESIGN(《实现领域驱动设计》)这本书,书中讲解了贫血模型与领域模型的区别,相信你会受益匪浅。

    1. DTO

    数据传输我们应该使用 DTO 对象作为传输对象,这是我们所约定的,因为很长时间我一直都在做移动端 API 设计的工作,有很多人告诉我,他们认为只有给手机端传输数据的时候(input or output),这些对象成为 DTO 对象。请注意!这种理解是错误的,只要是用于网络传输的对象,我们都认为他们可以当做是 DTO 对象,比如电商平台中,用户进行下单,下单后的数据,订单会发到 OMS 或者 ERP 系统,这些对接的返回值以及入参也叫 DTO 对象。[url][天津快乐十分]https://www.1680380.com/view/klsf_tianjin/klsf_index.html[/url]

    我们约定某对象如果是 DTO 对象,就将名称改为 XXDTO,比如订单下发 OMS:OMSOrderInputDTO。

    Kiwi2021发表于 2021/4/9 17:05:03

相关专题

相关博文

  • 无法抗拒Minecraft给予超高的自由度和探索-微访谈

    无法抗拒Minecraft给予超高的自由度和探索-微访谈

    管理员账号 2017-05-18

    本文转载自马卡卡的微信公众号(微信号为moccakids)。 游戏是人类的天性,孩子们无不痴迷于游戏。即使成年人,也常常经不住游戏的诱惑,毕竟,玩总是快乐的。把教育作为游戏来看待,揭示了游戏在教育中的重要意义。但是,必须明确游戏...

    管理员账号 2017-05-18
    349 0 0 0
  • Pokémon Go呼应设计:让全世界玩家疯狂沉迷

    Pokémon Go呼应设计:让全世界玩家疯狂沉迷

    管理员账号 2017-02-23

    小编说:什么样的呼应设计会让移动游戏玩家沉迷? 那必须为玩家构建一个属于玩家本人或者被玩家认可的虚拟环境,或者说是被玩家认可的虚拟世界。在移动游戏时代,想要做到这一点并不容易。但Pokémon Go却做到了,它让全世界玩家为其疯狂,那它...

    管理员账号 2017-02-23
    157 0 0 0
  • 聊聊手游的那些惊喜与惊吓

    聊聊手游的那些惊喜与惊吓

    管理员账号 2017-02-17

    小编说:对于一个能够蕴藏巨大信息量的游戏产品而言,多为玩家准备一些惊喜的心态,是不会有错的。很多的案例和事实也证明,惊喜会给游戏带来很多产品设计师意想不到的收获,但如果惊喜运用得不好往往会编程惊吓,甚至还会给产品带来可怕的负面效果。相关...

    管理员账号 2017-02-17
    543 0 0 0