应届毕业生想进入游戏行业,你需要怎样的素质?

应届毕业生想进入游戏行业,你需要怎样的素质?

最近收到很多想进入游戏行业研发方向的应届毕业生的提问。 游戏行业和IT行业有什么区别? 成为一名优秀的游戏程序员需要具备哪些品质? 很多人都会有这样的疑问,所以我就尽量回答这两个问题。 当然,以下只是本人一些不成熟的见解,欢迎大家拍砖。

首先,与IT行业相比,游戏行业重在前端。 因此,本文主要探讨前端程序员,即所谓的“Gameplay Programmer”所需要具备的能力和素质。

游戏开发技术的主要难点在于涉及面广,涉及的每一个技术点都有相当的深度有待挖掘。 更复杂的是,每种游戏类型在数据结构、基本算法、着色器、UI架构、AI……等方面都有很大差异。 即使是最有几十年经验的开发者,也只能说精通某一种游戏开发,而只能在另一种类型上慢慢积累经验。

作为前端游戏引擎技术,其更新换代相当快。 与其他IT行业的开发工具相比,游戏引擎的迭代速度相当快,往往每两三年就有一次重大的改进和性能提升。 所以对开发者的学习能力有相当高的要求,绝对不能靠某一种技术或者引擎来吃钱。

从我个人的经历来看,进入游戏行业以来,接触过的主要技术和游戏引擎包括:Unity3D、Cocos2D、Unreal、Java、C++、C#、shader基础知识、AI行为树、服务端界面设计以及游戏的实现、跨平台移植……甚至在PS4上也做了一些开发尝试。 以上提到的技术我不敢说自己精通,但这也从侧面反映了游戏开发所需要的知识广度。

在引擎以外的工程实现方面,游戏开发有着需求不断变化的现实。 在互联网行业,一个应用的核心功能一旦确定,很少会出现架构大变或者完全推翻的情况。 同一种类型的网站甚至可以使用通用的框架和架构来开发,并且有很多高级的开源架构可供学习。 在游戏行业,在确定核心玩法之前,反复修改、试错,甚至推翻重启是常有的现象。 即使过了核心玩法建立阶段,进入内容开发期,架构的稳定性、易用性、可扩展性等问题仍需考量。 与互联网行业不同,规划往往像黑洞一样脑洞大开,你永远无法预测需求会发生怎样的变化。 因此,在编写游戏架构时,往往需要更高层次的抽象和模块化封装。

但是,“更高程度的抽象和模块化封装”需要时间和人力成本。 在时间和人力有限的情况下,是保证尽快出一个可用的demo,还是花时间开发这些基础和工具? 这里面的选择本身就是一个难点,并没有普适的答案。

游戏程序员除了技术要求外,还需要热爱游戏,有足够的游戏经验,能够在必要的时候作为半计划使用。 在开发过程中,游戏体验可以帮助程序员更好地理解策划提出的设计目标,避免在设计之初走不必要的弯路。 当策划提出不合理/不合逻辑的要求时,程序员有责任提出异议并参与游戏设计进行修正,这对项目的健康发展具有重要意义。

在我们团队中,作为一名游戏程序员,我其实也承担了一部分的策划工作。 从地图场景到操作、镜头、游戏流程,从立项第一天起,我就参与了很多细节的设计。 当策划意见与节目或艺术理念发生冲突时,我们团队所有人都可以畅所欲言,挑战策划理念游戏设计程序员游戏开发素材,尝试改变一些不合理的地方。

当然游戏设计程序员,据我所知数据报告,很多团队,尤其是大公司的团队,分工明确。 程序员和美工只能一步步完成规划项目。 我个人认为这不是解决问题的最佳方法。 对于 20 人以下的小团队,确保每个人都能参与到游戏设计过程中。 如果是更大的团队,至少负责某部分设计的策划需要直接与相关的程序员和美工进行沟通。 虽然这会产生很多额外的沟通成本,但对团队凝聚力非常有好处。 策划者可能会觉得自己的设计方案总是受到相当大的阻力,但在大家达成共识后,大家的工作积极性就会被调动起来,而不是只听策划者的指令。 策划们经常会抱怨程序和美术与自己对游戏改版的看法不符。 究其原因,无非就是缺乏思考,没有让具体的实施者明白变化的意义。 所以,与其在事后付出更多的成本,冒着团队不和的风险,还不如事前充分沟通和讨论,这样至少让大家意识到大家是同舟共济的。 如果决定出错,所有参与者都有责任。

说了这么多,我们总结一下成为一名优秀的游戏程序员的要点:

1、学习能力强,知识面广;

2、热爱游戏,熟悉同类型游戏的基本设置和框架;

3、积极参与游戏设计,干预不合理设计;

4. 必要时,把自己当做计划者;

5、不管代码写得有多烂,能把这些奇妙的脑洞实现出来的才是好程序员!