XNA 和 C# 能否用于创建商业上可行的 PC/XBOX 游戏?
它是用 C# 创建 3D 游戏的最佳方法吗?如果不是,那会是什么?
实际上你可以做到这一点,但它有点棘手。
您需要通过“社区”(XNA Creators Club Online 用户)的批准程序。
您还需要支付 Xbox Live 帐户和 Xbox Live 开发者许可证。
根据 XNA 常见问题解答:
我是否需要 XNA Creators Club 高级会员才能创建游戏?制作 Windows 或 Zune 游戏不需要高级会员资格。但是,您必须是高级会员并且在受支持的地区才能为 Xbox 360 创建游戏、将 Xbox 360 游戏发布到 Xbox LIVE 上的社区游戏或同行评审提交的游戏。
谁可以对 XNA 社区游戏进行同行评审?创作者俱乐部的会员,其高级(付费)帐户信誉良好并且是合法成年人(对于我们目前服务的国家/地区,这意味着 18 岁或以上)。
并且:为什么我的游戏必须经过同行评审?为什么我不能将它发送到 Xbox LIVE 市场?同行评审员帮助创作者编写更好的游戏,并保护游戏玩家免于体验极具攻击性或故障的游戏。如果出现以下情况,同行评审员将拒绝您的游戏:
您的游戏包含禁止内容,这是 Xbox LIVE 服务上不允许的内容
您歪曲游戏内容或游戏宣传材料中的内容
您的游戏的促销内容(例如,盒子艺术、描述、横幅或标题)不适用于 Xbox LIVE 市场上的所有年龄段
游戏崩溃,错误太多,或者在某些方面存在技术缺陷
常见问题解答可以在这里阅读
如果您想更简单地进行操作,您可以直接使用 DirectX,甚至可以使用其他库,如 SDL(用于 2D 游戏)。实际上,C# 对很多事情都非常有用,并且随着时间的推移它会变得更好。
对您的第一个问题的简短回答是,是的。使用 XNA 库创建几乎任何类型的游戏都是完全可能的。它可用于制作简单的 2D 平台游戏,或中等复杂的 3D 射击游戏。
根据游戏的不同,您需要为游戏创建的逻辑量可能会有所不同。
当然,在创建 3D 游戏时,您要么必须创建自己的 3D 引擎,要么亲自动手制作一个。XNA 本身并没有提供开箱即用的引擎。但是,它确实提供了多种工具来帮助您制作自己的引擎。
C# 并不比 C++ 慢多少,但是 C# 的内存管理并不是真正的游戏友好(AAA 风格)。渲染基本上是一样的,因为我猜你将使用 DirectX,所以没有理由不能用 C# 制作像战争机器这样非常专业的游戏(作为我自己的游戏开发者,我已经看过战争机器的源代码,可以直接告诉你)。但是你需要伟大的艺术家。
真正的障碍是,如果您的源代码是 C#,那么您刚刚将自己锁定在其他非微软平台(比如索尼或任天堂)之外,但 GoW 又是微软绑定的 ASFAIK。
至于 XNA,最畅销的 Arcade/Community Game Braid是用 C++ 编写的,但那是因为作者不想把自己锁在其他平台之外,而且他有很多经验和庞大的代码库。基于 C++
XNA 主要致力于车库游戏、小团队的小型项目和爱好者。此外,它对于游戏架构和 3D 编程来说是一个非常好的学习工具。但对于商业应用,XLA 和 XDK 之间显然存在巨大差距。
使用 XDK 可以让您访问更深层次的硬件,如果性能是一个问题,这绝对是必须的。此外,大多数商业游戏引擎都是为与 XDK 一起使用而开发的(例如,虚幻引擎)。XDK 的调试和分析系统也是一个了不起的工具,而使用 XLA 则无法使用。
所以是的,使用 XNA 制作商业游戏在技术上是可行的,但现实世界往往更喜欢 XDK。
XNA 为您节省了大量与制作游戏相关的低级乏味。对于少数开发不需要将硬件推向极限的游戏的人来说,这可以节省大量时间。然而,大多数 AAA 游戏都需要一些人在硬件上投入大量精力,才能尽可能地突破极限。
话虽如此,你的游戏不一定非要 AAA 级才能在商业上可行或有趣——人们甚至会争辩说它的伤害大于它的帮助。技术很少是制作好游戏的瓶颈。
我怀疑你会用它创造下一个战争机器,但 XNA 适用于许多类型的游戏。Xbox Live 上的大多数(全部?)社区游戏都是使用 XNA 创建的。