特别是对于2D游戏,特别是silverlight/wpf游戏.
如果您考虑一下,可以将游戏对象划分为其视图(屏幕上的图形)和视图模型/模型(对象的状态,ai和其他数据).在Silverlight中,将每个对象设置为用户控件,将模型和视图放入单个对象中似乎很常见.我认为这样做的好处是简单.但是,它可能不那么干净,或者在潜在的"游戏引擎"方面有一些缺点.
你对这件事有什么看法?使用MVVM模式进行游戏开发有哪些优点和缺点?性能如何?欢迎所有的想法.
您可能会遇到性能问题,因为MVVM通常会在WPF中导致大量数据绑定功能,以实现清晰的分离.然而,它仍然是一个很好的主意,值得追求; 如果需要,您可以随时分析应用程序并优化某些元素.最有可能的是人工智能是门控而不是UI整合.
至于确定在哪里划分模型| 查看模型| 查看,我想采取以下方法:
模型是与直接用户交互无关或几乎没有任何关系的一切.这将包括游戏规则引擎,AI等.视图模型以明确定义的方式与模型交互,其中用户可以控制或接收关于游戏模型中发生的事情的反馈.
我尝试为界面的每个主要组件创建View Models.例如,如果你正在构建一个RPG,你可能有一个InventoryViewModel,CharacterStatsViewModel,WorldMapViewModel等.我通常不会为单个控件/小部件创建它们(比如健康指示器,项目字形或'+'符号以升级)除非他们有一个相当复杂的界面.
视图当然是用户最终如何进行交互和观察,这是非常简单易懂的.一个好处是您可以为给定的ViewModel创建多个视图,因此您可能有一个大型视图用于库存,也可以有一个较小的视图用于快速访问重要项目,例如,如果您与它们交互的方式基本上是相同.
总之 - 太棒了!
事实上,Josh Smith刚刚发布了一本关于MVVM的书,他将游戏作为他的解释性应用.建议你先阅读Ward Bell 对 Josh作品的优秀(和免费)批评.