我只是想知道XNA缺少什么,可以将其视为游戏引擎。它完成了游戏引擎应做的所有事情(物理部分除外);它还支持有关游戏引擎的Wikipedia文章中定义的各个方面。
为什么XNA不被视为游戏引擎?
我只是想知道XNA缺少什么,可以将其视为游戏引擎。它完成了游戏引擎应做的所有事情(物理部分除外);它还支持有关游戏引擎的Wikipedia文章中定义的各个方面。
为什么XNA不被视为游戏引擎?
Answers:
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)
与更新图形渲染器上的缓冲区混合在一起。
what makes an sdk to be called a GameEngine?
框架提供了为特定类型的应用程序构建的最小体系结构。它使架构细节之外的实现细节的假设最小化。尽管跨平台游戏开发框架的目标可能是“提供(几乎)所有计算机游戏的共同点,而与平台无关”,并且可能仅实现诸如计时和实体管理之类的抽象因素,但XNA框架(隐含)目的是提供“(几乎)所有为在XNA CLR上执行而编写的计算机游戏所共有的内容”。鉴于此关注范围如此狭窄,因此他们能够不受惩罚地包含引擎功能。他们将所有内容捆绑在“框架”标题下,因为这表示您作为游戏开发人员将享有的一定的实现自由。
粗略地说,框架应尽可能不受限制,同时仍提供有用的基础。另一方面,引擎通常更侧重于特定功能,并且在使用它时,您接受会受到某些限制。
我从来没有使用过“游戏引擎”,但我对它的理解更多是作为一组预定义的工具,这些工具与预定义的骨骼游戏结构捆绑在一起,用于开发特定类型的游戏。可以肯定的是,用于开发特定类型游戏的结构是游戏引擎中的主要定义因素,这显然是上述Wikipedia文章所吸引的。对我而言,XNA框架更类似于第三方库集(例如AJAX),因为它向现有的裸机编程语言中添加了预构建的例程。对于您作为程序员可以和不能使用这些库例程执行的操作,它没有施加任何限制或指导。在我看来,这与引擎完全不同。然后我来自以商业软件/网络为中心的背景,
我已经使用XNA构建了一个游戏构想的框架,而且感觉就像我在使用C#上的另一个库一样。我将使用测试程序中破解的过程来制作Windows或Xbox的两三个游戏。
因此,正如我所说,在我看来,这与我理解的“游戏引擎”相去甚远,所以当我看到这篇文章时,我不知道为什么有人会进行这种比较。我错了吗?