C#对于游戏开发来说足够快吗?

13

用C#编写的游戏在长时间(例如24小时)的播放后,是否会出现任何速度问题?我特别是在谈论类似于旧版Final Fantasy或Dragon Quest游戏的2D RPG。我知道像Python这样的语言也会减慢速度,想知道C#的情况如何。

编辑:我编写的程序很像遭受白蚁侵害的树木 :)

@jimmy-这正是这个问题的全部意义。我正在制作一个小型的FF克隆版来提高我的编码水平


7
长时间游戏后出现速度问题,不论语言如何,这听起来像是内存泄漏或普通的 bug。 - Mitch Wheat
1
@Mitch Wheat - 难道垃圾回收器的工作方式不会影响它吗?如果它不太好并导致碎片化,那么24小时后事情减慢是可以想象的。 - Edan Maor
1
@Edan:这可能是垃圾回收器中的一个错误。 - kervin
@Mitch Wheat:如果我没记错的话,Python中的散列表在密钥频繁更改后可能会变慢。 - Daniel Newby
@Mitch Wheat - 不一定。至少在嵌入式系统上,我知道一些垃圾收集器由于性能原因存在碎片问题。我不知道任何运行在Windows上的语言是否也有这些问题,但它们可能存在。 - Edan Maor
显示剩余3条评论
6个回答

11

是的,没错。看一下XNA吧。已经有一些用C#编写的游戏了。


2
我建议你观看Eric Lippert几年前在Channel 9发布的视频。如果您想了解性能比较,这是一个很好的选择。尽管自那时以来计算机硬件已经有了很大的进步,但概念并没有改变。如果您使用正确的方法,C#/.Net可以具有优秀的性能。请点击以下链接观看视频:Eric Lippert - Have you noticed a performance hit in .NET?

1
哇,那真是老古董了。今天我在公交车上遇到了查尔斯,希望我们有一天能制作更多的 Channel 9 视频。 - Eric Lippert

2
如果代码在执行过程中变慢——我的意思是做同样的事情需要更长时间——这表明内存没有被正确地管理。我不知道你所说的Python减速是什么意思,但我对它没有太多经验。一些游戏或图形库可能不正确地处理内存,这可能会导致性能下降(并最终崩溃)。但关闭应用程序并重新启动将修复任何类似的问题——如果用户玩了24小时,肯定会有保存功能吧?
回答你的问题,正确编写的C#代码不会因为你长时间玩同一款游戏而变慢。(但正确编写的Python代码或任何其他语言也不会)。

2
高层的游戏逻辑可以用Python编写。实际上,使用“慢”的脚本语言来允许更多的游戏设计自由是相当普遍的。在实践中,游戏的最低级别(如硬件接口/驱动程序)是用C语言编写的。其余介于两者之间的内容则取决于所需的性能类型和将要运行的硬件类型而有所不同。

0

XNA游戏套件用于XBox 360,使用C#语言...


-1

优秀的展示了.NET性能潜力的例子!但是,该端口实际上是使用托管C++而不是C#完成的。 - Paul Sasik
1
是的,保罗,说得对。归根结底,我们有一些中间语言(IL)和一个托管应用程序。用于到达这个目标的具体编程语言并不太重要。 - Alex
@Alex,Managed C++也可以使用非托管本地库。您的程序的一部分可以是托管的,另一部分可以是非托管的,这就是Managed C++的特殊之处。因此,它与纯IL的VB .NET和C#不完全相同。 - Lzh

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