创造2D游戏所使用的各种工具分享

当你刚进入游戏开发领域时,你总是很难决定该使用怎样的工具,语言和框架。你将面对各种各样的选择以及大量需要考虑的观点。而我和我的团队发现参考其它游戏公司的开发环境是非常有帮助的。

蹒跚而行

尽管拥有在其它领域10年以上的编程和设计经验,但是当开始开发游戏时我还是觉得自己就像个新手。我们的第一个项目《外星宠物》开始于2009年,并且在那时候只面向Android平台。Java是唯一适合初出茅庐的人所使用的语言,所以我们果断选择了它。为了创造一款2D游戏,我们并未使用OpenGL去开发游戏(这是错误的)。而因为Furdi广受欢迎,所以整个项目也因此受到广大关注。我们最终发现自己需要面对像性能和可移植性等问题。而如果我们能够从其他开发者身上吸取经验教训便有可能避免许多不必要的问题。

找到一个更好的方法

在完成《Furdiburb》并几乎快将游戏移植到iOS(使用playn)后,我们决定转向创造第二款游戏(《炼金时代》)。为了进一步扩展交叉平台开发并为未来的主机开发做准备,我们决定舍弃Java。

所以我们便开始进行各种探索。我花了将近1个月的时间去比较不同框架,工具和引擎,最终我和我的团队决定使用一种全新的开发方式,这也是我们到今天仍在使用的方式。我并不清楚为什么我们会有这样的选择。框架总是不断发生着变化,我们在一年前做出一个决定的原因可能在今天早已无效。而在之后的内容中我将简单地描述我们使用的方法以及为什么会使用这种方法。

编程

这是我们用于编写游戏程序的内容。这是我们做事的方法。结合各自不同的工具和框架是非常有效的。

框架

我们所选择的所有框架要么是开源的,要么是带有公开的代码。这对我们有很大的帮助,因为如此我们便可以根据需求做出适当的调整与紧急的修改。

Cocos2d-x—-我们的所有跨平台开发都是依赖于开放源Cocos2d-x框架。对于《炼金时代》,我们使用的是第二版。我们也将在之后的游戏中使用最新的第三版,即包含大量关于API和性能的完善。从整体看来Cocos2d-x 2D拥有突出的性能以及出色的文件编制功能。

Spine—-我们在动画制作中使用了Spine,所以我们添加了他们基于C语言的Cocos2d-x插件。

Box2D—-虽然我们还未使用Box2D发行过游戏,但是我们在下一款游戏《A Quiver of Crows》的开发中使用了这一工具。

SQLite—-Cocos2d-x提供给我们一个数据储存解决方法,但我们更倾向于使用SQLite,因为它能够帮助我们更好地阅读/编写。

语言

C++—-Cocos2d-x支持多种语言,但我们还是选择了C++,因为我们认为这是当下最友好的跨平台语言。

C—-有时候你可能会想整合一个开放源API。而有些开放源便是基于C语言进行编写。

Java—-我们仍然需要使用Java,但只是为了在Android平台上整合IAP,广告和针对于OS的功能。语言间的交流是通过JNI完成的。

Objective-C—-与Java一样,我们使用Objective-C去创造针对于iOS的功能。

脚本语言—-包含shell脚本语言和其它脚本语言。所有开发者都需要经常编写脚本,但我们却很少谈及它。这是相对简单的内容,但也是费时的内容,就像如果你和我一样因为很少使用而很难记住语法的话。我们是为了编译代码,自动化音频转化,自动化关卡创造和整合纹理而编写脚本。

开发环境

Xcode—-每个人都跟我们说Xcode很糟糕!所以我便决定尝试看看,但是我却必须承认,这已经成为现在的我最喜欢的开发环境。我们会使用Xcode进行跨平台开发以及面向苹果的编程工作。

Eclipse—-我们会在所有与Java和Android相关的开发中使用Eclipse,包括资源配置与调试。现在的Android主推Android Studio而不是Eclipse,但我们既没有时间也没有动力再去转向它了。

Visual Studio—-这同样也是个优秀的IDE。我们主要是在与微软相关的编程,调试和资源配置中使用它。

