C#在游戏开发方面是否有未来?


18

我最近从CVG.co.uk上的一次采访中了解到MMO Minecraft是由Java驱动的,该采访涉及两位以前和现在竞争的同事之间可能的合作。在接受采访时,他直截了当地说Minecraft的创始人是Java编码器,而他是C或C ++编码器,因此它们彼此不兼容。因此,在未来的项目上进行合作将很困难。

这让我开始思考,如果Java可以做到这一点?就游戏或主流游戏开发而言,MS非常流行的C#语言和.Net平台的未来将如何发展?



3
一切都取决于您需要的性能,Minecraft可以使用托管语言,但是对于高端图形游戏,则首选C或C ++或其他本地语言

19
我的世界不是真正的MMO。
DeadMG

3
@ Guillaume86:抖动的代码目前可以胜过本机代码,并且Jits一直在变得更好。同样,托管语言产生的程序更加健壮。因此,最终C ++失去了它的性能优势,并且很难编写出健壮的程序(这意味着更长的开发时间和更多的成本)
Martin

4
JIT可以击败编写不佳的本机代码,而不是严格优化和调整内部循环。即使您确实愿意,即使使用C#,也可以选择用C / C ++编写那些敏感段。
coderanger 2011年

Answers:


22

您应该签出XNA。一个用于Windows,Xbox 360和Windows Mobile 7构建游戏的平台。全部在C#和.NET中。


11

我从事专业游戏开发工作已超过5年。大多数时候,我几乎只使用C#。

一般来说,C#和.NET堆栈对于服务器端技术确实非常有用。我已经使用C#编写了不少于4个MMO游戏。另外,随着Unity3D的流行,许多浏览器和手机游戏都需要C#。不要忘记XNA框架:它不是AAA控制台游戏的首选引擎,但是有许多出色的游戏可以使用它,而且目前还在制作中。

总体而言,C#在游戏开发方面肯定具有未来。


这是一个老问题,但有一件事困扰着我。“服务器端技术”-这到底是什么意思?使用.NET Framework在某些Windows Server上运行的WindowsService?我一直以为服务器是用c ++制成的,并且可以在unix os上运行。我只是好奇
马歇尔

是的,确实如此。Windows上运行着许多服务器-包括运行该站点AFAIK的服务器。
没关系

谢谢你回到我身旁。只是要澄清-“在Windows上运行”为无头Windows服务或WinForms之类的程序(具有内置配置或类似功能)?
马歇尔

无头服务通常是一个更好的主意,但是没有什么可以阻止您运行控制台应用程序。甚至是一个GUI,除了服务器上没有人可以使用所说的GUI。
没关系

10

如前所述,Mono将C#引入了多个平台。在同一区域,您将找到Tao,一个用于Mono和.NET的多平台库,它允许访问Cg,DevIL,FreeGLUT,GLFW,GLU,ODE,OpenAl,OpenGL,PhysicsFS,SDL和WGL。在功能方面,它显然不如XNA(后者直接向开发人员提供基本引擎组件)强大。但是,它功能强大。

因此,超越Microsoft控制的OS和硬件的跨平台肯定是可能的。只是,还没有那么多流行的独立游戏利用这种能力。

如前所述,XNA与C#结合在一起,允许独立开发人员将其发布到360,PC和Windows Phone 7。

总体而言,C#作为一种引擎/游戏语言,在游戏开发中还很活跃。

作为一种工具语言,它无处不在。我已经使用C#为EA,THQ和Arkadium构建了工具。


5

C#不仅在游戏开发方面有前途,而且还有一份礼物-Check Magicka,这是最近发布(并畅销)并使用XNA开发的游戏。还可以查看获奖的Dream.Build.Play条目。C#是一种制作游戏的可行方法(尽管现在我不认为这是所有游戏的正确选择)。

随着时间的流逝,我们将看到它在计算机游戏行业变得越来越流行,但是我不希望在任何时候突然转向C#。


4

Java一直是一种非常通用的语言,人们一直可以使用它来编写游戏代码,从简单的基于Web的游戏(Java applet /带有画布插件的GWT)到完整的3D野兽(结帐JMonkey)。因此,我不会说Java可以做到这一点的事实是C#杀手,因为大多数人都知道Java已经可以做到这一点。

尽管C#不可避免地与Windows,Windows Mobile和Xbox结合在一起,但它仍然会比Java好得多(实际上,所有游戏开发人员都非常在意目标,因此C#的跨平台优势已基本丧失了。) XNA也从游戏开发方面真正起飞。

因此,是的,如果有人愿意遵循Java的原则,那么Java是游戏开发的绝佳平台,但肯定不是C#或.NET的杀手no。


4

查看Unity 3D;高性能3D引擎中的C#(以及JavaScript和Boo)脚本。

将XNA加入其中,您将看到几个使用C#进行游戏开发的出色平台。


Unity还具有网络播放器,因此您可以在浏览器中播放。该插件没有Flash或Java这样的巨大市场渗透率,但是有可能。
Michael Coleman

是的,团结!
丹尼尔·潘德加斯特

1

是的,C#具有XNA框架的未来。大多数人都因为速度而更喜欢C ++,但是C#不再那么慢了...


2
一点也不慢。它很少比C ++速度的70%还要差,有时甚至可以更快!
Noldorin

4
C#中受CPU约束的操作相当快,它进行了一些额外的检查,以牺牲一些次要的性能为代价,大大提高了代码的安全性,但在内存消耗和管理方面比C ++差得多。在C#中,这要容易得多且不易泄漏,但是GC的性能命中率绝对是狗。
justin.m.chase 2011年

不过,当以Xbox360为目标时要当心。那里的XNA运行时缺少一些主要优化的能力,并阻止您将对性能敏感的部分转移到非托管代码。
drxzcl 2011年


1

在这种情况下,他对Java所做的工作是创建一个applet,以便您可以登录到该站点并使用一个非常通用的插件进行操作,该插件对于所使用的操作系统是完全透明的。我认为他的想法是,以这种方式使用Java时,Java是相当透明的,这将使他让粉丝们进行快速迭代的开发/测试变得容易。我不相信您可以使用XNA做到这一点,因为通常测试人员必须安装所有内容以及游戏以及有关如何编译和运行此程序的一些常识。

因此,我想说的是,这没有范式转变,它恰好适合他当时的需求,显然效果很好。


1

当然,许多编程语言在游戏开发中都有前途。在计算机媒体中经常使用的错误困境是,只能有一个类型为X的工具,并且每个人都希望这种情况发生。

没有什么比真相更遥远。

C#和Java在游戏中使用了很长时间。C和C ++的使用时间更长,而且仍然如此。Lua用作一些令人难以置信的流行游戏的脚本语言,其引擎是用C / C ++编写的。

显然,没有任何一种编程语言像《游戏编程语言》一样能使其他编程语言如虎添翼。实际上,我们看到一种趋势,即领先的游戏将由高性能的已编译的编程语言(用于开发引擎)组成,然后由更高级的动态编程语言(用于编写UI和内容的行为脚本)组成。

目前的关键是性能。如果所使用的任何编程语言/库导致应用程序中无法预测/无法控制的暂停,则在动作游戏中,该暂停将完全消失。在基于文本的冒险游戏中,这可能没问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.