2016-03-05 35 views
0

我正在嘗試爲我製作的遊戲創建一種事件系統(缺少更好的定義)。我需要做的是擁有一組(硬編碼)「核心」功能,我可以以任意方式將它們連接在一起,並定義爲「事件」,然後我可以使用一些任意參數執行該事件。哪種設計模式適用於動態/模塊化「事件」系統?

如果這些「事件」是硬編碼的,f.ex會比較簡單。

hardcodedEvent(int this, int that){ 
    coreFunc1(this); 
    coreFunc2(that); 
    coreFunc3(coreFunc4(this + that)); 
    //etc... 
} 

但是整個的一點是,他們需要是動態的,模塊化的,這樣你就能夠在理論上,構建並表示流程圖/圖中的這些事件一樣的方式(例如: flow-chart編輯器從3d軟件)

最後,我需要這些事件可序列化,以便我可以保存並加載它們作爲文件或從/從數據庫。我已經看過回調,命令,觀察者和狀態機模式,但我不知道哪一個最適合這樣的事情,而且我還沒有和他們中的任何人一起工作太多。

回答

0

對於我來說,你已經記住了那種對你的問題有用的設計模式。這當然只是將它們結合起來的問題。

如果我理解的很好,您正在嘗試在某些事件(消息傳遞,信息交換,...​​)以及某些保存/加載/日誌邏輯(文件保存,數據庫...)點。

國家:對於狀態機的行爲,具有模塊化的狀態,似乎根據你的「流程圖」說明,但少的情況下,系統

觀察員適合的遊戲:對於發佈/訂閱邏輯(信息共享,...)

回撥:對於鬆耦合測井系統(同步中的東西,登錄到文件)

命令:用於封裝請求爲對象,也許用處不大這裏

我想補充兩個人到列表:

裝飾:因爲你的遊戲組件,事件似乎是一個「可鏈接」模塊化的方式(即:鏈接的核心功能,使更進化的)

生成器:對於您希望從文件加載遊戲的一部分 - 它可以抓取您的文件並重新創建遊戲中的狀態有被保存下來,封裝了一個重載邏輯......

希望它有幫助。