2010-02-25 71 views
6

我最近跳入XNA池,并在C#中学习所有框架的细节。我在研究中注意到的一件事是,似乎没有被广泛接受的“适当”方法来实现GameComponents。XNA GameComponent实现首选项...?

阅读this thread(等等)之后,我发现的喜好的游戏开发者广泛。我已经看到了从未使用GameComponents在所有(或仅微),而有些人则使用它们一切,一直到播放器/敌台,导弹等一些主张然后也有一些采取更温和方法,并为中高级别实体(如屏幕,渲染器,场景等)保留GameComponent体系结构,这些实体又包含并驱动其更细粒度的游戏单元。

在这一天结束,它是由游戏开发商,以确定如何最好地实施该框架。由于StackOverflow与精明的开发人员密不可分,他们已经忘记了比我所知道的更多的东西,所以我想在我继续沿着这条路走下去,并且自己使用框架之前,先了解一下这个共识是什么。

人照顾与他们的想法附和?提前致谢!

回答

2

我是很新,XNA以及所以采取这个答案与一粒盐。

我认为它可以归结为一种风格偏好。我不确定使用GameComponent和更多手动方法之间的性能特征,但我知道,对我个人而言,我很快就感到沮丧,试图利用GameComponent,因为它没有真正融入我的思维或编程风格。在我看来,我是从OOP,程序,功能和其他编程范例中挑选出来的东西的组合。 GameComponent似乎正在采用严格的面向对象方法。

但我会说,让一切一个GameComponent,或甚至一般的一类,其中表现而言,可以成为问题。在游戏开发世界中,最大可读性和可维护性的问题似乎在刀刃上,在这种情况下,有时候你真的需要从代码中榨取优化。例如,有时最好将你的一个游戏对象变成一个结构体(值类型),这样你就可以节省一些内存,并停止讨厌的垃圾收集器使你的游戏滞后(正如我在this question I asked中学到的)。

+0

感谢您的回应!我听说使用Game.Components集合会导致低开销,但听起来像是您在其他方面竞争。你认为创建自己的实体层次结构/管理系统可以提供更高的性能潜力吗? – Syndog 2010-02-25 23:15:32

+0

对不起,我真的不知道。你当然可以得到更多的控制,所以也许你可以挤出更多的表现。但是,MS也许知道他们在做什么,并且从GameComponent中挤出性能开始:)但是对于某些对象,特别是如果你打算在屏幕上有很多对象(比如子弹),最好留下来性能方面的结构 – Bob 2010-02-25 23:21:27

+0

GameComponents将在内部实施为列表,无法获得比这更高的效率!至于结构,我不确定这是一个好主意,在C#中传递结构将涉及大量的复制值。垃圾收集器在xbox上速度很慢,在PC上几乎可以忽略它。 – Martin 2010-02-25 23:46:05