为什么微软不使用C#开发一个类似光环的下一代标题?

为什么微软不使用C#开发一个类似光环的下一代标题?,c#,.net,C#,.net,这个问题可能看起来很主观,但考虑到微软: 拥有Xbox 360平台 拥有Windows平台 拥有自己的游戏工作室(MGS) 拥有其他第三方开发者 是一家主要的出版商 让我感到奇怪的是,为什么微软不推出他们的旗舰语言来证明,不仅可以缩短大量的开发时间,从而节省资金,而且还可以证明,在实时交互性不受影响的情况下,你可以发布下一代的产品 如果微软这样做一次,我相信很多AAA开发者也会跳上这辆马车。你需要问一个稍微不同的问题 为什么微软不用一种完全不同的语言重写现有的高度优化的游戏引擎呢 希望这是一

这个问题可能看起来很主观,但考虑到微软:

  • 拥有Xbox 360平台
  • 拥有Windows平台
  • 拥有自己的游戏工作室(MGS)
  • 拥有其他第三方开发者
  • 是一家主要的出版商
让我感到奇怪的是,为什么微软不推出他们的旗舰语言来证明,不仅可以缩短大量的开发时间,从而节省资金,而且还可以证明,在实时交互性不受影响的情况下,你可以发布下一代的产品


如果微软这样做一次,我相信很多AAA开发者也会跳上这辆马车。

你需要问一个稍微不同的问题

为什么微软不用一种完全不同的语言重写现有的高度优化的游戏引擎呢

希望这是一个更加不言自明的问题

我对游戏系统的代码库几乎一无所知,但我当然不认为它很小。将一个简单的应用程序从C++转换成任何其他管理语言都是一个<强>巨大/强的事业。
<>忘记了C++中不能完成的所有语法差异和C++特征/黑客,游戏应用程序前面的一个问题是PERP。C#并不慢,但它有着截然不同的性能特征。几乎可以肯定的是,如果直接移植到C++,那么高度调整的C++游戏代码将不会运行得差不多。必须进行新一轮的性能调整,而且成本不菲

很简单,对于像第一人称射击手所提出的实时性能问题,C#不适合这项任务。并不是说它不是一种好语言,我使用它并且喜欢使用它,但事实是C#中垃圾收集引入的不确定性使得它不适合具有高性能要求的游戏。Java也是如此。只有当你达到一个点,你有一定数量的超额性能可用时,你才能真正做到这一点;真正的问题是,其他人将获得额外的性能,而不是将其放入C#(或Java,也有类似问题)的运行时需求中,他们只会制作一个更好看的游戏。由于消费者并不真正关心游戏是用什么技术开发的,他们通常会选择外观更好的游戏,这使得使用C#(或Java,如我所说)开发的任何游戏都处于明显的劣势。

微软有一个这样的平台,叫做,他们在过去三年中一直在开发。有许多概念证明、初学者工具包和其他资源可供爱好者开发人员和AAA工作室使用

XNA使各类开发人员能够利用他们现有的C#技能和Xbox 360/Windows的强大功能为其中一种/两种平台构建游戏。他们自己还没有使用这个平台开发商业游戏,但是已经有很多非常酷的项目可以使用XNA

请看一下使用XNA的一些示例


另外,对于C#的性能的评论,您可能会对这个主题感兴趣。对于许多游戏来说,它绝对足够快;事实上,Xbox上的XNA执行引擎在游戏开发场景和降低垃圾收集成本方面进行了多种方式的优化(我没有资料可供引用,但我曾在Xbox 360的.NET执行引擎上实习)。

事实上,如果你从实际情况看,微软在游戏工作室的参与度几乎没有那么高。邦吉现在是一个半独立的实体,他们关闭了合奏(帝国时代,光环战争)谁知道是什么原因。。。他们关闭了飞行模拟器集团,让他们在Bioware(龙时代,Baldurs Gate,NWN)和奇异(高谭赛车项目)的独家经营权消失,并关闭了FASA Interactive(Shadowrun)。在这一点上,他们真正拥有的是什么?我能想到的就是。。。。罕见的狮子头

至于为什么他们没有用C#获得AAA头衔。我想其中很大一部分是遗留问题。PGR、Forza、帝国时代、Halo、Flight Sim,他们制作的几乎每一款游戏都是前一系列游戏的迭代,因此他们已经在现有基础设施上进行了大量投资


这就剩下第三方了。为什么第三方不使用C#?那么简单,它在Wii或PS3上不可用。

首先,XNA不是一个选项。它的目标是抽象出PC和360之间的差异。高性能的游戏不能做到这一点。它必须利用这些差异。360在哪里大放异彩,就必须充分利用其性能。在糟糕的地方,必须制定变通办法。对于个人电脑,反之亦然

这也是其他DirectX包装器存在的原因(SlimDX被认为是更直接的D3D包装器)

对于托管代码,通常会想到几个问题:

  • 他们已经有了一个庞大的代码库,希望继续使用。缩短开发时间的方法是而不是把所有东西都扔出窗外,用另一种语言从头开始
  • 大多数游戏工作室仍然拥有一定的自主权,即使它们归微软所有。如果他们喜欢用C++写游戏,微软会否决吗?这样做是个好主意吗?这肯定会激怒开发人员,而激怒开发人员通常不是一件好事
  • 性能:是的,C#和.NET在PC上的性能非常好,但在控制台上,情况就不同了。它使用.NETCF,其中包括一个非常原始的垃圾收集器。它的JIT编译器真是糟透了。NETCF的设计并不是为了超越经过良好调优的本机代码
  • 控制:您通常编写AAA控制台游戏的方式是利用控制台提供的所有功能。电动汽车