版本控制

即使你是只有一个人的团队,你也应该使用版本控制!每个人都会犯错,任何硬盘驱动器都有可能瘫痪。我们是一支拥有三个人的团队,所以从第一天开始我们便非常重视版本控制。虽然对此的解决方法并不多,但我还是想和你们分享我们使用的一些方法:

SVN—-我很喜欢SVN。它能做我需要它做的所有事(包括合并,同步,历史等等),唯一的缺陷便是它不具有较高的学习曲线。

Git—-在众多开放源框架中我们还是依赖于Git。我们会使用Git去保持实时更新,有时候还会在需要进行快速修改时用它去创造分支内容。

计算机

显然你需要使用计算机才能创造电子游戏!最初所有开发工作都是基于Linux,但是当我们开始面向iOS开发游戏时,Linux已经很难再同时应对两台或三台计算机(甚至是系统多重启动的机器)。所以我们便购买了几台iMacs并使用它们去开发游戏。幸运的是OSX中的命令行与Linux的一样,如此我们便不需要再去改变大量脚本。

图像艺术

Adobe Creative Suite—-这没有什么意外,我们的美术师使用最多的便是Illustrator和Photoshop。

Spine—-我真的极力推荐这个骨架动画工具!比起传统的逐帧动画,骨架动画能够帮助你节省更多磁盘空间。并且因为拥有像动画混合,角色蒙皮和可变形的网格等强大功能,它还能帮你节省下不少时间。

Texture Packer—-你可能会为了拥有更好的性能而想将图像打包到更大的纹理中。为此我们便选择了Texture Packer,我们还使用了他们的命令行功能去自动化打包过程。

bmGlyph—-如果你计划使用位图字体(而不是运行Truetype字体),你便需要位图字体生成器。我们选择的是OSX可兼容的bmGlyph,这对我们非常有效。

关卡编辑

以下是我们用于设计关卡和图像布局的工具。

没有编辑器!—-有时候我们不会使用任何编辑器!我们只是编写了代码。虽然这听起来很疯狂也很无理,但如果你的团队真的很小,那么放弃编写一个编辑器将能够帮助你们节省不少时间。

定制编辑器—-有时候我们会编写一个较笨拙的游戏内部编辑器去创造图像布局或设置关卡。对于笨拙,我指的是未优化,因为只有我们自己会使用这一编辑器。

R.U.B.E—-对于我们的下一款游戏,我们先是创造了一个游戏内部编辑器,然后偶然发现了R.U.B.E(游戏邦注:即Really Useful Box2D Editor,真的很有用的Box2D编辑器)。这一工具帮助我们节省了不少时间,但如果我们决定发布一个关卡编辑器的话,我们还是要创造自己的编辑器。

音乐和音频

ffmpeg—-我是ffmpeg的忠实粉丝。它真的很棒!我们是在脚本中使用它将音频转化成面向特定目标平台的适当格式。

Cakewalk Sonar—-这是一个非常强大的音乐制作程序,在一开始便带有一个复杂的学习曲线。

Garritan Personal Orchestra—-如果你想要的是orchestral VSTs(乐器),Garritan便拥有非常高的音质。我们便是使用它与Sonar结合在一起。

Audacity—-这是一个很棒的音频编辑器与录音工具。

而以下是我们虽然不再使用,但仍想推荐你们的工具:

Anvil Studio—-如果你曾培训过乐器并且能够浏览/操控音符和时间等,且想要创造MIDI的话,这对你来说便是一个很不错的程序。

Linux Multimedia Studio—-LMMS是一个非常简单的程序。你将能够使用它去创造高科技舞曲/电子乐。并且该程序也不需要你知道如何看乐谱。

结论

如今创造游戏的方法多种多样。而以上是我们选择的用于创造跨平台2D游戏的方法,并且到目前为止我们都用的很顺畅。我们最近的游戏已经面向Android(Google Play,Kindle和Nook),iOS和Windows Phone发行了。我们也将使用同样的工具和框架将我们的下一款游戏进一步带向PC,Mac和Linux等平台。

中国体育彩票网中国体育彩票网中国体育直播中国彩票中国彩票

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注