为 Windows Phone 8 开发 2D 游戏

30

我想开发一款Windows Phone 8的2D游戏。我是一名专业的应用程序开发人员,这似乎是一项有趣的爱好。

但是我尝试开始时感到失望。似乎没有API可用于2D游戏(远远超过大多数游戏)。

看起来Windows Phone制造商没有包括对Direct2D的支持。因此,除非您计划制作完全的3D应用程序,否则您就无法成功。

所以,如果您只想制作一个不错的2D应用程序,这些是您的选择:

  1. 使用Xaml和C#编写您的游戏(性能问题?)
  2. 使用Direct3D编写您的游戏,但只在一个平面上绘制。
  3. 使用在codeplex上找到的DirectX Took Kit。它允许您使用即将消失的XNA框架的API进行开发。

对于我的游戏来说,第3个选项似乎是最好的选择。但我不想浪费时间学习XNA API,因为微软已经明确表示不会再提供支持。

第2个选项可以工作,但3D开发真的很难。我宁愿不必做所有这些工作来获得2D效果(假设Direct2D更容易。我还没有研究过这个)。

第1个选项似乎是最简单的,但我担心如果基于xaml渲染而不是DirectX,则我的应用程序将无法良好运行。

微软建议使用哪种方法?

谁决定2D游戏会受到短视?


请查看诺基亚开发者指南:http://www.developer.nokia.com/Community/Wiki/DirectX_on_Windows_Phone:_2D_Game_Example_using_DirectX_Toolkit - Prescott
4
@Prescott - 那个使用XNA基于DirectX Toolkit... 我想我可以这样做,但我不想花费精力学习XNA API,因为微软已经表示他们不支持它在Win phone 8上。 - Vaccano
也许你会对这个问题感兴趣:http://stackoverflow.com/questions/13168151/windows-phone-8-game-development - Prescott
请注意,DirectX Tool Kit 是一个 C++ 库,与“XNA 框架”没有任何直接关系。相反,它是一个以 XNA C# 组件的设计为灵感,并试图基本实现相同功能的 C++ 库——其中一位作者是 ShawnHar,曾是 XNA GS 的图形主管。它完全不依赖于 XNA 框架。如果您正在转向本机 C++ 开发,则可以使用 XNA Game Studio C# 的经验。对于 2D 游戏,您可以通过SpriteBatch实现很长一段路程。 - Chuck Walbourn
5个回答

15

依我看,Windows 8和Windows Phone 8的游戏开发已经退步了。我认为这主要是由于XNA的停用,但他们似乎并没有专注于使其变得更加容易。

回答您的问题,尽管需要学习另一个API(像XNA), 但这仍然值得一做。 多亏了MonoGame, 您将能够利用所学的知识并针对多个平台进行开发。相当多的贡献者正在 致力于 MonoGame ,我可以看到它在未来会继续存在。

所以,如果你想学习XNA,你可以简单地为Windows Phone 7平台制作一个XNA 2D游戏,这些标题(Microsoft已经说过)将在Windows Phone 8 **上运行(不是这种情况,请参见更新)。我知道这听起来有些反直觉,但除非你真的需要使用WP8的某些新功能,否则请针对7.1并使用XNA。这是一个优秀的框架,非常适合制作2D游戏(例如 Bastion!)。完成WP7 / WP8的2D游戏后,您可以通过引用MonoGame很少更改代码就能够将其针对iPhone,Android和其他平台。

也许不是一个很好的选择,但可以添加到列表中。希望能有所帮助。

更新 事实证明,微软在WP7到WP8的开发上真的搞砸了。通过上述方法,您仍然可以获得跨平台开发到iOS、Android等的优势,但是我对WP8的兼容性问题并不十分有信心,因为兼容性问题开始出现,而且WP7的标题正在被从WP8设备的商店中省略。


1
MonoGame的“文档”非常糟糕。 - jay_t55
@Jase 大部分来说,XNA 的文档仍然适用于 MonoGame,但是确实存在一些缺失和“坑点”没有得到很好的记录。MonoGame 并不是完美的解决方案,但考虑到它是一个开源项目,需要覆盖许多平台和功能,它做得相当不错。你可以帮助解决文档问题,或者至少在他们的 Github 存储库中标记它 :). - Darren Reid
是的,我很愿意帮助文档方面的工作,但恐怕我并没有太多帮助,因为我对XNA还比较陌生,不太清楚自己在写些什么 :) - jay_t55

5

XNA可以部署到PC、Windows手机和Xbox360上,Visual Studio甚至会为您复制项目的不同版本。对于快速开发2D游戏,XNA是一个很好的工具。如果您只是想进行测试运行,那么XNA就是最佳选择。虽然XNA很简单,但您也可以使用着色器做一些非常复杂的事情。我认为您不会很快感到无聊。

如果您决定真的喜欢游戏开发,请学习DirectX。在直接进入3D游戏开发之前,从零开始并获得一点游戏开发的经验是很有必要的。与软件世界的其他部分相比,编程视频游戏更像创建操作系统。无论您的目标平台是什么,先尝试一下XNA是最明智的选择。


1
但是现在学习XNA就像花时间学习WinForms一样。它是一项功能强大的技术,但对于未来扩展你的技能集来说是浪费的努力。 - Vaccano
1
如果你认为XNA是浪费时间,我会使用DirectX并将截锥体制作成一个立方体。顺便说一下,优秀的游戏开发发生在团队中的程序员擅长快速原型设计时。游戏设计师想要知道他们的想法是否有趣,而不是在可能是个坏主意的情况下花费数百万美元。XNA作为快速原型设计工具非常出色,比Flash好得多。使用XNA可以相对快速地展示一个工作的游戏机制,比使用DirectX要快得多。此外,XNA是渴望成为游戏开发人员的最佳学习工具之一。 - aj.toulan

5
我想指出,Unity(http://www.unity3d.com)还具有创建2D游戏并发布到Windows Phone 8和iOS / Android的工具。很抱歉回复晚了,但这仍然是一个未解决的问题... ;-)
您可以使用Visual Studio或Monodevelop中的C#创建脚本,而且Unity已支持从各种工具(例如3DS Max,Maya,Photoshop,Gimp等)创建的模型/纹理。
它是一款专业的游戏引擎,性能方面可以渲染数百万个多边形而不会出现问题(我个人在3D方面进行了尝试和测试),因为它应该是这样的。
它们的2D工具相对较新,但已经有大量的教程,并且Unity文档总体上非常好。
http://unity3d.com/unity/whats-new
祝你好运。

0

另一个选择是Marmalade,它包含了强大的2D物理引擎,并且具有跨平台的额外优势,因此您可以将其用于Android、Apple、Kindle以及Windows Phone等多个平台。缺点是它基于C++,需要相当多的工作量,并且没有能够与Visual Studio媲美的IDE。


0
你可以使用MonoGame。它是一个游戏开发框架,实际上是XNA游戏工作室的当前实现。它可以部署到Windows Phone 8以及Android、Linux等平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接