簡體   English   中英

Box2D是否打破了MVC概念?

[英]Does Box2D breaks MVC concept?

Box2D建議結合並建模和查看游戲的物理引擎。 現在,我想使用MVC設計模式或基於MVC設計模式的框架(例如PureMVC的Robotlegs)來創建游戲。 如果我選擇Box2D,Box2D是否打破了MVC概念,這是真的嗎? 如果是真的,我應該擔心嗎?

我完全不覺得Box2D打破了MVC的概念(只要我們在這里談論Model-View-Controller ...我經常在縮略語中迷路了;)。

物理是模型的一部分 不是整個模型。

考慮模擬飛過2D景觀的導彈(例如this )。 “導彈”具有如何運動的模型。 其中一部分是質量,慣性矩,速度等。這是模擬的物理部分。

它還具有某種“ AI規則”來決定施加多少力,如何使導彈旋轉等。這些或通常稱為“轉向”力。 這是模擬的下一個升級階段,它是“推動事物前進”的一部分。

該模型還有很大一部分,該部分決定了導彈擊中某物(它是從物理學中獲得的)時該怎么做。 或者什么時候首先發射導彈。 或者導彈應該走的路線。

您可能可以走得更高,但是要避免的重點是,我從來沒有提到導彈是如何顯示或呈現給用戶的。 那就是觀點。

所以,我承擔所有這些:

模型(按層):

  1. 物理
  2. 運動
  3. 邏輯和推理
  4. 總體模擬或戰略

在任何這些情況下,任何時候都不會提及視圖...它們可以運行並存在,而不管它們是以2-D,3-D還是以綁在花栗鼠上的氣球顯示。 這些層可能會相互影響...物理層會檢測到最終導致LOGIC AND REASONING層狀態發生變化的碰撞等。

為了完整起見,控制器將用戶帶入其中。 用戶“使用”控制器來操縱模型。 我一直覺得這很難思考。 我喜歡具體的例子。

在“硬核定義”級別,用戶使用控制器為模型提供輸入。 所以我觸摸屏幕,導彈知道它應該飛向哪里。 模型得到一個命令“去這里”,導彈的AI接受該命令並“運行”。

另一方面,用戶也可以使用控制器來操縱視圖(這不是“硬核mvc”定義的一部分。請考慮在平板電腦應用中,捏捏會改變視口,但輕擊會提示導彈打擊“這個目標”,第一個改變視圖,第二個改變模型注意:這種情況可能是從MVC衍生出的更現代形式的模式的體現,而不是純粹的MVC。

無論如何,物理是模型的一部分,而不是整個模型。

這個有幫助嗎?

不,Box2D破壞MVC是不正確的 實際上,Box2D沒有將模型和視圖結合在一起,相反。 Box2D 完全不了解您選擇呈現視圖的方式,因此與MVC架構高度兼容。

考慮MVC時,游戲在概念上是棘手的,因為模型與視圖具有許多相似之處(與業務應用程序不同)。 但是,從體系結構中分離關注點仍然可以帶來很多好處。

正如Fuzzy所說,Box2D是游戲模型的一部分。

游戲中的MVC如下所示: 在此處輸入圖片說明

Box2D將被包裝在游戲模型類中。 您的渲染庫(您尚未說出要編寫的平台)將包含在View類中。 任何UI內容都在控制器中。

如果您想了解更多有關如何使用Coffee2中的Box2DWeb(用於物理)和EaselJS(用於視圖)將MVC用於HTML5游戲的信息,那么我在這里已進行了更多介紹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM