同样是游戏梦想、软件专业毕业的大学狗一枚
目前供职于某游戏制作工具公司开发相关部件
虽然题主的描述跟题目本身有一定区别,不过先按描述前来回答题主的问题
————————————————————————
目前可见的大部分“商业”游戏与“成熟”游戏的开发方式是通过游戏制作工具或者游戏引擎进行开发的,而小型游戏与实验游戏可以通过直接实现的方式来进行;
解释一下题主在题目描述中表现出来的一些疑惑:
1、工具?引擎/框架?手写?
先来给题主解释一下这三种方式。工具是说使用一些封装比较完善的软件,进行简单的配置、设定或重组,来制作游戏的过程。
一般这种制作主要考虑的方面是需要使用素材(音乐、美术等),制作过程相对简单,极少需要甚至不需要编程能力,同时是一种制作效果在极大程度上受到工具本身影响的制作方式。
同时,这也是很多公司内部的游戏设计人员使用的方式,因为这样可以让他们专注于游戏设计而忽略其他部分,也是一种适合UGC(普通用户创造价值,与专业人员创造价值相对)的开发方式。
比较典型的制作工具,比如
- RPG制作大师(RPG Maker)系列,通过素材库可以完全靠鼠标制作角色扮演类游戏;
- 吉里吉里(KRKR),文字游戏制作工具标杆(Fate/Stay Night即是由此制作);
- 橙光文字游戏制作工具,橙光平台文字游戏的官方工具,在国内普通用户中知名度 稍高,操作相对偏傻瓜化;
- 另有比较强大的 魔兽世界编辑器(Warcraft World Editor,又称魔兽地图编辑器),制作魔兽地图的工具(DotA即是用此创作);
- 银河编辑器,星际争霸2的制作工具,可以制作功能强大的星际争霸2地图。
此外,大多数支持Mod的游戏都有许多官方、非官方制作工具。
————————
游戏引擎/框架(实际上这两种方式仍然有所差异,但是由于面向的用户类似所以放在一起进行说明)是另一种用于开发大型游戏的方式。
这些引擎一般由一系列的类库、引用、文件架构构成,应该说,它是目前实现大型游戏的主要选择。
游戏引擎的主要用途是帮助游戏开发者解决一些复杂而精深且跟游戏逻辑关联不大的问题,例如画面渲染、物理计算、内存管理等等。这些技术性很强的工作,由专业的团队完成后集成在游戏引擎/框架中,让开发者专注于实现游戏的运行逻辑部分即可。
使用游戏引擎/框架需要一定的编程能力,但是不需要过多地深究编程中某些艰深难懂的领域(例如计算机图形学),仍然是为了方便开发者专注设计的。
部分引擎也具有图形界面和制作软件,但不像工具那般提供针对于非编程人员的傻瓜式操作(并非地图炮),它主要的特点凸显在能够发挥的空间要比工具大得多。
比较知名的游戏引擎/框架(本人对此方面了解不深,望发烧友补充)有
- 虚幻引擎(Unreal,其中第三代虚幻引擎由于发布过免费版UDK所以被人们熟知);
- 寒霜引擎(Cry Engine)
另外,目前还出现了专门针对个人和小型开发团队的Unity(集成引擎与制作工具),Cocas-2d(集成引擎与制作工具),白鹭引擎(Egret,H5解决方案)。它们的工作流介于制作工具和老牌游戏引擎之间(虚幻引擎的第四代产品虚幻4也向易用性这方面做了优化)
————————
最后来谈谈手写。
手写在大多数情况下不适用于大型游戏开发。前面说到了,引擎存在的意义是帮助开发者解决很多艰深的程序问题,而直接手写大多数情况下是因为不需要考虑这些问题。当你制作一款小游戏的时候,一般来说用不到引擎的性能,又不想被工具所限制,便可以尝试暴力手写啦。
手写游戏的开发流程与程序无异。
————————
实际上,每一种方式都能最终实现一款游戏,这三种方式,在实现相同的效果的时候,按照上手简单程度来说一般是:工具>引擎>手写,按照工作量来说一般是:手写>引擎>工具,按照自由程度来说是:手写>引擎>工具。
手写很难直接实现大型游戏。如果真的需要,也一般是先用手写的方式制作引擎,再用引擎来制作游戏。
2、软件工程?
软件工程对于游戏制作来说无疑是有效的。毕竟游戏的开发也是软件项目,但是首先要好好理解软件工程的意义。它并不是单纯教你一套死板的开发方法,更多的应当是启发思考,为什么需要这样的方式来管理软件的开发过程?
对于个人开发者而言,使用敏捷模式来开发小型游戏是比较常用的。这是因为个人开发者的需求往往不能在整体开发流程中保持不变(甚至一边开发一边要改)。而对于一个较为大型的工程,从每一个小原型做起,采用增量模式也是可行的。
3、实验?商业?
好好考虑一下自己开发游戏的目的。如果是为了实践知识、磨炼技能和有趣,那么学习到经验是最主要的,开发出一个小游戏或者游戏的一个系统就足够你得到很多,不过如果是为了商业发行,那么需要专业的游戏从业眼光才行,这些我不是内行,就不误人子弟了。
4、语言?
实际上任何编程语言都能完成游戏制作。你需要思考自己的技能水平,然后从“力所能及”出发。而且,语言的处境受到环境和支持者极大的影响。
不过按照它们当前的环境,非要比较的话,可以分成这么几个类别,举几个简单的例子,同样欢迎勘误和补充
被流行工具采用作脚本语言(被何工具采用),适合新手学习使用,前景火爆:
javaScript(Unity)、C#(Unity)、C++(Unreal)、TypeScript(Egret)
有流行平台原生支持(何平台),适合程序力强的人,前景较好:
Java(Android)、Objective-C(IOS)、C#(微软系)
有大量图形化类库支持,适合程序力强的人,前景广泛:
Java、C++、Python 等
浏览器支持,适合Web开发者,前景火爆:
javascript/Html5(需要学习类库,例如CreateJS、WebGL)、TypeScript(Egret支持)
傻傻没人爱,作为新手游戏开发不太适合,只能纯手写:
C 等
——————————————
顺带,我是Flash/ActionScript党(笑)
程序专业学生如何才能成为游戏制作人?
2 条评论