在编程的世界中,"做游戏"并不只是开发一款游戏那么简单。这涉及到多个层面和领域:,,1. **游戏设计**:包括游戏概念的构思、玩法的设计、故事情节的规划等。,2. **前端开发**:负责制作用户界面,使玩家能够与游戏互动。,3. **后端开发**:处理服务器逻辑,如保存数据、执行复杂算法等。,4. **网络编程**:确保游戏流畅地在网络环境中运行,包括客户端和服务端通信。,5. **图形渲染**:使用图形库或引擎(如Unity、Unreal Engine)来创建游戏画面。,6. **音效与音频**:编写脚本以添加背景音乐、声音效果等。,7. **测试与优化**:调试代码,修复错误,并优化性能。,,每位程序员可能专注于上述某一方面,也可能涉及多方面的工作。成为一名合格的游戏开发者不仅需要深厚的编程技能,还需要对游戏产业有深入的理解以及良好的团队合作能力。
做游戏属于什么程序员?
程序员是游戏产业中的老兵了。
在游戏产业刚刚开始发展的那段时间,制作一款游戏往往是一个人的事情,而那个人必须在精通编程的同时,还极富技术创造力。
时至今日,虽然许多程序已经发展到模块化,但对游戏程序员来说,岗位仍然要求他们具备较高的技术水平和创造力,因为不论游戏性和情节对一款游戏有多重要,如果没有最基本的技术支持,所有的游戏性和情节都只可能建立在空中楼阁上。
程序员必须具备技术水平和创造力的另一个原因,是为了符合玩家的需求。
无论如何,玩家都希望展现给他们的游戏,能够将现有的硬件和技术发挥到极致,他们想要更快的运行速度、更好的人工智能、更高的画面解析度、更华丽的特效和更真实和深刻的游戏置入感。所以基本上每一款新游戏都要结合新的程序技术,因为只有程序员在不断地进行着技术的革新,游戏才可能真正做到让玩家满意。
由于国内主要的开发重点都放在网络游戏上,因此从国内现有的开发环境来看,程序人员大致可以分为以下一些类型:
1、引擎开发人员(engine developers)
他们是负责构建游戏基础平台的专业程序员,与其它程序人员相比,他们更专注于开发一个可供别人利用的引擎,他们会将更多的时间和目光放在对游戏逻辑和游戏内核的研制和封装上。
2、客户端程序员
客户端程序员通常负责网络游戏客户端的研发,他们更强调游戏的画面表现和一些人机界面的效果,所有玩家在玩一款网络游戏之前要下载的客户端,就是这些程序人员的工作成果。
近年来随着游戏3D化的持续进行,客户端程序员也开始逐渐从之前的2D美术表现向3D美术表现转移,通常来说客户端程序员都是强调画面和图形的,因此站在纯程序员的角度分类,客户端程序员也可以称为图形程序员(graphics programmers)。
3、服务器端程序员
与客户端程序员相对应的是服务器端程序员,他们负责网络游戏服务器端的研发工作。由于网络游戏的特点,服务器端程序员往往更强调的是对游戏数据的处理和计算,而对游戏的画面表现并不在意,服务器端程序员必须让自己的程序能够接收和发送来自客户端的数据包,同时还要对这些数据进行相关的计算。相比较而言,服务器端程序员更强调对游戏引擎的掌握,因为游戏的服务器端是否稳定,是真正决定一款游戏能否被广泛接受的主要原因之一,同时服务器端程序的好坏,直接关系到对游戏系统的维护和优化,甚至关系到外挂等网络游戏常见的相关问题。
4、开发工具程序员(Tools Programmers)
开发工具程序员负责创建支持游戏开发的各种工具。
由于游戏的研发工作是合作的产物,因此在游戏研发的过程中,程序人员往往需要开发出一些专用的工作,用来给相关人使用,最常见的就是游戏的地图编辑器等,还有一些诸如特效编辑器、后台管理工具等。
在国内,工具程序员往往是由其它岗位的程序员来兼任,这种不明确的分工也正代表了国内游戏产业的不成熟。
5、其它程序人员
除了上述几种程序人员之外,程序人员还可以根据工作的内容,分为负责编写人机界面的界面程序员(interface programmers)、负责网络数据交换及优化的网络程序员(network and multiplayer programmers)、负责实现游戏人工智能的人工智能程序员(AI programmers)、负责将音乐音效添加到游戏中的音乐音效程序员(audio programmers)以及负责测试和保障游戏软件质量的测试程序员(QA programmers)等。
当然,并不是所有的游戏公司都会如此细致地对程序人员进行职能划分,正如前文所说的那样,行业的不成熟性让游戏公司在对岗位职能的描述过程中,充满了灵活性和模糊性,因为对国内现阶段的游戏研发来说,重要的是能否做出产品,而不是如何去进行细致的分工。
不过随着行业的不断成熟以及行业规范的持续建议,相信一个更完善的程序人员工作职能划分体系,会很快出现在所有从业者的面前,因为行业规范的过程,就是岗位职能明确的过程。