跳轉到內容

Pyrogenesis 引擎/模擬

來自華夏公益教科書

任何遊戲的最重要的方面是其遊戲玩法。在 Pyrogenesis 中,模擬可以被認為是執行遊戲玩法的地方。模擬是引擎的一部分,它接收來自玩家(包括 AI)的命令,並將它們轉換為遊戲世界中的動作。

模擬子系統在 simulation2/Simulation2.cpp 中定義。它的核心類 CSimulation2Impl 由 ??? 例項化,並從單位管理器(CUnitManager)和地形(CTerrain)構建。僅從這一點,我們就可以推斷出模擬處理單位如何相互作用以及與地圖地形的互動方式。

當 CSimulation2Impl 被例項化時,它還會初始化一個元件管理器(CComponentManager?)。元件是在理解模擬工作原理方面最關鍵的概念之一。從程式設計角度來看,元件僅僅是透過元件管理器訪問的子系統。例如,有一個路徑查詢元件用於推匯出跨越地形的最短路徑,一個聲音管理器元件用於輸出音樂和聲音效果,以及一個彈道管理器元件用於驅動諸如箭頭和長矛之類的彈道計算。

但是,雖然這些子系統(元件)中的每一個都只被元件管理器例項化一次(我認為),但它們可以與遊戲世界中的任何實體關聯(我認為),並且每次只能與一個這樣的實體相關聯(我認為)。因此,作為模擬的使用者,將模擬視為由一組實體組成,每個實體“擁有”(與之關聯)一個或多個元件,可能更容易理解。例如,一個士兵單位可能有一個路徑查詢元件,因此它可以在地圖上找到自己的路,一個攻擊元件,因此它可以攻擊它遇到的任何敵人,以及一個裝甲元件,因此它可以處理其他單位造成的傷害。


Clipboard

待辦事項
所有其他事項。


關於如何為整個會話載入單個元件例項:對於單個元件,您需要將其附加到系統實體,這不幸地需要進行 C++ 更改。位置是:source/simulation2/Simulation2.cpp:128

華夏公益教科書