这篇文章主要以问题的形式给大家解答下面几个问题:

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.经验。前面提到的技术都是概括性的,每个方面深入进去都是无限的坑,只有踩过才能印象深刻。新手一般只会用而不懂为什么这么用,真正有经验的开发者不仅会用,还可以模仿出来一套几乎完全相同的框架并进行完善,遇到问题也有更多的解决思路与方案

往期热门文章:

游戏开发入门(一)游戏发展史

想做游戏开发,我应该会点啥?

如何学习大型项目的源码?

我的2018 Unreal Open Day参会总结


关注后回复“gamebook”,可获取大量游戏开发相关书籍。之后还会陆续更新更多关于面试笔试,游戏开发,虚幻引擎等相关的学习资料~

游戏开发入门(二)游戏开发概述相关推荐

  1. Pascal游戏开发入门(二):渲染图片

    Pascal游戏开发入门(二):渲染图片 渲染静态图片 新增一个Texture,然后Render出来 创建Texture,并获取尺寸 procedure TGame.Init(title: strin ...

  2. java游戏开发入门(二) - 菜单

    java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言   上一章我们创建了一个600x600的 ...

  3. Pascal游戏开发入门(三):游戏对象管理

    Pascal游戏开发入门(三):游戏对象管理 游戏中有很多类对象,例如:角色,敌人,NPC,陷阱,子弹,门等等.跟踪并处理它们之间的交互是一个有难度的事情.为了尽可能简化并使之容易维护,本节将尝试使用 ...

  4. linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)

    linux内核开发入门二(内核KO模块介绍.开发流程以及注意事项) 一.什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核 ...

  5. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  6. python游戏编程入门免费_python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  7. Games104现代游戏引擎入门-lecture4游戏中的渲染系统

    Games104现代游戏引擎入门-lecture4游戏中的渲染系统 1.有没有选人的游戏没? 2 图形学渲染理论 3 游戏渲染的挑战 1 物体很多,渲染效果的类型很多 2 需要深度适配现代的CPU a ...

  8. Games104现代游戏引擎入门-lecture2游戏引擎层次

    Games104现代游戏引擎入门-lecture2游戏引擎层次 1 游戏引擎的层次 1 工具层: 2 功能层 3 资源层 4 核心层 5 平台层 6 第三方层 2 资源层 3 功能层 4 核心层 1数 ...

  9. mapgis java二次开发_MapGIS开发平台二次开发.docx

    MapGIS开发平台二次开发解决方案 2012年8月武汉 前言 MapGIS IGSS地理空间信息共享服务平台解决方案产品,在超大规模.虚拟化的硬件架构基础上,提供以微内核群(MicroCore)为支 ...

  10. 乐鑫Esp32学习之旅 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。(附带设备端+PC端源码)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

最新文章

  1. 联手小米,雀巢中国推出健康管家Nesfinity,满足个性化生活需求管理
  2. Alpha 冲刺报告(10/10)
  3. Apache Shiro 使用手册(四)Realm 实现
  4. input js 离开事件_听说你熟练使用Vue.js,这9种Vue技术你掌握了吗?
  5. Qt状态机框架介绍(一)
  6. OpenCV学习笔记(一) 环境配置
  7. iOS 字典与字符串之间的互转
  8. android jni 结构体_Android应用开发Android JNI-c/c++调用java方法
  9. python-list列表排序问题 sort 与 sorted
  10. 快速搭建MongoDB分片集群
  11. linux下keytool生成证书_keytool命令
  12. DigWS 短消息和WapPush 快速开发指南-功能介绍
  13. 推荐的四款产品原型设计工具
  14. 关于自己看百度修改c盘下的用户名,更改了注册表里的profilelist文件,重启后恢复原始桌面并提示注销问题与解决方案。
  15. Flash在线文档阅读器::pdf、doc、docx、xls、xlsx、ppt、pptx、htm、txt、rtf、epub、csv、xdoc等
  16. 信阳发现多例蜱虫病病例
  17. 数字0~9的手写识别
  18. 2021-11-02发电机转子方程的推导
  19. 趁我酒醉后专车司机想要非礼我
  20. 你知道DAU、MAU、PCU、DAU、ARPU、KPI是指什么?

热门文章

  1. 一键修改计算机名和用户名,电脑用户名怎么改_电脑用户名(计算机名)修改方法_牛游戏网...
  2. CDA学习之Pandas - 常用函数和75个高频操作
  3. 怎么点亮段码屏_段码LCD液晶屏驱动方法
  4. “Open3d:ImportError: DLL load failed: 找不到指定的模块”解决思路和方法
  5. Caused by org.springframework.beans.factory.NoSuchBeanDefinitionException
  6. LTE学习-PSS主同步信号
  7. 薛定谔 | 小分子叠合
  8. 怎么利用支付宝当面付实现手机网站支付
  9. ExtJS教程(5)---Ext.data.Model之高级应用
  10. JavaScript网页特效-“渔夫打鱼晒网”程序设计