C#: XNA与非XNA(性能)

3

我想了解使用C#中的XNA开发游戏与不使用它的性能。我是否可以使用PictureBox代替2D纹理?选择Windows Form编程来制作游戏是否可行,还是XNA是最佳解决方案?有哪些优缺点?


对于简单的2D游戏,XNA是一个很棒且易学的工具。但是当你想要制作真正庞大的3D游戏时,我推荐使用其他框架,比如Unity,它能提供更好的性能。 - Harry89pl
1
只是需要注意的是,Unity不像XNA一样是一个框架,而是一个“工具”。 - Heavy_Bullets
4个回答

10

如果你的游戏越复杂,WinForms开发就越难以持续。XNA是针对这类事情设计的,那为什么不使用它呢?

你真正需要问自己的问题是:“我想让我的游戏在Windows Phone 7、XBOX 360和/或Windows桌面上运行吗?”如果你的答案是肯定的,那就学习XNA吧。最好的事情是它已经为你完成了大部分工作,让你可以针对这些不同的平台。

我建议听一下Scott Hanselman最近关于这个主题的播客: Hanselminutes Podcast 240 - Developing Indie Games for Xbox 360 and XNA with George Clingerman


8

这取决于你的游戏图形复杂度。
如果你想学习一种好的库,可以制作高端游戏并具有良好的图形效果,请使用XNA;它将为您提供更多选择。
但是,如果你想制作一个简单的非滚动、类似俄罗斯方块或纸牌游戏,双缓冲.NET控件就可以胜任。


6
使用XNA。除了性能显著更好、支持平台更广(Xbox 360、Windows Phone)、提供声音和输入处理等其他API的便利之外,还有一个非常重要的原因:XNA是一种“即时”风格的API(与保留式API相对应;请参见this description)。
使用这种类型的API开发游戏要容易得多。原因是,在保留式API中,您必须确保外部场景与游戏状态保持同步。这很繁琐且容易出错(相信我,我做过)。

3
如果你追求最佳性能,就不应该考虑C#或XNA,因为你需要越往底层编程,性能才会更好。然而,底层编程意味着你需要花费更多时间来编写代码,并且取得的结果可能会更少。
XNA旨在使游戏编程变得简单。它将大量繁琐的底层编码封装成易于调用的简单方法,以便我们无需重复造轮子,同时利用一个非常强大的框架。
如果你有兴趣制作游戏,我强烈建议使用XNA。我相信你会比其他选择更喜欢它。

迈克,我的猜测是你的第一句话可能表达不太恰当。实际上,当我读到它时,我几乎期望看到C++在最后被提到 :) 尽管如此,我认为你的回答整体没有问题,所以我给了一个+1来抵消那个踩票! - Ahmad Mageed
谢谢!是的,抱歉。我刚刚重新阅读了一下,发现有点过于夸张了。我的意思并不是要抨击C#或XNA,如果有人这样理解而感到冒犯,我很抱歉。就性能而言,托管代码比本地代码会有更多的开销,这就是我的意思。下次我会尽量表达得更清楚,感谢Ahmad提醒! - Mike Dearing

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