为什么XNA不被视为游戏引擎?


13

我只是想知道XNA缺少什么,可以将其视为游戏引擎。它完成了游戏引擎应做的所有事情(物理部分除外);它还支持有关游戏引擎的Wikipedia文章中定义的各个方面。

为什么XNA不被视为游戏引擎?


19
@Miro没道理。
共产主义鸭子

2
重点是什么?如果它完成了您需要的工作,请使用它。如果没有,那就不要。谁在乎人们如何称呼它?无论如何,它只是一个标签,主要用于营销猴子;)
Maik Semder 2011年

仅仅是因为评论共产党鸭子回答了我在这个问题上的
Ali1S232

4
@Maik Semder根本不是标签。引擎和框架是两个截然不同的事物,而XNA是后者。区分并理解XNA不是引擎很有用,否则当您发现您实际上可能需要在XNA中创建引擎或者它不提供任何插件时,您可能会感到非常困惑。像实际引擎一样发挥功能。
doppelgreener

3
@Maik这是我们工作原理的一部分。我说driver,您知道它是什么,不是,它做什么以及如何使用它。当我说框架时,应该发生类似的事情-但前提是您认识到框架是什么,什么不是框架(引擎)。考虑到这些实际含义,我主要反对您说“谁在乎人们如何称呼它?无论如何,这只是一个标签”
doppelgreener

Answers:


28

Microsoft XNA是Microsoft 提供的具有托管运行时环境的一组工具,可促进计算机游戏的开发和管理。XNA试图使游戏开发人员不必编写“重复的样板代码”,并将游戏制作的不同方面整合到一个系统中。

它被设计为框架-实际上,XNA是Microsoft XNA Framework-因此从技术上讲,它不是名称上的引擎。

没有“引擎”-如果您注意到,您是从XNA.Framework.Game派生您的主类,并且必须自己重写draw和update函数。开箱即用没有中央渲染系统,输入系统或音频系统。有SpriteBatch和顶点类,有KeyboardState,还有一些音频类。.但是它们只是底层绘图代码的抽象。

编辑:为有用起见,如果将某事物标记为引擎,框架,库或工具集,那为什么会很重要?

为了使事情更清晰:我正在XNA中开发引擎。显然,我无法在像乔纳森(Jonathan)提到的虚幻(Unreal)中做到这一点。但是,有一些我觉得XNA没有的重要事项:

即插即用:我希望能够制作某种模板-具有此HP,此网格,此动画和BOOM!我的游戏中有一个NPC。

隐藏的底层-XNA已经做到了,但是我不想摆弄GameServiceProviders。我只想一起推东西。

游戏与引擎分离-可能有一个“游戏”类,但我想将我的逻辑和代码与基本系统分离。我不想if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)与更新图形渲染器上的缓冲区混合在一起。


我同意您必须重写绘图和更新设置,但这并不意味着它没有渲染引擎,要点是它使您可以随时准备绘制所有东西,而这些不仅仅是抽象的绘图调用,仅查看其示例即可。它没有什么比2d GameEngine少(我没有检查3d的东西),据我所记得,它具有输入控制器,我的意思是它只是框架,因为Microsoft如此命名还是出于某种逻辑原因?
Ali1S232 2011年

1
@Gajet:请考虑一下,网上正在讨论如何在XNA中创建引擎,而不是针对虚幻引擎或CryEngine的讨论。我认为游戏引擎的一个共同特征是,您只需插入这些位,事情就会发生(TV Tropes断言,引擎在这方面可以由数据驱动)。相比之下,XNA基本上让您自己完成工作的每一分钱-您不必创建中间件即可与设备交互。
doppelgreener 2011年

1
而且,我不相信我已经找到了游戏引擎的明确定义,但是我知道有游戏引擎,而XNA根本不做任何事情(除了提供中间件,还有一些非常简单的低级组件)。
doppelgreener

@乔纳森·霍布斯(Jonathan Hobbs):现在我明白了你在说什么,但是我再次尝试了GameBryo(NetImmerse),这被认为是一个游戏引擎,但是直到lightspeed它的功能少于XNA本身,这仅仅是一个中间点,所以我认为我们可以将问题标题更改为what makes an sdk to be called a GameEngine?
Ali1S232

1
但是,如果您确实想学究,可以使用现有引擎作为框架开发引擎。许多人采用了3级地震技术,然后制造了更实用的发动机。再说一次,如果您确实想要的话,也可以完全不用“引擎”制作游戏。将xna称为框架是更正确的方法,但是我不知道如何与“引擎”区分开来,因为它没有像“框架”那样严格地定义。
四分

5

框架提供了为特定类型的应用程序构建的最小体系结构。它使架构细节之外的实现细节的假设最小化。尽管跨平台游戏开发框架的目标可能是“提供(几乎)所有计算机游戏的共同点,而与平台无关”,并且可能仅实现诸如计时和实体管理之类的抽象因素,但XNA框架(隐含)目的是提供“(几乎)所有为在XNA CLR上执行而编写的计算机游戏所共有的内容”。鉴于此关注范围如此狭窄,因此他们能够不受惩罚地包含引擎功能。他们将所有内容捆绑在“框架”标题下,因为这表示您作为游戏开发人员将享有的一定的实现自由。

粗略地说,框架应尽可能不受限制,同时仍提供有用的基础。另一方面,引擎通常更侧重于特定功能,并且在使用它时,您接受会受到某些限制。


2

我从来没有使用过“游戏引擎”,但我对它的理解更多是作为一组预定义的工具,这些工具与预定义的骨骼游戏结构捆绑在一起,用于开发特定类型的游戏。可以肯定的是,用于开发特定类型游戏的结构是游戏引擎中的主要定义因素,这显然是上述Wikipedia文章所吸引的。对我而言,XNA框架更类似于第三方库集(例如AJAX),因为它向现有的裸机编程语言中添加了预构建的例程。对于您作为程序员可以和不能使用这些库例程执行的操作,它没有施加任何限制或指导。在我看来,这与引擎完全不同。然后我来自以商业软件/网络为中心的背景,

我已经使用XNA构建了一个游戏构想的框架,而且感觉就像我在使用C#上的另一个库一样。我将使用测试程序中破解的过程来制作Windows或Xbox的两三个游戏。

因此,正如我所说,在我看来,这与我理解的“游戏引擎”相去甚远,所以当我看到这篇文章时,我不知道为什么有人会进行这种比较。我错了吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.