编写2D游戏的最简单,最有趣的方式?闪?XNA?其他引擎?[关闭]


20

这是一篇详细介绍我的搜索的文章,其中介绍了我对爱好者游戏程序员最有趣的搜索方式,以利用自己的空闲时间来制作游戏。

我的要求: 我首先看过Flash,做了一些小型游戏,但对性能感到怀疑。我想制作一个相当大的策略游戏,其中有数百个单位同时战斗,其中包括爆炸和动画。也可缩放地图。我看到Adobe为Flash提供了一个新的3D API,但是我不知道这是否还能提高2D性能,我在他们的MAX10会议上找不到与该问题有关的任何内容。您是否说Flash是轻松制作大型2D游戏的好技术?我真的很喜欢Actionscript,而且我喜欢Flash中的一切都非常容易。有几种可用的引擎,使其变得更加容易。

我只是为了好玩而已,如果有合适的动画/粒子编辑器可用,并且如果我要使用的引擎可以在多个平台上使用,那就更好了。(这样一来,更多的人就可以玩我的游戏了)。我也想在许多移动平台上使用它。(因为某些原因,我喜欢触摸输入)

我确实很了解XNA框架,但是没有适用于它的好的引擎,它只能在Windows上运行,这是一个很大的限制。更大的是,每次要将游戏分发给某人时,您都需要安装XNA可再发行组件。如果使用XNA,则必须自己制作所有工具,并且可能必须使用WPF制作它们。(我很想使用Adobe AIR制作工具,但是不幸的是,Flash中的图像处理等API比XNA / WPF中的API要差得多。)现在,我知道我可以自己制作引擎了支持每个平台,但坦率地说,通过API进行大量的工作。毕竟,我想做一个游戏,而不是引擎。

因此,问题就变成了:是否可能有一个可用于2D开发的跨平台(免费或免费开发?)引擎? 我更喜欢:C#,Actionscript。如果工具集高于平均水平,我不介意使用c ++,但我高度怀疑是否存在类似的东西。请证明我错了:)总结:我想使用Flash,但是我不知道它的扩展性是否足够好。我不是脚本编写者,我想要一些可以在适当的IDE中使用的真实API。

仅作为参考,我研究了几种选择,实际上我已经寻找了很长时间。您最终会帮助我做出很多决定。

  • 从功能上讲Flatredball引擎将是理想的选择。但是我尝试了他们的工具,坦率地说,它们太可怕了。绝对无法使用,我需要确定自己做。我没有看过他们的API,但是如果他们的工具太差了,我就不会再去研究了。

  • Unity3D。这很不错,但是我真的不需要3D,而且这是很多……需要学习的工作。我也不喜欢在不同平台上使用它是如此昂贵,并且只能通过脚本编写代码。您必须分别购买每个平台。编辑器的可用性是中等的,产品的整体性能足以满足大多数目的,但是我自己学习它可能会过头。

  • Shiva 3D。看起来足够好,但是再说一遍:我真的不需要3D。在我看来,编辑器的可用性比Unity3D差一点,而且我不清楚如何开始编程。我认为它需要C ++进行编码,所以这也是负面的。我想玩得开心,而C#很有趣;)

  • SDL。坦率地说,我仍然需要移植到所有这些不同的SDL实现。而且我不喜欢OpenGL风格的编程,这太丑陋了。它需要c ++,我知道可能有一些包装器,但是我不喜欢使用包装器,因为...

  • 违规。有很多功能,但支持似乎很少,而且针对发烧友。C#绑定被反复删除。我不是引擎迷,我只是想做一个游戏。我认为Irrlicht不会发生这种情况。

  • Ogre3D。工作太多了,它只是一个图形引擎。也没有多平台支持和c ++。

  • Torque2D。使用会花费一些钱,而且我没有听到很多关于支持和文档的好东西。每个平台还需要额外付费。


FRB SDK工具很糟糕(尤其是胶水,我没有使用它),但是节省了编写它们的时间,而且如果必须编写自己的工具,文件格式也很简单。该API并没有那么糟糕,似乎适合该范围,目前最大的问题是缺少PC和Xbox的XNA 4.0端口。此外,XNA redist和其他先决条件也可以作为安装的一部分-使用clickonce,您可以准备进行自动更新和部署。
奥斯卡·杜夫伯恩

好吧,我的意思是我不会使用它们,因此这些工具毫无用处。除了糟糕的用户界面/一般感觉之外,他们还让我着急。如果事实证明他们错过某些功能怎么办?即使它们是开源的,我也不想去那些代码库附近的任何地方。看起来很苛刻,但我真的只想放松一下编程,FRB似乎是沮丧的结果。试想一下:我尝试了粒子编辑器,甚至找不到打开图像文件的按钮。可以说这是其他所有东西都建立的最重要的功能。
马克西,

