系列报道:我们是游戏人 谁让网游有了“心跳”

中国网游制造

说到程序员,很容易让人联想到“加班”这个词。事实上也是如此,程序员是一项专业性很强的职业,每天早上到公司,或者说是通宵加班之后重新回到工作岗位,他们面对的都是千篇一律的枯燥代码。遇到难以解决的问题,策划人员可以很容易地改变设计方案来实现相同的功能,然而程序员却必须在现有的技术框架下攻克难关。一个看似简单的功能程序在实现的时候往往需要重新编写整段代码。可以说,从早到晚,程序员是整个研发团队中最沉默的一群人,因此多数程序员都是性格内向、沉默寡言。毕竟除了少数天才之外,从事这种单调的工作确实不是一件容易的事。今天我们便请两位网游公司的程序员来替各位玩家答疑解惑,揭开网游程序员神秘的面纱。

Valk 28岁 网游公司客户端程序员

阿朱 25岁 网游公司服务器端程序员

网游程序员也分类

小生:谢谢两位在繁忙的编程工作中抽出时间接受我们的访问。关于网游程序员,许多玩家一直不清楚其工作性质与情况,能否请二位简单地介绍一下呢?

阿朱:网游程序员分为引擎研发员、服务器端程序员、客户端程序员三类。游戏引擎如同汽车的发动机,游戏中一切功能都必须依托它才能得以实现。我个人是一名服务器端程序员,主要工作是辅助主程序架构游戏的服务器平台并实现策划提出的一些基本功能。像《魔兽世界》里面的组队功能、副本功能等玩家所接触到的各项系统功能都是由服务器程序员来完成的。至于相关功能中需要显示的部分,则是由客户端程序员来完成,这一点Valk应该很清楚。

Valk:客户端程序员的主要工作是将策划部门提出的功能需求用美术部门提供的美术资源进行整合并展现给玩家,包括游戏中的各个UI界面的基本功能,例如《魔兽世界》的人物属性界面、《天龙八部》的珍兽界面等等。此外游戏场景的整合、各个地图的衔接、玩家各项操作的实现都是我们客户端程序员需要完成的工作。除此之外,对游戏数据进行处理并向服务器发送各种消息也是我们需要做的事。玩家下载安装的程序,就是网游的客户端,当然这不是一个完整的游戏,因为有很多关键的文件都存放于服务器上。

身体好,加班多

小生:看来二位的工作确实和想象中一样枯燥……

阿朱:其实说到我们工作很枯燥很乏味,我个人倒不这么认为。因为这是我自己很喜欢的一个行业,也是我从小的理想,并且我感觉编写代码是很有趣的一件事。或许我这样说常人难以理解,但我真的很喜欢写程序,很喜欢攻克一些技术上的难关。

Valk:阿朱算是比较另类的了(笑)。我们的工作很枯燥,而且基本上没有正常的作息时间。有时候为了实现一个功能经常是加班到第二天早上。我曾经为了修正一个BUG连续三天没怎么合眼。客观地说,这是一项很普通的工作。但是要做好,确实是需要极强的毅力和良好的身体素质。而且身体好很重要,要不然怎么经受得住没日没夜的加班呢?

网游程序员赚多少

小生:如此说来做一名合格的程序员都很困难了,更别说做到出类拔萃了……

Valk:其实我觉得恰恰相反,像我们这样的普通程序员才会工作得很累。而一些优秀的程序员实现一个新的功能,开发一项新的技术花的时间并不多。因为在这个需要很高创造天赋的行业里,程序高手阅读代码与逻辑思维的方式与常人是不同的。他们很容易用一个简单的算法实现一个复杂的指令,而普通人却很难想到这样的捷径。就算是想到了,也不能很好地将逻辑梳理清楚。当然,资深程序员的薪资待遇也是非常高的。一般来说一个项目组薪酬最高的都是主程序。作为一个程序新人,开始的时候薪酬一般不会很高,不过经过自己的努力,获得常人眼中的“高薪”是没多大问题的。

关于游戏程序员的薪酬待遇,小生在这里补充一下,很多公司都是不对外公开薪酬的,而且不同城市标准也不一样。一般来说,程序新人的月薪在2500元左右,高级程序员能拿到1万元以上的月薪。另外,游戏企业之间差别较大,重视研发的企业的程序员薪酬相对来说比较高。

