2010-03-27 26 views
12

尤其適用於2D遊戲,尤其是silverlight/wpf遊戲。如果你考慮一下,你可以將一個遊戲對象分成它的視圖(屏幕上的圖形)和一個視圖模型/模型(對象的狀態,ai和其他數據)。在Silverlight中,將每個對象設爲用戶控件似乎很常見,並將模型和視圖放入單個對象中。我認爲這個優點是簡單。但是,也許它不太乾淨,或者在底層的「遊戲引擎」方面有一些缺點。MVVM如何用於遊戲?

您對這件事有什麼想法?使用MVVM模式進行遊戲開發有什麼優點和缺點?性能如何?歡迎所有的想法。

回答

11

總之 - 很棒!

事實上,約什史密斯剛剛發表了一本關於使用遊戲作爲他的解釋性應用的MVVM的書。建議您先閱讀Ward Bell的優秀(免費)Josh的作品critique

11

您可能會遇到性能問題,因爲MVVM通常會導致WPF中的大量數據綁定功能實現乾淨的分離。但是,這仍然是一個很好的主意,值得追求;如果需要,您可以隨時調整應用程序並優化某些元素。最有可能的將是AI門控而不是UI集成。

至於找出在哪裏分割Model |查看模型|查看,我喜歡採取以下方法:

  1. 該模型是與直接用戶交互沒有任何關係或無關緊要的一切。這將包括遊戲規則引擎,人工智能等。視圖模型以明確定義的方式與模型進行交互,用戶可以控制遊戲模型或接收有關遊戲模型中發生的事件的反饋。

  2. 我嘗試爲接口的每個主要組件創建視圖模型。例如,如果你正在構建一個RPG,你可能有一個InventoryViewModel,CharacterStatsViewModel,WorldMapViewModel等。我通常不會爲單個控件/小部件創建它們(如健康指示器,項目標誌符號或「+」符號以升級)除非他們有一個相當複雜的界面。

  3. 視圖當然是用戶最終如何進行交互和觀察的,這是相當直接理解的。一件好事是您可以爲給定的ViewModel創建多個視圖,因此您可能對清單具有較大的視圖,並且對於快速訪問重要項目也可能具有較小視圖,例如,如果與它們進行交互的方式本質上是相同。

+3

不錯。數字3聽起來特別有用。 – 2010-03-28 00:53:12