这篇文章主要以问题的形式给大家解答下面几个问题:
1.游戏是如何开发出来的,开发流程大概是什么样子的?
2.游戏相关的职位都有哪些?
3.开发游戏需要哪些技术或能力?
4.程序员一般负责的内容有哪些?
5.如何入行游戏开发,有哪些书籍与资料(建议)?
6.新手与真正开发者的差距有哪些?
1.游戏是如何开发出来的,开发流程大概是什么样子的?
原始的游戏相对比较粗糙,内容也很少,一个人就可以开发,美术与策划都由自己完成(建议看看《doom启示录》)。
随着游戏逐渐变得复杂,需要多人去合作完成,分工也变得明确。现在很多游戏开发的基本流程大概是这样的:
a.首先讨论确定游戏的基本内容,类型等,对游戏项目立案
b.程序员构建demo,初步决定最基本的游戏框架。如单机还是网游,PC、手机还是主机,采用什么引擎(在当前,某些非常简单的游戏demo也可以跳过编程,直接使用游戏引擎构建)
c.demo测试通过,策划开始对游戏细节进行设计与构建(包括剧情,玩法,关卡,数值,系统等)
d.美术需要根据当前策划设想的游戏世界,提供合适的艺术效果(包括原画,模型,特效,UI,动画,场景等),定制美术制作标准
e.程序,美术,策划三方不断的相互沟通完善游戏内容并不断的测试调优(这是最为耗时的一个流程)注意:这里策划不仅仅是思考游戏的玩法,还需要将程序员留出来的接口做各种配置,因为项目的需求变化过于频繁
f.游戏内容基本完成后,需要质检等人员开始测试,程序员修复Bug
g.游戏经过一定测试后,发布到指定的平台上
h.交由运维人员做基本的维护,发布前期一定有bug,还需要各个职能人员互相配合
注:最近几年独立游戏开始流行起来,一个团队少则一个人,多则不超过10个人,制作流程基本上与上面相似。独立游戏由于人员限制很难完成AAA级游戏或大型网游,一般靠独特的游戏风格与玩法取胜。参考Brade,Limbo,Journey等
2.游戏相关的职位都有哪些?
直接参与游戏制作
游戏策划(GameDesigner):负责游戏各个模块的设计工作。包括数值设计,关卡与资源设计,系统玩法设计,剧情文案设计(对于RPG游戏来说可能有一个单独的职位),战斗设计,AI设计等
【按照管理等级】可简单分为 普通策划、策划主管、主策、产品总监。一般招聘的时候还可能会招某一类型游戏的策划,如RPG游戏设计、FPS游戏设计。
游戏美术(Artist):负责展示游戏的艺术效果。包括原画,平面,场景,动作,角色,特效,CG设计,技术美术(TA)等
【按照管理等级】可简单分为 普通美术、美术主管、主美、美术总监。
游戏开发程序(Programmer):总的来说有逻辑程序员(GamePlay)与引擎程序员(GameEngine)两种。逻辑程序员一般又包括客户端程序( AI,战斗,通用功能,UI界面等)和服务器程序(职位比较笼统)。引擎程序一般包括客户端引擎(渲染效果研发,物理表现)、服务器引擎、游戏工具、通用逻辑引擎(如AI通用框架)等
【按照管理等级】 普通开发人员(引擎专员)、主管、主程、技术总监
【按照技术划分】所有的职位可以加“高级”,“专家”,“资深”等关键字来区别技术要求
Windows开发工程师(客户端/服务器),Unity开发工程师(客户端/服务器),Unreal开发工程师(客户端/服务器),Cocos2D开发工程师(客户端/服务器),手游开发工程师(客户端/服务器),C++开发工程师,Python开发工程师,Java后台开发,VR开发工程师,引擎开发工程师,图形学/视觉算法工程师,人工智能工程师,游戏音频工程师
音效师/配乐师(Sounds Specialist):主要是负责游戏内各种音效的制作以及配乐。这一部分有很多小型一点的公司会做外包(美术也有很多外包)
游戏制作人(Game Producer):要指全面掌握了从研发到运营整个体系知识的游戏项目的总负责人,在其管理下实现游戏研发运营一体化
间接参与游戏制作相关
项目经理:和游戏制作人的职责相似,不过更侧重管理游戏项目的进度,协调人员安排等。有一些游戏项目,项目经理与游戏制作人是同一个人
游戏支持程序:与游戏开发相关,但是并不直接参与游戏项目。如大数据分析,游戏安全工程师,平台开发工程师等
本地化人员:简单来说就是负责翻译,但是实际上工作会更复杂一些,需要根据当地的文化或者背景来调整游戏内容
视频剪辑师:负责游戏内过场动画或CG的设计。动画导演,普通剪辑师等
质检/测试工程师:负责测试游戏中的各种bug与问题,在任何一个项目里测试都是一项非常重要的工作,规模大一些的公司一般有一套完整的测试流程与规范。
运营与维护:进行运营数据分析,负责上线项目的维护与调整等
市场:负责游戏的营销与推广。如商务拓展,品牌经理,市场分析,发行渠道经理等
客服:反馈玩家问题
3.开发游戏需要哪些技术?
由于本人是程序,对其他职位的技术认识有限(简单提一下),这里主要列举游戏程序需要掌握的开发技术
a.作为一个程序员需要的基本素质:包括掌握基本语言编程,深入了解语言特性,了解计算机相关基础,设计模式等。其实就这一块很多人就很难达标,不过我们可以在做游戏的同时提升自己的基本功底
b.构建一个游戏需要了解不同平台的相关技术(如XBOX、PS4的接口对接等),但一般不需要太深入
c.需要有一定的引擎知识,尽可能熟悉引擎各个功能的使用
d.常见的脚本技术(lua等)
e.随着3D游戏的发展,需要对图形图像知识有一定深度的理解(即渲染技术(涉及到非常多的数学知识),非常复杂与庞大的模块)
f.网络游戏需要掌握基本网络基础知识(TCP/IP,Socket,Http),了解同步机制 。对于专业的服务器程序,需要非常熟悉网络编程、跨平台通信、网络通信优化、常见游戏服务器架构等
g.动画技术(骨骼动画,IK等)
h.了解会使用物理引擎
i.基本的场景管理技术(八叉树等)
j. AI相关技术,游戏中大部分的AI还是比较简单的,并没有用到机器学习,不过现在很多公司也在尝试着用深度学习处理游戏AI(“For Honor” 里面的动画系统就使用到了)
美术:除了基本的美术功底,需要熟练使用某些工具(Maya,ZBrush,游戏引擎等),对美术工作流有一定的认识与理解(各种贴图的使用,常见的优化。技术美术对这些方面的要求很高)
策划:需要掌握一些常见的脚本,熟练使用相关的工具(当然最重要的还是游戏设计能力!)
图片转自知乎:
https://zhuanlan.zhihu.com/p/24424967
3.程序员一般负责的内容是什么?
a.实现策划需求,简单一点的是小的逻辑功能,复杂的可能要提供一套完整的逻辑框架
b.提供内部工具,加快开发。比如当前引擎不支持某种NPC对象的高亮显示,无法拖拽资源到游戏里面,这些需要程序员提供相关插件或工具来提高项目开发效率
c.修复Bug
e.优化体验,也就是常说的性能优化,提高帧率,减小内存开销等等
前面提到过程序员也分为多种(一般分为逻辑程序员和引擎程序员),目前规模较大的公司会分的比较细,所完成的内容也有很大差别。
逻辑程序一般需要频繁地与策划沟通,直接对项目需求进行开发的程序 。
引擎程序一般是研究引擎功能,优化引擎(提示表现,提高性能等),提供通用框架或工具。
4.如何入行游戏开发,有哪些书籍与资料(建议)?
a.夯实基础(语言,数据结构,算法,网络,操作系统,图形学等)
b.对游戏开发有一个基本的认识,看一看相关的书籍(如《游戏引擎架构》,文末有相关书籍的分享),文章(比如我的这个系列),视频(GAD上游戏开发入门系列),遇到不懂的名词就去查去研究,网站(有很多,找个时间单独分享一下)
c.实践!选择一个游戏引擎(Unity,UE)然后动手开发游戏demo,参考其他游戏demo,尽可能的应用学过的游戏知识。多思考,多理解
d.想办法进入业界,从项目中吸取知识。只要程序基础不赖都是有机会加入该行业的
5.新手与真正开发者的差距有哪些?
a.技术功底。对于一名合格的开发者,应该熟练掌握游戏中一个或多个方面的技术,在面对各种问题时都可以迅速上手。因为熟知原理,解决问题的速度也相当快。而很多新手遇到问题经常是盲目的搜索并尝试,效率很低,不过也不用过分焦虑,这是新手必须经历的阶段之一
b.经验。前面提到的技术都是概括性的,每个方面深入进去都是无限的坑,只有踩过才能印象深刻。新手一般只会用而不懂为什么这么用,真正有经验的开发者不仅会用,还可以模仿出来一套几乎完全相同的框架并进行完善,遇到问题也有更多的解决思路与方案
往期热门文章:
关注后回复“gamebook”,可获取大量游戏开发相关书籍。之后还会陆续更新更多关于面试笔试,游戏开发,虚幻引擎等相关的学习资料~