游戏观察 游戏产业媒体
手机端下载
当前位置:游戏观察 > 新闻 > 研发资讯 > 正文

如何修炼成为一名优秀的游戏程序员

2015-12-02 14:36 来源:GameRes

  最近收到很多邀请,都是关于研(ban)发(zhuan)方向的应届毕业生想进入游戏行业。游戏行业相对于IT行业有什么区别?想要成为一名优秀的游戏程序员需要怎样的素质?很多人都会产生这样的疑问,那么我就试着解答一下这两个问题。当然以下也只是我个人的一些不成熟的见解,欢迎各位拍砖。

  首先,游戏行业相对于IT行业,其工作重心主要是在前端上面。因此,本文主要讨论的是前端程序员,即所谓的“Gameplay Programmer"所需要的能力和素质。

  游戏开发技术上的难点主要在于其涉及面非常之广泛,而且涉及到的每一个技术点都有相当的深度可挖。更复杂的是,每种游戏类型,其涉及到的数据结构、基础算法、shader、UI架构、AI.....等等方面都有着大量的差异。即便是最有经验数十年的开发者,也只能敢说自己精通某一类型的游戏开发,换个类型也只能慢慢再积累经验。

  作为前端游戏引擎的技术,其更新换代是相当之快的。游戏引擎的迭代速度相对于其它IT行业的开发工具相当之快,往往每隔两三年就能有较大的改进和性能提升。因此对开发者的学习能力有着相当高的要求,赖在某个技术或者引擎上吃老本是万万行不通的。

  就我个人的经验来看,自从踏入游戏行业以来,我接触到的主要技术和游戏引擎包括:Unity3D, Cocos2D, Unreal, Java, C++, C#, shader的基本知识, AI行为树, 服务器接口设计与实现, 游戏的跨平台移植...... 甚至还在PS4上做了一些开发的尝试。以上提到的技术,我不敢说门门精通,但这也从侧面体现出游戏开发所需知识量的广度。

  在引擎之外的工程实现上面,游戏开发存在着需求多变的现实。在互联网行业,一个应用的核心功能一旦确定,架构上就很少会有大改动或者全部推翻重来的情况,同类型的网站甚至完全可以使用通用的框架和架构进行开发,也有很多高水平的开源架构可供学习。而在游戏行业,核心玩法在确定下来之前,进行反复修改试错甚至全部推倒重来是常见现象。即使渡过了确立核心玩法的阶段进入内容开发期,仍然要考虑到架构的稳定性、易用性和可扩展性。与互联网行业不同的是,策划的脑洞程度往往和黑洞差不多,你永远无法预料到需求会如何变化。因此在写游戏架构时,往往需要一些更高程度的抽象和模块化封装。

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

  除了技术上的要求之外,游戏程序员还要热爱游戏,有足够丰富的游戏经验,在必要时能够当成半个策划来用。在开发时,游戏经验可以帮助程序员更好地理解策划提出的设计目标,从而在设计之初就避免走不必要的弯路。当策划提出不合理/不合逻辑的需求时,程序员有责任提出反对意见,并且参与到游戏设计中来进行修正,这一点对于项目的健康发展有着相当重要的意义。

  在我们的团队中,我作为游戏程序员,实际上也担负了一部分策划的工作。从地图场景到操作、镜头和游戏流程,自项目开始的第一天起就参与了很多细节方面的设计工作。当策划的意见和程序或是美术的想法产生冲突时,我们团队中所有的人都可以畅所欲言,挑战策划的想法去试图改变一些不合理之处。

  当然,据我了解很多团队,特别是在大公司中的团队都分工明确,程序员和美术只能按部就班地完成策划案,我个人认为这并不是解决问题的最佳方案。对于 20人以下小规模的团队而言,要确保每一个人都能够参与到游戏设计的进程中来。如果是更大的团队,至少负责设计某一部分的策划需要和相关的程序员、美术进行直接的沟通。虽然这会产生很多额外的沟通成本,但这对团队的凝聚力非常有好处。策划或许会觉得自己的设计方案总是受到相当大的阻力,但在所有人达成共识后,每个人工作的积极性都会被调动起来,而绝不是只能听策划的指示行事。策划们经常抱怨程序和美术不配合自己对游戏的修改意见,其原因不外乎就是欠缺思考,也没有让具体执行的人明白改动的意义在哪。那么,与其到了事后付出更多的成本,冒着团队失和的风险,还不如在事前做充分的沟通和讨论,这样至少让所有人都能够意识到,大家都是在一条船上的人,做的决定如果出现问题,所有参与者都有责任。

  啰啰嗦嗦说了这么多,还是总结一下成为优秀游戏程序员的要点吧:

  1. 强大的学习能力,知识面广阔;

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

  3. 积极参与到游戏设计中来,对不合理的设计进行干预;

  4. 必要时,把自己当成策划来用;

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

本网站所收集的资料来源于互联网公开信息或网友自助投稿,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您知识产权的资料,请与我们取得联系,本站会在3个工作日内删除。

游戏观察

聚焦极有价值的游戏产业资讯。打造有影响力的游戏产业媒体。

赋能游戏跨端开发,Unity于2021 ChinaJoy推出跨端移植服务