一、筹备两年,60万字诚意续作《腾讯游戏开发精粹Ⅱ》发布
腾讯游戏开发精髓II
#第一部分
人工智能
第一章,基于照片的角色捏脸和个性化技术
角色的个性化已经成为现今游戏的一个常见需求。根据用户的照片,生成带有用户特征的游戏人脸将会提升用户的角色代入感和游戏体验。本方案设计了一个智能捏脸系统,可以根据用户上传或拍摄的人脸照片进行自动的三维人脸关键点检测,将标准的人脸根据游戏风格进行相应的变化,生成保持用户人脸特征且具备游戏风格的三维人脸模型。
第二章,强化学习在游戏 AI中的应用
通过利用深度强化学习,我们在竞速类、格斗对战类等品类的游戏上建立了快速的游戏 AI生成管线。它只需要部分的人工参与,即可以批量地生成高质量的BOT AI。这些BOT AI在竞技水平上不仅能够比肩人类顶尖玩家,也能适配各个段位的人类玩家。与此这些BOT AI在拟人性上也相比传统方法有更佳表现。
第三章,多种机器学习方法在赛车AI中的综合应用
第三章以研发高强度的竞速赛车AI为目标,介绍遗传算法、监督学习和强化学习在赛车AI中的研究和应用。文章首先介绍利用遗传算法进行程序自动化调参解决人工调整AI参数的复杂问题,以得到能力较为不错的赛车AI参数;再采用通俗易懂的语言,介绍监督学习和强化学习训练赛车AI模型的基础知识以及落地过程中可能面临的挑战,并对它们的应用做简要分析,以便于缺少相关知识的游戏从业人员了解这两项技术。
第四章,数字人级别的语音驱动面部动画生成
本章论述了一种基于机器学习方法的语音驱动数字人处理框架和相关算法。与传统的基于规则或数据驱动的Lip Sync(Lip Synchronization,唇形同步)解决方案不同,该方案分析了高保真数字人面部绑定系统的制作管线和数据特点,并从机器学习的角度对该绑定进行抽象,定义了一个语音-控制器的端到端学习框架。基于这个框架,提出了一种基于深度学习的语音驱动面部动画模型。
#第二部分
计算机图形
第五章,实时面光源渲染
随着基于物理的渲染在实时渲染领域广泛应用,面光源变得越来越重要。面光源与经典的方向光、点光源等光源的区别在于其解为一个积分式,求解方向中Linearly Transform Cosine(LTC)由于精确性、较好的性能、支持多种类型的光源成为游戏等实时渲染应用程序的首选方案。然而要将LTC在移动平台的生产项目中使用仍然存在不少挑战。本章将对一系列在实践中遇到的问题展开讨论。
第六章,可定制的快速自动化全局光照和可见性烘焙器
本章提供了一个可定制的快速烘焙方案,底层提供基于Voxel(体素)的快速构建和光线追踪,上层根据需求提供若干烘焙实现。该方案具有硬件要求低、可快速迭代、全自动等优势,如《王者荣耀》的对战地图可以在几秒之内预览烘焙效果,大大提升了项目美术迭代的效率。
第七章,物质点法在动画特效中的应用
最近一段时间,高质量的动画与电影中(尤其是好莱坞)开始使用一种称为物质点法(Material Point Method)的新的物理模拟技术。我们基于物质点法开发了可以用于制作对视觉细节要求较高的CG过场动画的Physion,可以充分发挥最新的GPU架构提供的强大计算力;与传统的CPU模拟器相比,计算效率提高了数百倍,在PC端绝大多数场景下可以达到实时或者准实时的速度。
第八章,高自由度捏脸的表情动画复用方案
本章所阐述的技术方案帮助游戏美术师高效制作捏脸控制器,赋予玩家更高的自定义形象的能力。面部表情捕捉方案可以生产高质量的表情动画美术资产。表情补偿技术将细腻的表情融入玩家捏出的特征脸。通过针对移动端的表情系统性能优化和LOD方案,使得更多的手机游戏玩家可以体验到这一切。
#第三部分
动画和物理
第九章,多足机甲运动控制解决方案
本章总结了一套以程序化动画为核心,结合动画序列、曲线控制及物理模拟等手段来增强表现力的解决方案。该方案不仅从根本上解决了滑步问题,还能为不同形态的机甲快速生产和迭代运动动画,使小团队在人力资源有限的情况下,依然能高效地打造高品质的机甲运动效果。
第十章,物理查询介绍及玩法应用
物理引擎的应用是游戏开发的重要组成部分。本章主要介绍物理引擎中的物理查询功能,同时附带相关玩法的实现方法。通过阅读本章,读者可以了解物理查询的作用和基本分类,以及3种查询类别的算法和相关玩法实践。
第十一章,基于物理的角色翻越攀爬通用解决方案
我们开发了CP(Collison Probe,碰撞探测)系统,该系统基于物理系统的场景查询(Scene Query)功能,适用于各种不同的物理系统接口。本章介绍的算法在游戏《无限法则》中已经正式使用。开发中的难点主要来自对游戏中复杂情况的归纳和算法的复杂度控制。
#第四部分
客户端架构和技术
第十二章,跨游戏引擎的H5渲染解决方案
本章介绍一种方法,通过实现一套精简版本的HTML5渲染引擎来屏蔽不同游戏引擎、平台的底层差异,同时保留游戏引擎必要的交互体验,可以采用H5的开发方式来快速实现运营活动开发,最终做到开发和运营分离,运营部门自主开发运营活动而不依赖游戏发版节奏。
第十三章,大世界的场景复杂度管理方案
在相同的硬件平台下,复杂度管理方案很大程度上决定了大世界场景里填充内容的数量和质量。本方案基于控制理论中的负反馈控制系统,最终可达成:1、离线检测工具,自动分析场景各区域复杂度。2、运行时根据平台设定,智能控制场景内容的加载卸载、显示隐藏、LOD控制等。3、根据平台负载能力和当前负荷,更有效的控制运行负荷,获取平滑的fps。
第十四章,基于多级细节网格的场景动态加载
大型次世代手游在移动端极易遇到大规模场景加载导致的性能问题,Level Streaming(关卡流式加载)是用于解决大场景加载的一类技术。本章将介绍一种基于多级细节网格的Level Streaming技术,它可以提高加载速度,降低加载内存,改善加载卡顿等性能问题。
#第五部分
服务端架构和技术
第十五章,面向游戏的高性能服务网格TbusppMesh
TbusppMesh是一款腾讯自研的适合游戏微服务化的ServiceMesh(服务网格),提供了有状态服务一致性Hash路由、选主、容灾等适合游戏业务场景的核心能力,助力游戏微服务化改造上云并提高CI/CD效率。本章从数据通信、组网策略、有状态服务3个方面介绍TbusppMesh的技术原理和实现。
第十六章,游戏配置系统设计
本章主要介绍一种便捷的游戏配置管理方式,它实现了可视化管理、版本历史和回滚和一站式发布。本章在讲述游戏配置系统的会对整个游戏配置从设计、生产到使用进行详细介绍,并在Github上发布了一个Demo实例供读者对照参考。读者可以在Github上探索 configmanagedemo查看Demo具体实现细节。
第十七章,游戏敏捷运营体系技术
我们提出的一套不依赖版本的敏捷运营技术DataMore及其服务体系,基于游戏的日志以及标准化API接口,借助于实时计算能力打造的与游戏解耦的运营工具链,帮助游戏实现敏捷快速运营。
#第六部分
管线和工具
第十八章,从照片到模型
2019年,举世闻名的巴黎圣母院被烧毁。所幸早年已经有学者对整个巴黎圣母院进行了完整的扫描和建模,这对后续的重建工作起到了重要的指导作用。本章搭建的Photogrammetry生产管线可以用于从普通大小物件到大地形、大型物件模型的重建,将从拍摄照片到输出可用于实时渲染的模型的整个流程智能化、自动化,以便用较少的人力、较快的速度完成大规模室外场景的3D重建工作。这将对游戏制作、数字化展览、数字化记录保存历史文化遗产、科学研究等起到很大的帮助作用。
第十九章,一种可定制的Lua代码编辑检测工具
Lua语法简单、使用灵活,在游戏开发中十分流行。但其生态并不完善,各插件在对Lua项目的支持上仍存在一些不足。本章遵从微软LSP(Language Server Protocol,语言服务协议),前端使用TypeScript语言,后端使用Go语言开发了一款跨平台Lua工具。目前主要提供了VSCode插件的应用LuaHelper。
第二十章,安卓平台非托管内存分析方案
安卓平台一直缺乏简单易用的非托管内存数据采集与分析工具。对于大型游戏项目来讲,没有合适的底层工具,内存分析就是噩梦般的存在。本章旨在通过整合安卓平台中的相关技术,提供一种易用且高效的非托管内存数据采集和数据分析解决方案。
第二十一章,过程化河流生成方法研究与应用
目前比较有特色的河流生成方法是游戏《地平线:黎明时分》中提出的方法,考虑了阶梯瀑布、山谷侵蚀、宽度变化等河流自然特征,能够得到比较生动的效果。本章借鉴地平线方法,在此基础上进行补充和扩展,实现一套鲁棒可控的河流生成系统。
本书获多位业界高层、行业专家力荐
腾讯公司把自己技术人才多年研发的经验积累编篡出书,无疑是对中国游戏技术研发的巨大贡献。
——姚勇,北京永航科技有限公司CTO
从业的开发人员或有兴趣在相关技术方向发展的同学能从中获得行业中较新的且已经落地的技术的第一手资料。
——王祢,Epic Games China首席引擎工程师
——金小刚,浙江大学-腾讯游戏智能图形创新技术联合实验室主任
本书由鹅厂游戏的技术大牛出品,记录和分享了在面对技术时代变迁时,在大型在线游戏作品中如何应用AI技术和场景落地的经验、教训,以及他们的思辨路径。推荐给喜欢游戏产业,喜欢AI新科技的朋友们。
——张志东,腾讯主要创办人
我们尝试将项目中积累沉淀的前沿技术方案与全行业共享,希望能激发出更多的想象力和创意,不断丰富游戏技术在不同场景、产业运用的可能,共同探索产业契合未来的可能路径。
——马晓轶,腾讯集团高级副总裁
作为《腾讯游戏开发精粹》的续作,本书维度更丰富、技术更前沿,希望为读者朋友们提供更好的阅读体验。期待能以本书为契机,促进游戏行业更多的分享交流,推动游戏行业良性发展,助力游戏人成就游戏梦想。
——夏琳,腾讯游戏副总裁、腾讯游戏学堂院长
《腾讯游戏开发精粹Ⅱ》和时下的热词Metaverse(元宇宙)遥相呼应:腾讯游戏在计算机图形学、动画上的实践,工业化的生产流水线,各种AI能力和应用,大世界的C/S架构……凡此种种,均有助于读者搭建自己的虚拟世界。
——崔晓春,腾讯游戏副总裁、腾讯游戏公共研发运营体系负责人
对于正在从事游戏开发或对游戏开发好奇的读者,本书既可以拓展知识面,又可以对照着动手实践。
——徐成龙,腾讯互动娱乐天美工作室群技术中心副总经理
《腾讯游戏开发精粹Ⅱ》是一部技术好文集锦,囊括了当前游戏开发所必需的多种关键技术。
——陆遥,腾讯互动娱乐光子工作室群技术中心助理总经理
本书由腾讯游戏多位资深技术专家共同编撰,涵盖了游戏研发各重要领域的知识,代表了腾讯游戏前沿的技术实践。
——朱新其,腾讯互动娱乐魔方工作室群魔镜工作室总经理
《腾讯游戏开发精粹Ⅱ》贵在实战和实践,除技术和算法外,我们更能看到这些技术和算法是如何应用到具体的项目中最终面见玩家的,是一个有实战意义的完整分享。
——安柏霖,腾讯互动娱乐北极光工作室群技术总监
希望本书用心编撰的内容能给予读者更多启发,我们一起知行并进,持续探索前沿技术对游戏开发的内在提升。
——沈黎,腾讯互动娱乐 NExT Studios负责人
二、一个高级java工程师需要具备什么能力和技术
宏观方面
一、 JAVA。
要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)
工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您
对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经了。
二、设计模式。
其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代
码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。
但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?
三、 XML。
现在的系统中不使用XML几乎是不可能的。XML的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解
XML,包括它的语法,结构。您还需要比较熟练的使用解析XML的一些API,比如JDOM,SAX等,因为在我们一般的项目中,XML往往担当系统配置
信息的作用,您需要用这些API解析这些配置信息,开发完美的项目。
四、精通使用一种或两种框架。
“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开
发使你可以省出很多的开发成本”。这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您
会想到把SQL语句与您的JAVA代码分开,再比如您会考虑把您的业务逻辑配置到XML或者数据库中,这样整个项目就很容易扩张了。
五、熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及SQL的编写。所以为了
更好的为国家做贡献,建议您还是多了解一些主流数据库,比如SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。如果您不是“科班”出
身,您还需要补充一些数据库原理方面的知识。
六、精通一种或两种WEBServer。
因为作为JAVA工程师,特别时
想成为高级JAVA工程师的您,您不可避免地要部署您的项目到WebServer上,而且只有当您精通一种WebServer,您才可能最大限度地使用它
的资源,这往往可以节省很多时间和精力。
七、 UML。
您肯定想成为高级工程师,因此您有必要了解或熟练或精通UML,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队
中,UML是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但
却很重要。
八、站在高度分析问题:
这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而
不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在
您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。
九、工具。
您在这个阶段可能接触到不同的工具了,尽管您还需要使用JB或者IDEA,但能可能对
ROSE,Together要多了解一些,因为您要画UML了。不要再对Dreamweaver等HTML编辑器情有独钟了,那些JSP页面让初级程序员去写吧
微观方面
1.Core Java部分
这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:
a.面向对象编程思想(封装继承多态接口)
b.字符串处理
c.java.lang包,java.util包等常用包
d.java异常处理
2.Java高级部分
a.Java I/O流
b.Java多线程技术
c.Java网络编程
d.Java Swing
后两项可以了解即可,如果项目需要可以深入研究
3.前端基本技能
* HTML+ CSS网页开发
* JavaScript
* Jquery
*浏览器兼容性 CSS hack(了解)
4.熟练使用JSP+ Servlet进行开发
5.MVC设计模式,原理,以及相关框架,如Struts
6.SSH框架
7.缓存技术 session& cookie
8.熟练使用一种以上Java开发工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟练使用XML
JDOM w3c.dom SAX
10.Java设计模式
工厂模式,单例模式==
11.Java反射机制
反射的各种用法
12.了解或熟悉 C, C++,.NET
13.熟悉JDK的配置,环境变量
14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==)
oracle:视图,索引,存储过程,触发器,游标,包,常用函数==
15.数据库原理
事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案==
16.JDBC,连接池
17.Ajax,反向Ajax
18.HTTP协议,request和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用过Linux/Unix系统,可以编写shell脚本,可以在Linux上部署项目
20.了解windows系统批处理脚本bat
21.了解HTML5,最好学习过
22.熟悉一种JS框架,如Prototype
23.J2EE原理熟悉一种以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一门脚本语言,如python,ruby
26.了解php/ asp
27.了解ftp协议及原理
28.熟练使用Junit测试,熟悉Mockito等测试工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。
31.了解Flex(不学也没关系)
32.了解敏捷开发模式
33.工作流workflow至少用过一种,如OSworkflow,了解原理
34.使用过VPN了解其原理
35.熟悉jstl表达式和el表达式
36.熟悉webservice,WSDL,SOAP
37.图片处理,如图片上传,预览,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技术,JSON+AJAX
40.分页技术,最好自己实现过不仅仅是用过要知道原理
41.Java Mail
42.Java读写txt,excel,JXL技术
43.JVM原理,JVM内存管理,GC,Java堆栈池
44.熟练使用下面的工具:
office办公软件,word,excel,ppt等
plsql,sqldevelop数据库开发工具
outlook大公司都用
ue编辑器
浏览器控制台,调试
SHH/PUTTY远程
45.UML建模工具Rational Rose等
46.使用log4j
47.使用过开放Api如百度,腾讯街景,新浪微博等
48.页面静态化技术(伪静态页面)
49.报表技术,使用过报表制作工具,如水晶易表。
50.定时任务,如Spring batch,学会自定义batch任务(不适用第三方工具)
51.了解uuid
52.b/s和 c/s架构
53.正则表达式
54.了解jndi jms
55.ERP
56.UNICODE编码,乱码解决
57.开源网络编辑器,如ckEditor
58.二进制原理
59.使用过,了解过开源论坛框架,如discuzz
60.GWT,Closure框架
61.了解大数据,云计算
62.搜索引擎搜索技术
63.软件工程,项目管理
三、腾讯工资是多少
像BATJ这样的互联网大厂对招聘的要求还是比较高的,当然薪资待遇也是很高的,下面以腾讯为例。
1、腾讯薪资构成
鹅厂薪资结构:一般是12+1+1= 14薪。
鹅厂的标准薪资是14薪,但是通常能拿到16-20薪。
年终奖看部门盈利情况,一般是 3个月。
虽然说鹅厂的薪资结构一般是 16薪,但实际上从 offer看不乏 18薪的团队。
并且鹅厂作为项目众多的大厂,内部不同事业线之间也是存在不小的薪资、股票差距的。比如鹅厂的游戏团队薪资、年终奖一般都比较高,而腾讯云的股票份额则要高于游戏团队。
根据去年腾讯对外发布的校招薪资,可见鹅厂对于毕业生的待遇还是不错的:白菜价22-25w,SP级25-35w,SSP级35w+...,不少算法类岗位更是开出了50w的高薪。
而从社会招聘来看,在高校应届生已经达到875万人的严峻情况下,各互联网大厂薪资不减反增,从各大招聘网站显示,大厂“白菜价”Offer基本上15w起跳,腾讯、字节等头部名企基本岗位都向20w年薪看起的。
2、鹅厂的高薪程序员具备什么要求
鹅厂工程师在去年调整了职级,取消了原有的 6级 18等(1.1-6.3级)的职级体系设计,将专业职级体系优化为14级(4-17级)。
与之相对应的是,统一置换为“专业职级+职位称谓”。这是由于虽然T3序列的 title都是高级工程师,但每个小职级范围之间的薪资差距并不小,T3-3级别的薪资比 T3-1级别要高出 30-60W/年,且 3-1级别几乎没有股票。
再按照人才需求的逻辑来看,鹅厂的程序员可以分为四个大类:
想法层:产品经理、UI设计、策划;
实现层:Web前端、Java、C++、iOS、Android、Python;
维护层:Linux运维、Web安全、大数据开发、云计算;
推广层:网络营销。
就目前来看,我们把想法层、实现层、维护层、推广层都定义为可学习的项目的话,实现层和维护层最稳定,但是也最辛苦。
而对于想法层和推广层来讲,推广费用是有限的情况下,如何做到推广结果的最大化,这是一个非常难的问题。所以这也就是很多人为什么想做程序员(处于实现层和维护层)的原因,虽然辛苦,但是高薪又稳定。
3、鹅厂这样的大厂,招聘工程师需要什么技能?
互联网大厂招聘人才,对应聘者有什么要求?一般对于应届毕业生的要求是毕业于名校、成绩优异、面试表现好。社会招聘一般是具有多年工作经验的高技能及项目经验丰富的人。
以不久前发布的招聘需求为例,Switch《新超级马力欧兄弟U豪华版》过审,而运营单位为“深圳市腾讯计算机系统有限公司”。
根据腾讯招聘网站显示,继此前的Switch游戏移植客户端开发和Switch产品策划等招聘外,日前腾讯又发布了更多关于Switch的岗位招聘。
招聘要求显示,Web前端开发工程师的岗位主要负责Nintendo Switch国内相关的Web需求,包括官网、商城以及相关的内部运营系统开发。
而其中Node.js的技能要求却通常是Web全栈工程师的必备技能。可见鹅厂对于人才的选择是比较严苛的。
根据当前的市场需求,互联网大厂们对于普通前端开发工程师的需求逐年锐减,大厂对于人才产生了强烈的“T”型人才需求,即在一样精的基础上还要“百样通”。例如Web全栈工程师的招聘数量高达21万之多,对应的人才却很少,因此高薪也是可以理解了。
对于想学习Web全栈工程师、架构师等无基础同学来说,北大青鸟、课工场等优秀品牌都是不错的选择。课程根据招聘需求制定,包含全部分布式微服务技术,对标鹅厂T4、阿里P8级别。
希望我的回答对你有所帮助!