这不是一个完整的答案,但是Flash的扩展性超出了您的想象。如果只使用位图数据画布而不是使用显示堆栈,并进行其他一些简单的优化,则可以比采用更幼稚的解决方案更加有效。
Gregory Avery-Weir

粒子编辑器中的列表项在发射器属性面板上简称为“纹理”。^^所有工具都有教程,因此非编码内容创建者可以提供帮助。但是,是的,从交互设计的角度来看,UI确实很可怕。
Oskar Duveborn'3

1
对于仅Windows的XNA,有一个XNA API的开源实现,称为MonoGame,它将在各种非Windows平台上运行:cocoa-mono.org/archives/400/…我自己还没有使用过它它确实存在。
chaosTechnician 2012年

Answers:


10

到目前为止,Pygame是我的最爱。由于使用python进行编程意味着您可以快速进行编程,并且由于可以快速完成2D事情,因此pygame会很有趣...


作为奖励,如果您决定要迁移到3d世界,则可以使用pyglet将GL包裹在蛇皮中;)
Wayne Werner 2012年

9

我已经使用LÖVE一段时间了,我非常喜欢。您必须学习Lua,但是无论如何这都是一种有趣的小语言。论坛中的人员非常有帮助。


表现如何?我可以使用什么IDE?
马克西(Maxi)

1
我第二。我们在我们的Global Game Jam游戏中使用了Lua和LOVE,效果非常好。他们在一个通用的API下汇集了许多非常出色的开源库,并且每个版本都在不断完善。性能非常好(Lua非常快!),并且公开了许多高级OpenGL功能(例如FBO),这对于许多2D引擎来说是很少见的。最重要的是,它是跨平台的(Win / Mac / Linux)。我一定会给它一个好的外观。
Bob Somers

1
@Maxi:充满爱意,您只需要一个编辑器和一个您可以在其中编写love .
文字

2
俄罗斯人是用这个做游戏吗?它将带着爱从俄罗斯来:P
巴特·范·海克洛姆

5

我决定使用Flash。新的Molehill 3D API也可以更快地在3D空间中绘制2D精灵。我认为没有理由为什么Flash不能足够快地适应我之前描述的游戏。我必须自己构建工具,但是无论如何我可能都需要这样做。在我看来,使用AIR来构建工具也很简洁。Flash在平台方面也具有最广泛的影响力,这很酷。



1
Flash可能是一个不错的选择,因为那里有很多非常好的(成熟的)工具和库可用于Flash。Molehill API会减轻CPU的负担(以前所有事情都是由CPU处理的)。但是,您必须考虑游戏的发行。Flash通常意味着基于浏览器的游戏……
bummzack 2011年

并且要注意移动游戏,闪存和移动设备是如此糟糕的组合。
Gustavo Maciel 2012年

并且要注意移动游戏,闪存和移动设备是如此糟糕的组合。 ” @Gtoknu,为什么?
NemoStein 2012年

@NemoStein尝试在youtube上搜索一些在手机上运行的Flash。另外,adobe停止了他对Android的Flash开发,并且没有适用于iOS的Flash。
Gustavo Maciel 2012年



2

既然您说过喜欢Actionscript但正在寻找跨平台的产品,那么请看一下HaXe + NMEHaXe是一种类似于Actionscript的语言,但可以编译为Flash,Javascript,PHP或C ++。NME是类似于Flash图形库的库,但也可以在其他平台上运行。这种组合使您可以编译到许多不同的平台。

我还没有使用过NME,但是我在HaXe + Molehill上进行的首次测试(几天前)在笔记本电脑上渲染10,000个16x16旋转精灵时产生了60fps。我仅使用HaXe几天,却没有足够的经验来确保它对您来说是正确的,但是值得一看。


1

我个人是Allegro 5的忠实拥护者,但这是C API。尽管如此,这仍然是一个简单的API,您可以使用它,并且可以访问:

  • 2D图形(由OpenGL或D3D支持,取决于platfom)
  • 声音
  • 字体(包括位图和TTF)
  • 输入(鼠标和键盘)
  • PhysicsFS(文件系统虚拟化)
  • 图片载入

5.1也将添加着色器支持。

SDL 1.3的状态也很好。Sam似乎已经完成了主要API更改,并且已经存在的内容已经相当稳定。仍然...甚至还不是beta版,并且Allegro 5.0已发布。

当然,对于更复杂和更高级的游戏,您可能希望将Allegro 5与某种物理库(例如Box2D)配对。尽管如此,您仍然可以走很长一段路,并有很多乐趣,而无非就是Allegro 5,C或C ++标准库以及您自己的代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.