DOOM3 命令系統分析

2021-06-07 07:17:20 字數 1069 閱讀 8503

doom3命令系統中,重要的類有ideventdef負責管理命令的註冊宣告,idevent是命令

物件。該命令系統主要資料結構有 eventdeflist , freeevents,eventqueue,eventpool

其中eventpool是乙個宣告為 idevent 的 4096個物件的陣列,該陣列是命令物件的分配池。

這樣在實時執行時,省去了從堆中分配命令與在堆中釋放的時間。在初始化階段,呼叫

idevent::init()函式會將eventpool中的所有的命令節點都加入到freeevents列表中,以便

分配。而idevent::alloc函式是為上層分配命令的函式,該函式直接從freeevents列表中摘出

乙個idevent物件來給上層呼叫者使用,而當上層呼叫者對分配得的idevent物件呼叫free()時

會將當前idevent節點還給freeevents。由於freeevents的節點實際是來自eventpool故有命令數量

限制,最大命令數量不得超過4096個,若超過會關閉遊戲。

為了將命令加入佇列中,需要呼叫idevent的schedule函式,該函式會根據傳入的時間time

將該命令加入eventqueue命令列表的適當位置,該eventqueue是乙個根據時間遞增順序的命令列表。

schedule函式將遍歷eventqueue列表的所有項找到自己time的位置,然後插入之。

該命令系統的核心函式就是serviceevents(),該函式是乙個static member函式,該函式

會根據當前遊戲時間,將在當前時間之前的所有命令幫浦出並加以傳給idevent的object變數加以處理

並將處理後的命令返還給freeevents用於再分配。

命令的定義由ideventdef負責,該類的主要引數是name,formatspec.該類負責註冊命令的型別。

name變數是乙個const char* 該變數指定了命令的名稱。formatspec指定的是引數型別。當該ideventdef

構造時,會自動將自身儲存在static ideventdef* eventdeflist中。該eventdeflist是定義命令

的查詢表。

系統分析(3)

1.簡述瀑布模型 增量模型 螺旋模型 含原型方法 的優缺點 從專案特點 風險特徵 人力資源利用角度思考 瀑布模型 特徵 1 本階段活動的工作物件來自於上一項活動的輸出,這些輸出一般是代表本階段活動結束的里程碑式的文件 2 根據本階段的活動規程執行相應的任務 4 對本階段活動執 況進行評審 優點 1 ...

系統分析與設計(3)

瀑布模型 缺點 增量模型 缺點 螺旋模型 含原型方法 缺點 三大特點 用例驅動 以構架為中心 迭代和增量。關係 統一過程已經成為一種流行的構造物件導向系統的迭代軟體開發過程。它是一種基於 uml 的 以構架為中 心 用例驅動與風險驅動相結合的迭代增量過程。它將軟體開發過程要素和軟體工件要素整合在統一...

推薦系統 分析

收集使用者資訊的行為記錄模組 分析使用者喜好的模型分析模組 推薦演算法模組 推薦演算法 1.基於內容的推薦系統 content based recommendation 2.協同過濾推薦系統 collaborative filtering recommendation 3.混合推薦系統 hybrid...