选择.NET游戏引擎

2020-10-22 09:34:47

与开发商业应用程序和服务相比,开发游戏是多学科的。游戏需要跨越UI、音频、游戏性和艺术方向的设计技能。它还需要图形、游戏、音频、云服务和开发方面的工程技能。有时,您需要进行低级操作,并在汇编中处理硬件注册表,以优化特定设备的性能。在制作游戏时,您需要自己构建所有这些层吗?或者有没有更好的方法?当然,还有更好的办法。NET生态系统为像您这样想要制作游戏,但又不想从头开始构建一切的人提供了许多选择。在我之前的帖子中,我展示了多样化的.NET游戏开发环境。在这篇文章中,我将展示一些.NET游戏引擎,并帮助您选择适合您的游戏引擎。

开发人员过去每次都要从头开始开发他们的游戏。现在,开发人员在他们的游戏中抽象了大量可重用的代码,并创建了一组API和工具,无论何时开始新游戏,他们都可以重用。这些游戏引擎包含图形、输入、媒体API的抽象。它们还可能包含视觉和音频资产的设计工具和资产管理器。您可以将其视为IDE,但不仅仅是代码。一些游戏公司开始商业化发布引擎。

随着C#的流行,更多的游戏引擎开始使用.NET。Mono运行时(现在是.NET5的一部分)是一个很好的选择,因为它能够在许多平台上运行C#代码,包括Android、iOS、PC、Mac和Linux。Mono还支持Xbox、PlayStation和任天堂平台等专用游戏机。现在有了.NET,包括Mono和.NET5,我们看到一些游戏引擎准备升级。

MonoGame可以更多地描述为构建游戏引擎的框架。它最初可能是XNA的多平台版本,但它已经超出了这个范围。MonoGame提供全面的游戏开发API和资产管理工具。MonoGame刚刚升级到3.8版,它使用了.NET Core 3.1和NuGet,并计划升级到.NET5。MonoGame非常灵活,以至于其他游戏引擎都把它作为基础,比如FlatRedball。许多独立开发人员将MonoGame用于他们所有的跨平台游戏开发。

Stride(正式名称为Xenko)是Silicon Studios开发的另一个纯C#和.NET引擎。它是一个带有图形编辑器的完整集成引擎。Stride现在是开源的,并且免版税。由于其模块化设计,发动机的不同部件可以独立使用。Stride在其最新的4.0版本中也使用了.NET Core3.1。我真的很喜欢他们文档中侧重于以前使用过Unity的人的部分。

另一个纯.NET引擎是WaveEngine。WaveEngine是免费的,它的许多组件都是开源的。他们最新发布的3.0预览版刚刚升级到.NET Core 3.1。它提供了令人兴奋的功能,比如使用.NET WebAssembly(Mono WASM)在浏览器中运行3D场景,Azure远程渲染,以及对HoloLens 2的支持。WaveEngine有许多混合现实功能,比如空间音频,开箱即用。

NeoAxis是我在上一篇关于使用.NET进行游戏开发的博客文章发表后向我指出的一个引擎。它也完全是用.NET编写的,开源,免版税。它支持全套功能,包括在最新版本中增加了对Android的支持。

Unity是用C++开发的,是较早使用.NET提供C#脚本和多平台目标的商业引擎之一。Unity是一个集成引擎,具有编程API接口以及用于图形、音频、性能分析和调试的可视化编辑工具。Unity迅速成为游戏、虚拟现实和模拟等所有实时图形应用程序最常用的游戏引擎之一。有一个巨大的生态系统支持Unity,从插件和初学者包的资产商店,到Microsoft Azure Playfab等游戏服务。Unity是一个商业引擎,但在达到一定的收入门槛之前可以免费使用。它也可以免费用于一些教育和个人用途。

Godot是一个使用C++开发的免版税、多平台、开放源码的引擎。它是一个完全集成的游戏开发引擎。它还使用.NET来交付C#脚本。最近,戈多越来越受欢迎,它的社区也在迅速发展。它还获得了微软和Epic Games的支持和拨款。

著名的CryEngine也使用.NET。该引擎是用C++构建的,但它使用.NET来启用C#脚本。它是一个强大的游戏引擎,有着推动AAA游戏的伟大历史。您只需在超过收入门槛时支付版税。

在选择游戏引擎时,最重要的一点是如何获得支持。对于初学者来说,向同龄人或在网上的人寻求帮助是学习和保持动力的重要组成部分。对于专业人员来说,企业级支持对于降低技术风险至关重要。到目前为止,Unity拥有最大和最活跃的社区之一。它还提供付费的高质量企业支持。此外,Unity还拥有支持引擎的最大的服务和插件生态系统之一。戈多在业余爱好者中也越来越受欢迎,它的势头也在加速。

另一件要考虑的事情是你自己的技能,以及引擎对你的支持有多好。如果你有.NET背景,并且想要最新的C#特性,也许纯.NET引擎(如Stride、WaveEngine,甚至MonoGame)最适合你。您可以使用所有熟悉的工具,如NuGet和CLI。

一个积极开发的引擎为您提供了安全保障,即错误将得到修复,并将添加新的平台和功能。如果这是一个问题,商用发动机可能对你更好。

选择发动机时一个重要的考虑因素是价格。上面提到的所有游戏引擎都是免费的。一旦你达到了收入门槛,一些公司就会附加特许权使用费。有些引擎是完全免费的,也是免版税的。你可以根据你的财务计划选择战利品的去向。

游戏设计也可以决定你应该使用哪个引擎。一个引擎可能比其他引擎更适合某些类型的游戏。例如,使用完全集成的商业引擎来进行基于文本的冒险可能有些矫枉过正。

您想在.NET博客上记录与.NET游戏开发相关的项目、插件、库或游戏吗?您有没有想让我写的.NET游戏开发主题?