4

因此,按照我在 MSDN 上找到的教程,我使用 DirectX 和 C# 创建了您可能称之为“引擎”的东西。我还没有看到很多这样的事情(就个人而言)是用 C# 完成的,而且大多数人似乎更喜欢 C/C++,所以我很好奇使用 C# 是否会回来咬我,或者我是否应该继续吗?

我问的原因是教程突然停止了,所以有一些基础,但它足够小,可以毫不费力地移植。我自己喜欢 C#,但我不知道是否有一些其他人都知道我不知道的东西。

4

5 回答 5

3

好吧,彼得,主要原因是 C++ 与平台无关,而 C# 不是真正意义上的,尽管 Mono (我认为你不能在大多数手机上运行 Mono C#,例如 Nintendo DS 或 Playstation3)。

无论如何,这些引擎中的大多数都支持 DirectX 和 OpenGL,和/或软件渲染器,因此它们从头开始设计为不可知论。但与任何不可知系统一样,这需要大量的努力和资源。

现在从你所说的来看,你的引擎是 C# + DirectX,这意味着你的引擎现在可以在 PC、Xbox、Zune 和一些 Window 驱动的手机上运行。老实说,这不是一个糟糕的平台范围。因此,如果您对这种自由度感到满意,并且您更喜欢 C# 而不是 C++,那么您不妨坚持现有的,并花时间改进您的引擎。但是,如果您想在 Microsoft 以外的任何东西上运行引擎,则需要在某个时候跳转到 C/C++。

关于我在说什么的想法,我的团队的引擎支持 Xbox、PS3、Wii、PSP、PC 以及可能的其他平台——如果我们付出努力的话,但是我们有 15 名全职工程师在开发它,所以......你看这是一个很大的成本。现在,如果你想为一个免费的项目做这样的事情,并且你知道 C++,你可以尝试许多开源引擎中的任何一个,比如 Ogre 或 Irrlicht。

于 2008-11-14T04:36:17.020 回答
1

As a hobbyist game developer I greatly prefer C# (with a 3rd-party library call SlimDX) over C++. Yes, a game written in well-optimized C++ will probably run better than the same game written in well-optimized C#. But the time I save by using C# (I'm guessing very roughly 30-40%) can be used to optimize my algorithms such that a C# game will actually run faster than had I written it in C++ in the same amount of time.

As pointed out above, there's also the cross-platform compatibility issues because for most practical purposes a C# game will only run on Microsoft platforms.

Another issue to consider is that if you write your application in C# then it will require the .Net Framework to be installed on the computers it runs on. This can make distributing your application cleanly somewhat more of a hassle, though this is by no means an insurmountable obstacle.

于 2008-12-06T23:50:03.050 回答
1

我建议留在你熟悉的地方。如果您打算执行一些较低级别的功能,例如实现您自己的图像处理或创建自定义过滤器或转换(取决于您使用 directx 的目的),则应仅在您的情况下考虑使用 C 或 C++。

图形应用程序可能具有计算密集型方面。其中大部分已在 DirectX api 中得到解决——如果您从 C++ 或 C# 中使用它,它的速度也一样快。

您会考虑较低级别语言的地方:如果您正在创建一些可以在本机上更快执行的图像处理 - 这仅适用于 Directx api 不提供它的情况,例如创建一些自定义编码器/解码器。在这种情况下,您可以使用另一种语言创建自定义组件,然后将其单独加载到您的 C# 应用程序中。如果你正在考虑使用 C++ Intrinsics,它允许你为你的 CPU 编程,还可以看看像 CUDA 这样的 GPGPU API。

于 2008-11-14T03:52:01.477 回答
0

有一些工作室使用 c# 进行游戏。

你也可以看看XNA,还有一个quake3引擎的端口在互联网上飞来飞去,移植到c#。

所以应该没问题。

于 2008-11-14T03:52:48.917 回答
0

如果您在 C# 中感觉更舒服,并且没有强制切换到更接近 CPU 的语言的性能问题,那么我认为没有必要进行更改。

但是,根据您计划在未来做什么以及该引擎应该走多远,这可能会发生巨大变化,而 C# 可能会成为错误的选择。但不幸的是,这只有时间可以证明。正确的有根据的猜测需要更多关于当前实施和未来计划的详细信息。

于 2008-11-14T03:53:21.430 回答