使用 Java/C#(包括 XNA)/Unity 开发游戏的原因是啥?

Posted

技术标签:

【中文标题】使用 Java/C#(包括 XNA)/Unity 开发游戏的原因是啥?【英文标题】:What are the reasons for and against developing a game in Java/C#(XNA included)/Unity?使用 Java/C#(包括 XNA)/Unity 开发游戏的原因是什么? 【发布时间】:2011-07-01 03:58:10 【问题描述】:

我正在考虑创建一个游戏只是为了好玩。用这些语言编程有什么优势? 我相信 Unity 和 Java 都有自己的可嵌入小程序,而 C# 有一个软件包 (XNA Game Studio) 可以为 Windows Phone、XBOX 360 和 PC 开发游戏。

只是一些标准:

语言的平台兼容性如何(可以在 Mac 上运行吗,我希望它绝对可以在 PC 上运行) 是否有用于游戏开发的库(请包括这些)? 运行时的基本性能如何? (经常发生崩溃吗?) 可以在网络浏览器中运行吗? 用户是否必须安装运行时? 任何其他让语言变得更好的东西...

我想为 PC 开发游戏。

【问题讨论】:

【参考方案1】:

请允许我支持 C#,尤其是 XNA。

通过使用 Mono(包括 MonoTouch 和 MonoDroid 等付费库),您可以在任何地方 (eg) 运行 C#。 C# 对于游戏开发来说当然足够快。运行时非常稳定。它可以通过 Silverlight 在浏览器中运行。

在我的意见中,C# 作为一门语言优于 Java,尤其是在游戏开发方面,尤其是考虑到工具和库支持——尤其是 XNA。

XNA 是一个游戏开发库(在范围上类似于 DirectX),还有很多为 XNA 构建的库。此外,到目前为止拥有最好的 sample code 库。

XNA 在 Windows、Xbox 360、Windows Phone 7 和 Zune(旧版本)上本机运行。

在 PC 上,C# 和 XNA 都需要运行时。 Microsoft 的 ClickOnce 安装程序使这非常容易。它为您的用户提供一个引导安装程序,然后根据需要从 Microsoft 下载并安装运行时。 .NET 4.0 客户端配置文件为 41MB,XNA 4.0 为 7MB。 This answer has more details.

此外,还有将 XNA(仅限 2D API)移植到其他平台的项目。我是currently funding a project called ExEn,目标是为浏览器(Silverlight)、iosandroid 和 Mac 带来高质量的 2D XNA 实现。

如果您等不及 ExEn,您可以尝试一些它基于的库 - SilverSprite (Silverlight) 和 XnaTouch (iOS)。 SilverSprite 有很多问题,XnaTouch 好一点。

(目前,如果您想在这些平台上制作 3D 游戏,Unity 可能是更好的选择。)

【讨论】:

【参考方案2】:

需要明确的是,Unity 不是一种语言(如 C# 和 Java),它是一种创作工具和运行时。您可以使用 C#、UnityScript(javascript 风格)或 Boo(Python 风格)编写游戏逻辑。该创作工具非常稳定且功能强大,可为小型团队提供出色的管道来添加 3D 模型、纹理、声音、着色器等。

在我(相当长的)职业游戏开发人员职业生涯中,我只使用过一种优于 Unity 的创作工具,这是一个由一流工程师团队多年来开发的内部专有工具.

据我所知,Java 世界中没有与 Unity 等效的产品。如果您正在编写纯 C#,XNA 将为您提供一个良好的开端,但您仍然必须创建/集成许多基础知识(物理、粒子系统、碰撞检测),然后才能接近您可以完成的任务Unity 的第 1 天。

可以为 Mac 或 Windows 构建独立的 Unity 游戏。独立版本不需要用户安装 Mono,并且根据我的经验非常稳定。还有一个 Unity Web Player,允许游戏在 Mac 和 Windows 上的 A 级浏览器中运行。网络播放器仅安装在大约 3500 万个浏览器上(听起来很多,但考虑到 Facebook 拥有超过 5 亿用户)。

我知道我听起来像个骗子,但 Unity 确实是一个很棒的工具。

【讨论】:

【参考方案3】:

我不再认为它与编程语言有关。这取决于您的目标平台。

xbox + pc > xna, .net android > java html5 > javascript

【讨论】:

【参考方案4】:

对于游戏开发,C# 比 Java 或 JavaScript 要好得多。 如果你使用Unity3D,你可以使用 C# 而不是 JavaScript,你应该这样做。

Unity3D

优点:

Unity3D 可在:Windows、Mac、XBOX、PS3、WII、iPhone、Android 上运行 Unity 有一个内置的物理引擎(如果您想在 2D 游戏中使用它,您需要以编程方式定位一个轴)。

缺点:

除了 PC 或 Mac 以外的任何其他平台都要花钱。

XNA

优点:

XNA 可在:Windows、XBOX、Phone7 上运行。 XNA 对所有平台都是免费的。

缺点:

仅限于 Microsoft 产品。需要更多编码。

如果您刚刚开始并且想要制作 3D 游戏,我会研究 Unity3D。 如果您想做2D 游戏,XNA 或 Unity3D 会很好。 遗憾的是,它们都不能在 Linux 上运行。 :(

【讨论】:

【参考方案5】:

我已经非常广泛地使用了 Unity,我强烈推荐它。它适用于所有平台(您必须购买许可证),但它是一个非常好的引擎。值得一看!此外,您可以在 C# 中进行开发,因为它使用单声道,这是一个巨大的优势。

【讨论】:

我希望他们能把这个东西放到 Linux 上。

以上是关于使用 Java/C#(包括 XNA)/Unity 开发游戏的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

XNA中是否有Vector3Int等效?

使用 XNA 裁剪音频

另一种在WINFORM中使用XNA的方法

游戏开发者眼中的Unity 3D网页游戏测评报告

XNA中通常使用啥?

游戏开发人员眼中的Unity 3D网页游戏測评报告