网游程序爱与恨

小生:两位说说在工作中的最爱和最恨的事情吧?

阿朱:最喜欢的当然是用最简单的方法在最短的时间内实现策划提出的功能需求,当然最爽的还是每当与策划在功能实现上存在分歧的时候,最终采纳了我提出的方案来实施。这样让我有一种满足感,感觉自己好像做了策划的工作。最恨的就是辛辛苦苦研发出来的新功能因为策划提案的更改而被束之高阁。很多人一定认为我会说最恨的是修改BUG(程序漏洞)吧?其实DEBUG(消灭漏洞)是正常的工作流程,或许不了解的人会感觉这很繁琐。但是这确实是网游研发过程中一个很普通的行为。可以这样想,DEBUG表示这项提案、这项新功能仍在被采用,比辛苦做出的成果被PASS掉要好很多了。

Valk:我最恨的就是外挂了。外挂的基本原理就是修改客户端的数据包并向服务器发送欺骗信息,因此我们客户端需要涉及到游戏数据安全的维护。我们所做的就是被动地填补漏洞,封堵外挂。这种令人很郁闷,有种被戏弄的感觉。当然现在这种情况少了很多,因为随着技术实力的提高,除了相关显示功能之外,客户端很少独立实现某一项功能,而外挂的出现率与使用率也因此下降了不少。

你该怎么做?

小生:程序的工作确实不像策划那样容易让普通人轻易了解,阿朱刚才说了程序员入门不容易,请问要成为一名网游程序员需要具备哪些基本条件呢?

阿朱:要成为网络游戏程序员,首先要是一名合格的“程序员”。因此一些基本功一定要具备。例如设计模式、数据结构、面向对象技术之类的,这些知识在计算机专业的课程中会学到,也许在读大学的时候觉得这些学下来没什么用,但是在真正干这行的时候就会发现这些基础知识的运用无处不在。

此外,我认为程序员一个最重要的能力就是自我学习能力,比如说现在Windows下的游戏接口DirectX版本已经出到DirectX10.1,马上Windows7正式版出来后就是DirectX11,这些新的知识都要靠自学。当你离开学校进入公司的时候,就会面对各种各样的工具、数据库以及前辈们留下的代码,这些东西都需要迅速地掌握和理解,如此才能在公司体现出自己的价值。

至于程序语言方面,大型网络游戏的程序普遍是用C/C++编写的。不过我认为,并不需要特别在意某一门程序语言自己是否已经掌握,因为很多原理是相同的,当你学会了一个语言后再学其他语言会非常快。

Valk:阿朱说的不错,MMORPG客户端程序员需要熟练掌握的语言一般为C/C++,但现在也有网游公司使用JAVA来编写游戏,所以多掌握一门程序语言对自己总会有好处。另外还需要对数据结构有一定了解并熟悉至少一种图形库,现在使用比较多的一般是OpenGL和DX/D3D。游戏编程入门其实并不困难。当然一些基本的条件还是需要具备的,首先要喜欢游戏,对游戏编程有兴趣,要有耐心有毅力。上边几条都具备的话可以选择一门开发语言来学习,现在的开发语言很多,比如Basic、Pascal、C、C++、Java等等。选好一门开发语言后,再选择好该类语言入门的教材,你就可以正式开始学习游戏编程之旅了。在学习过程中会遇到各种各样的问题,对于这些问题,最好自己想办法解决。当然,如果身边有编程高手可以请教就最好不过了。目前网上有很多游戏MOD小组,比较知名的有3DM工作室、EPT小组等等。加入这些组织或者向这些民间游戏高手学习与请教往往能取得事半功倍的效果。目前有很多专业的研发人员,最初都是因为喜欢游戏而从事民间游戏研发,并最终走上了专业研发人员的道路。

在达到一定的水平后,可以自己试着编写一些小游戏或者小软件。对于在自己编写的程序或小游戏中发现的错误要尽全力去修改,即使再做一次也不要灰心。持之以恒地做这些事,在闲暇之余多接触不同类型的网络游戏,实现做网游程序员的梦想是迟早的事情。

小生:看来要成为一名程序员真的不是一件容易的事,相信你们二位的心得体会一定会对有志于成为网游程序员的朋友有所帮助。