C#游戏开发之XNA之后

39

我是一名游戏开发者,过去四个版本我使用.Net语言和XNA制作游戏。不幸的是现在有这个消息:http://www.gamasutra.com/view/news/185894/Its_official_XNA_is_dead.php#.UQ3yiehQCh8

我正在调查游戏引擎生态系统,寻找支持在Visual Studio中编写代码(我重度使用F#,信不信由你!)并且很难找到高质量、仍然活跃和高性能来替代XNA的东西。例如Unity只允许在MonoDevelop中进行脚本编写,而我想要更加友好的开发体验。

那么有哪些替代方案可以取代XNA呢?


4
好问题,不过我建议你加上“为什么”你认为“XNA已死”,以便更好地理解问题。(我猜你是在指缺少WinRT支持?) - Heinzi
在Visual Studio中编码是否必须使用F#,还是只要在VS中使用任何语言都可以? - Botz3000
3
你错了。Unity允许在Visual Studio中编写代码,我一直这样做。仅限于MonoDevelop的是轻松的调试。从VS中,你可以附加调试器到Unity的进程中,并且可以工作,尽管不是很干净。有一个非免费的插件适用于Unity,它允许从VS中轻松调试,但我还没有测试过。 - Elideb
这个问题应该关闭或移动到程序员板块吗? - Roberto
有一个叫做Monogame的东西,我目前正在用它来开发WP8和Windows Store应用。如果你可以接受开源和一些小bug,它非常好用。 - Richard J. Ross III
自己写代码吧,XNA从功能角度来看很糟糕(个人观点)。我们投入了大量资金开发自己的框架,目前开发速度越来越快。没有现有框架的限制,你可以做很多事情。 - Felix K.
10个回答

32
如果您想利用XNA API,您应该选择MonoGame。它是一个兼容XNA API的平台,可以在多个平台上运行(包括使用OpenGL的几个非Windows平台)。开发非常活跃,最近MonoGame正在获得完整的3D堆栈,可以在Windows Metro应用程序上运行(感谢SharpDX)。您可以查看最新的develop3d分支。

谢谢,非常有用的信息! - Kolky
4
MonoGame现在看来绝对是正确的答案,即使是两年后! - Evan Steinkerchner
1
两年后,这个有更新吗?最新的MonoGame稳定版是2014年5月17日。 - A. Wilson

12

没有什么比XNA更棒了。我不明白为什么微软要放弃XNA。这是唯一能与XBox 360配合使用的系统。你可以尝试使用Tao、SlimDx或其他引擎或包装器。但是XNA是最适合快速游戏开发的系统。

我现在已经转向Java + LWJGL。


5
这并没有回答或解决问题。那位先生无法在Java中使用F#,而你也没有提供替代方案。 - FPC

6

8
对我来说,在 Visual Studio 中编码不仅仅是写代码,还包括调试。如果没有这个功能,那就毫无意义了 :) - Giuseppe Maggiore
2
有几种使用VS调试器与Unity 3d的方法,您可以尝试自己配置,或者使用像这样的插件http://unityvs.com/。我在Unity中开发并非常满意,即使它有一些小问题。考虑到有多少游戏是使用Unity开发的(http://unity3d.com/gallery/made-with-unity/game-list),您应该可能会考虑使用它。 - Cousken
@GiuseppeMaggiore "对我来说,在Visual Studio中编码不仅意味着编写代码,还包括调试" - UnityVS现在已经被微软接管,并且免费提供。 - user585968

3
如果你想成为一名游戏开发者,并且想要完全控制并进行移植,而且还想使用C#,那么OpenTK可能是最好的选择。它支持OpenGL 3.0,并且与mono兼容,这意味着你可以将游戏移植到PC、OSX、Linux、Android和IOS上。具有讽刺意味的是,你唯一无法使用它的地方是Xbox 360/1和Windows Phone。但是,在我看来,如果你想在手机上制作游戏,Android和IOS已经占据了市场的90%以上,所以应该选择这条路...
缺点:
这个项目似乎自2010年以来没有更新过,但是它非常稳定,功能丰富,支持OpenGL 3.0。但是,如果你想进一步使用它,最终你需要自己更新它,但它是开源的,遵循GPL协议,因此你可以这样做。
OpenTK还包括OpenAL,并处理图形和声音。 http://www.opentk.com/

在我看来,Xamarin + OpenTK 是目前使用 C# 跨平台使用 OpenGL 的最佳方式。我的公司已经成功地通过这种方式发布了 iOS+Android 应用程序。或者使用 Unity,虽然我还没有尝试过。 - ToolmakerSteve

2

2
此外,如果您想要类似于XNA的东西,可以使用SharpDX和SharpDX工具包,它提供了相当类似XNA的接口。请访问这里
从他们的网站上下载 SharpDX(选择'SharpDX-Full-2.4.0.exe',它内部有示例),解压缩并运行SharpDXToolkitSamples.sln。

2
尝试查看 Axiom(OGRE的.NET版本)和 Delta Engine编辑:如果您正在寻找更低级别的图形库,请尝试使用 OpenTKSlimDX

Delta Engine 似乎已经走到了生命的尽头,不过 Axiom 确实看起来很不错... - Giuseppe Maggiore

1
Unity 4.2允许在Windows 8或RT的Visual Studio中进行编程。据我所知,4.3+将允许通过Visual Studio为Windows Phone 8编写代码。虽然不是XNA的理想替代品,但仍然是一个可行的选择。至于XBOX 360或除Windows 8和Phone 8之外的其他平台,我不确定VS是否可以作为您的IDE,但微软正在大力推动Unity3D,看看他们为Indie Developers提供的开发工具包促销活动。他们几乎是在送它们了。

http://techcrunch.com/2013/11/05/unity-game-engine-goes-free-for-indie-xbox-one-developers/

这是数千美元的免费软件和硬件,供独立开发者使用。这是将游戏开发过程民主化、协助独立工作室迈向更近一步的又一个举措。

1

Tao已经不再更新了...最后一次发布是在2008年,最后一次提交是在2009年。 - Robert Rouhani

1

SharpDX 允许您从托管代码中充分利用DirectX,目前它非常活跃,甚至支持WinRT。


3
水平太低了,我从8版开始就知道DirectX了,但在其中开发成本太高并且培训开发人员使用它也很昂贵。 - Giuseppe Maggiore
SharpDX 需要 Visual Studio 2010... 不支持 Express 版本 :( - keyle
四年后,VS社区版支持插件,所以我相信这不再是一个问题。 - ToolmakerSteve

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