网易游戏技术启示录

“网易游戏技术启示录”旨在揭开游戏开发全流程中
各类技术岗位的神秘面纱,引领您了解其中的奥妙。
希望和大家一起探索 ,如何用双手创造属于你的世界。

课程分享

网易大咖倾情指导,探寻猪场技术秘笈,立即预约直播名额

技术留言板

Q:如果是图形学方向,可以投递AI lab么?人工智能工程师岗位会分方向么?

互娱AI lab非常希望有图形学方向的同学加入。今年2020校招人工智能研究工程师包含计算机视觉,语音处理,自然语言处理,3D建模等方向。从事这些方向研究的同学都欢迎投递简历: http://game.campus.163.com/positionList/?type=2&direction=1&positionCode=GJ1849

Q:如果想要应聘游戏运维工程师,需要具备什么技能?

我们希望同学有扎实的操作系统,网络,编程等基础知识,如有web服务,开源软件,数据库使用经验是加分项。如果您还具备优秀的动手解决问题的能力,那您就是我们最期待的同学,欢迎投递简历: http://game.campus.163.com/positionList/?type=2&direction=4

Q:引擎研发平常的工作与开发项目组之间的关系

A:引擎研发面向项目组,为所有项目开发提供服务支持,他为能做什么样的游戏圈定了一个大致的范围(当然是 极大的)。项目开发面向的是最终的用户,在引擎圈定的范围内开发吸引玩家的游戏,有时引擎范围没法满足需求, 就会给引擎研发团队提需求,不断的促进引擎的完善跟进化。两者相辅相成,共同进化。

Q:一位合格的游戏研发,应该具备哪些知识?

A:
基础:
1. 语言基础:一般来讲游戏开发者需要熟悉至少一种脚本语言(如Python),以及扎实的C/C++基础。根据不同 项目组的情况,可能还会用到C#/Java/Go/LPC等其他编程语言。
2. 数据结构/算法/设计模式等基础知识:无论客户端还是服务器,游戏都是对运行效率和可扩展性要求极高的工程, 几乎每一个模块都需要使用最优的方法去设计。
进阶:
1. 图形学知识。假如是对客户端渲染有兴趣的同学,需要补充这方面的知识
2. 客户端引擎架构知识。由于不同游戏类型之间有着巨大的差异,很多时候项目组都需要针对特定的游戏类型去修 改客户端引擎,这时候便需要用到很多客户端架构方面的知识。先进的设计理念能够让游戏引擎具备更高的上限。
3. 服务器引擎架构知识。相比于传统的互联网后端,游戏的服务端除了需要应付极高的同时并发数外,还需要具备 极低的延迟(毫秒级),所以对架构设计的要求会更高:水平扩展,动态负载均衡,高可用,实时热更新,这些特 性都会应用在游戏服务端中。
4. 其他:网络编程,操作系统,数据库等,数字信号处理,机器学习。

总的来说,游戏开发涉及的技术面非常广泛,而且由于直接面向终端(游戏玩家),技术产生的价值也非常直接, 作为开发者,会有极强的成就感。

Q:游戏开发全流程中,游戏研发的工作内容有哪些?

A:1. 参与多职能的沟通讨论。相比其他互联网行业,这是游戏开发比较有意思的地方,策划,美术,交互设计, 测试,都会和你一起就游戏的内容进行讨论,寻求最优的设计与实现方式。
2. 设计并实现游戏的基础框架,使得这个框架能够承载多变的游戏业务。这里头涵盖了底层引擎的选择与针对特定 游戏的修改,以及一个能够承载多变的游戏业务的逻辑框架。这一步往往会需要用到大量的框架设计知识。

3. 针对不同的游戏系统功能,设计与实现对应的代码模块。例如基于行为树去实现AI功能,或者实现一个低延迟的 传输协议。由于游戏的多变性,这一步需要用到的知识也非常广泛。
4. 对于上线的游戏,还会接触到运维知识,参与大规模系统的部署与运维,学习灾难恢复等技能。

Q:应届生拿到offer后,我们会如何进行培养,让新人快速成长为团队核心力量?

A:网易游戏内有非常完善的培训体系 , 从基层一路培养到管理层 , 几乎每个阶段都有对应的培训内容。对于应届 毕业生 , 我们会有为期3个月的入职培训 , 可以保证每个人都能掌握游戏开发的基本技能 , 再进入具体的项目组。 而在项目组内,除了项目组内部会有针对性的内部培训外,公司的晋升机制也会保证年轻人有足够的机会去展现自 己与创造价值。很多项目的核心程序员都是刚毕业一两年的新人,甚至有的项目主程是刚毕业一两年的新人。可以 说在网易游戏内,能力远比资历重要。

Q: 面试引擎部门需要具备什么能力?

A:首先,C++是必须要非常熟练掌握的,所有游戏引擎建立在C++之上,研发引擎需要很扎实的C++功底。
其次,要熟练掌握算法和数据结构基础,游戏引擎广泛运用各种算法进行不同部分的繁重计算,实时运行需求非常苛刻,要求算法设计尽量高效。
要求对结构体系有一定的了解,引擎的执行效率是生命,优秀的执行效率需要代码和底层结构体系结合得很贴合。

对图形学有一定的要求,尽管不是所有的分工都专注做图形,但游戏最终以图形形式呈现,大部分的工作或多或少和图形相关。
对数学特别是线性代数要求有比较扎实的基础,引擎大部分计算都涉及线性代数,不要求掌握很复杂的数学工具,但至少能熟练运用向量和矩阵运算、三角函数等初等代数知识。
对操作系统要有一定的认知,特别是现代引擎都是跨平台开发的,对不同平台和不同系统的差异能进行简单抽象,要求掌握多线程编程基础。
至少掌握一门脚本语言,建议具备动态脚本语言能力,比如python。引擎的工具链大多建立在脚本之上,快速开发容易维护,需要掌握脚本开发相关工具。

Q:有没有比较推荐的游戏引擎入门学习书籍?

A:《Real time rendering》、《GPU Gems》、《Physically based rendering》、《C++ Primer》。 也可登录网址http://en.cppreference.com 了解更多。

Q:不同项目,游戏研发技术栈的区别是怎样的?

A:游戏是一种涉及多种技术的软件项目,根据不同的游戏类型和开发需求,开发者会选择不同技术栈以最大限度地增强游戏体验,降低开发难度。

Q:游戏开发者在工作中,是如何学习和成长的?每个阶段应该如何提升自己?

A:由于游戏本身求新求变的特点,游戏开发者在工作中,需要不断的学习新知识。而且游戏类型不一样,可能需要的技术也不一样。我司更多是采取提供全方位,丰富的培训资源,如视频课程,业内大牛沙龙,技术分享文档等。你可以根据游戏需求,有针对性的学习相应的技术。

请输入正确的内容!!!

请填写您的预约信息

您的姓名*

您的手机号码*