2008-11-02 68 views
3

作爲一個業餘愛好項目,我正在嘗試創建一個基於瀏覽器的小型遊戲 - 我認爲使用MVC模式編碼它是「正確的事情」,將遊戲的「引擎」與演示分開。這將是一個簡單的「RPG」遊戲,玩家的角色徘徊在與怪物戰鬥並收集物品的世界。我應該使用什麼模式進行基於瀏覽器的遊戲?

我的問題是我陷入了發動機的結構。在目前的設計中,大多數引擎都由「玩家的角色」對象支配 - 有位置,怪物或物品等物品,但它是一個角色,可以執行大部分行動:旅行,攻擊,購買物品等。知道有可能設計這種引擎的其他方式,但不知何故,我無法弄清楚,所以我在這裏要求一些提示或建議。

哦,服務器後端將是php + mysql,如果這在任何方面很重要。

回答

5

「但它是一個字符,完成大部分的行動:」

是的,但是......

首先,分開他們的性格人類用戶(「玩家」)。角色不是玩家。

您有大量的對象。地點,被動的東西,活躍的東西(怪物)和角色。他們都互相交流。

你必須完全分離責任。角色不主宰,角色僅僅參與。

如果您將每個可能的人類玩家動作定義爲命令,您會發現它更令人愉快。 命令的每個子類都可以更改模型的狀態。東西移動,怪物移動,角色移動(角色,而不是玩家)。

拾取東西或放下它們都是命令的子類,它將字符移動到位置或位置。玩家發出命令;該命令更新位置,項目和角色。

該字符是被動的。事情大多是被動的。地點大多是被動的。 Command對象具有更新模型中所有各種事物之間的狀態和關聯的算法。

如果你想更進一步攜帶這一點,每個命令可以是備忘錄與撤消能力以及一個做能力。那麼這款遊戲的歷史就是這些歷史紀念品

+0

我從播放器中分離字符,主要是因爲我想允許多個字符 - 但我沒有想過要走這麼遠,所以謝謝你的建議。 – 2008-11-11 17:47:33

0

我對你的問題有點困惑。

MVC是一個獨立於你的遊戲引擎設計模式 - 無論底層引擎結構如何,你仍然需要一個MVC模式 - 用戶將與Views交互,並將視圖提交給Control。在你的情況下,「M」可能是當前遊戲狀態的一個相當複雜的模型。

我會從純數據驅動的角度思考這件事。發生的所有事情最終都是在Character模型上進行的操作。

0

該字符是模型的一部分,但該字符是抽象的 - 它只是服務器上的對象或數據結構。我用一種方法讓自己保持誠實w.r.t. MVC可以在沒有圖形視圖和控制器的情況下驅動模型。對於基於網絡的應用程序,您可以通過文本GET請求或通過XMLRPC等驅動它。

相關問題