发布游戏 – 以WP7和Win8商店为目标的任何方式?

我正处在一个两难的境地,似乎很快就会成为很多开发者的一个重要问题。

如果我在XNA中构建游戏,我将无法将其发布到Windows 8商店,因为这将是一个典型的应用程序 – 而传统的应用程序不能在商店上销售。

如果我在Metro DirectX上构建游戏,我将可以在商店上销售它,但将它移植到Windows Phone将涉及将其移植到Reach XNA,实际上,移植到OS X或Android可能涉及更多的工作 – 这两个都支持C ++。 在C ++ / JS / .NET支持的所有WinRT API中,DirectX只能通过C ++编程。 微软也不太可能更新Windows 7或Vista来支持新的DirectXfunction,尽管这将使Metro DirectX成为DirectX的第一个新版本,以停止支持前任OS。

如果我在Pre-Win8 DirectX 9/10/11上构建游戏,我将无法在Windowsapp store或Windows Phone上销售它,但是我可以将其卖到Steam上。 这也将涉及最多的手动管道。 事实上,尽管是DirectX 11的一部分,DirectWrite也不会与Direct3D进行通信。

我真的厌倦了所有这些限制 – 人为的和其他的限制 – 而且我正在考虑切换到一个API不太简单的平台,比如Android或者Mac / iOS。

至于把游戏推向市场,除了我可能考虑的任何平台的实际市场份额之外,还有哪些其他因素可以帮助我作出决定?

就在几年前,这个问题更容易回答:如果您主要关心Windows平台,那么您只需要回答是否需要DirectX,XNA或SlimDX之类的东西。 如果你做出了错误的决定,那么不会有什么大不了的 – 你真正会失去的是XBox和相当小的Windows Phone市场。

这不是对你的问题的直接回答,而是一些建议。

你想打每个市场,你可以。 特别是作为商场独立/业余爱好者的开发者,每一个潜在客户都很重要。 开发一个单一的平台(即使是一个受欢迎的平台)是当今世界上6个非常受欢迎的游戏平台的一个非常不明智的决定。 至less,你想能够打PC,iOS和Android(与那三个相比,Windows Phone是一个非常小的市场)。 击中XBL也会很好,但是除非你使用XNA,否则作为业余爱好者并不是一件容易的事情(但是不要这样做)。 请注意,这三个主要的平台都有不同的低级API,所以试图select一个平台的API将无处可降。

我被引导认为XNA不太可能再次获得另一个重大的更新,并且这可能是一个传统的API。 如果您正在开发一个长期项目,那么select一个定期更新的平台API可能会更好。 我会避免XNA,除非微软重新向API。

虽然Metro的新API在当前的Windows Phone上不可用,但它可能会在WP OS的下一个版本上提供。 再次取决于项目的长度,担心WP7的限制可能没有意义。 当然,地铁在任何其他设备(呃,也许是下一个XBox)上都不会find,移植到iOS,Android,OS X,Linux或其他控制台将需要改变以使用各种AP​​I。

理想情况下,您的游戏不应该依赖于这些平台技术。 绝大多数的游戏逻辑甚至不应该知道使用的graphicsAPI是否是原始的D3D,XNA,OpenGL等等。 你的游戏逻辑不应该依赖于任何特定的低级操作系统例程。 你的游戏应该是相对直接的移植到任何主要的操作系统,包括PC,iOS,Android,控制台等等。

编写一个能处理这个问题的引擎需要一些思考和理解,但严格来说并不 。 在底层特定于平台的API上编写一个简单的包装器,然后移植很大程度上就成了重写这些包装器的事情。 除此之外,最大的问题是testing不同的inputscheme(触摸VS鼠标/键盘VS控制器)和不同的屏幕分辨率。 我敢说,只要从第一天开始,至less针对两个截然不同的平台(比如PC和iOS),添加更多内容就没什么问题,如果您对API或移植有任何具体问题,那么您已经知道一个奇妙的地方问他们,并得到答案。

您也可以考虑定位HTML5,具体取决于您要构建的游戏types。 对于2D游戏来说,平台对HTML5的支持在这一点上是相当广泛的,大多数使用浏览器的人都可以玩你的游戏。 特别是如果您使用PlayN等更高级别的工具包之一。 你也可以用WebGL做3D HTML5游戏,虽然平台支持还是比较有限的(除IE之外的所有PC浏览器都可以处理,但是我上次发布的移动浏览器都没有检查)。

您也可以使用现有的高度便携式游戏引擎,如Unity3D 。

如果你真的想用XNA作为构建游戏的select框架,你应该看看MonoGame 。 对3D的支持对于该框架来说是相当新颖的,可能并不理想,但是它可以让你使用C#编写代码,并在两个平台(WP7 Marketplace和Windows 8商店)中重复使用绝大多数的代码。 已经使用MonoGame将游戏提交给Windows 8商店!

说,我相信Windows Phone 8被设置为支持C / C ++和DirectX(不确定的限制)。

没有XNA,WP8和W8将不会有游戏,没有游戏的话,没有人会购买它们。 所以最好等待WP9和W9或开始学习目标C或Java。