这个问题可能看似主观,但考虑到微软:
让我想知道为什么微软不会推动他们的旗舰语言来证明你不仅可以减少大量的开发时间,还可以减少金钱,而且还可以证明你可以发布下一代的标题,实时交互性不会受到影响.
如果微软要这样做一次,我相信很多AAA开发者也会跳上那辆马车.
Jar*_*Par 26
你需要问一个稍微不同的问题.
为什么微软不会用完全不同的语言重写它现有的高度调整的游戏引擎.
希望这是一个更加自我解释的问题.
我对游戏系统代码库几乎一无所知,但我当然不认为它很小.将除了简单应用程序之外的任何东西从C++转换为任何其他托管语言都是一项艰巨的任务.
忘记C#中无法完成的所有语法差异和C++特性/黑客攻击,游戏应用程序在对话前面会遇到一个问题.C#并不慢,但它具有截然不同的性能特征.几乎可以肯定的是,如果直接移植到C#,高度调整的C++游戏代码将不会表现得差不多.必须进行全新的性能调整并且不会便宜.
jal*_*alf 20
首先,XNA不是一个选择.它的目标是消除PC和360之间的差异.高性能游戏不能做到这一点.它必须利用差异.360闪耀的地方,必须利用性能.在糟糕的地方,必须开发变通方法.反之亦然PC.
这也是为什么存在其他DirectX包装器的原因(SlimDX作为一个更直接的D3D包装器而出现).
至于托管代码,一般会想到几个问题:
说到这一点,使用.NET进行高调的PC游戏会更好.完整的.NET框架具有更好的性能特征,并且PC上的可用硬件无论如何都会发生变化,因此对确切内存使用的严格控制不那么重要.
但最终,他们为什么要这样做呢?这将是一个很大的风险,它需要大量的代码重写,他们究竟想要证明什么?大多数工作室都制作跨平台游戏,对于他们来说,.NET不是一个选择,无论它多么棒.他们希望能够在PS3上运行他们的代码,或Wii,或....
很简单,对于像第一人称射击游戏提出的类似实时的性能问题,C#不能胜任这项任务.并不是说它不是一个好的语言,我使用它并喜欢使用它,但事实是垃圾收集在C#中引入的不确定性使它不适合具有高性能要求的游戏.Java也是如此.只有当你达到一定程度,你可以获得一定数量的超额表现才能真正做到这一点; 问题实际上是其他人会采取额外的性能,而不是将其沉入C#(或Java,它会有类似的问题)的运行时要求,他们只会制作一个更好看的游戏.由于消费者并不真正关心游戏开发的技术,他们通常会选择看起来更好看的游戏,这使得任何使用C#开发的游戏(或者像我说的那样,Java)处于显着的劣势.
实际上,如果你看看事情的方式,MS在游戏工作室的参与度几乎没有.Bungie现在是一个半独立的实体,他们关闭Ensemble(帝国时代,光环战争)谁知道是什么原因......他们关闭飞行模拟器组,他们让他们与Bioware的独家经营(龙腾世纪,Baldurs Gate,NWN) )和Bizarre(Project Gotham Racing)去了,他们关闭了FASA Interactive(Shadowrun).在这一点上,他们真的拥有什么?我能想到的只有......稀有和狮子头.
至于他们为什么不用C#制作AAA冠军.我想其中很大一部分是遗留问题.PGR,Forza,Age of Empires,Halo,Flight Sim,他们制作的每一场比赛都是之前系列的一次迭代,所以本来就已经在现有的基础设施上进行了大量投资.
这离开了第三方.为什么第三方不会使用C#?这很简单,它不适用于Wii或PS3.