引擎層次化設計

2022-06-23 07:12:10 字數 1310 閱讀 2440

作為乙個引擎程式設計師,在我以往經歷的專案中經常會遇到這樣的問題,這個功能是不是該市現在引擎中,似乎放在邏輯中

(或者客戶端)也可以。每當舉棋不定的時候我都會想引擎到底該做什麼!?

我這裡我說說我的想法。

很久以前並沒有什麼引擎,所有東西都是寫在一起的,當開發新的遊戲時基本上都是從頭開始,這樣就有大量重複的工作。後來

一些聰明的程式設計師將那些可以在各個遊戲中使用的**獨立出來,並作成乙個庫,這樣便有了引擎。

其實這已經很清楚了,引擎應該是可以在各個專案中進行重用的部分,或者說可以公用的模組。雖然現代的引擎更加複雜,模組

更加豐富,但他依然沒有改變它原有的職能。如果說某個所謂的引擎在拿到其他專案時需要進行大量的改寫,那麼可以說這個東

西不是引擎,至少是很糟糕。

接下來簡單說一下我的zeusengine引擎的一些分層設計思想

引擎邏輯

||\/

引擎功能模組集合

||\/

底層從上到下越底層重用性越高。

引擎邏輯作為引擎與遊戲直接相關的一層,就這一層而言既可以實現在遊戲邏輯部分(客戶端)也可以單獨增加這麼一層作為遊戲

邏輯與引擎之間的隔離。這一層可以在同型別遊戲之間進行重用。

引擎功能模組集合這一層就是通常所說的引擎,什麼聲音系統呀,物理系統呀,場景管理呀等等都在這裡實現。他和底層一起構成了引擎,並且一定要保證其不針對任何遊戲,這樣才能最大限度重用。

至於底層則是一些記憶體管理,執行緒控制,檔案系統,網路通訊,等等這些作業系統相關的東西,他作為對上層的支撐。同時這一層即

便不做遊戲引擎,隨便拿出來也可以直接用到其他地方,甚至是非遊戲的專案。

除此之外在資源層面也存在遊戲相關的問題,比如某遊戲對於匯出的模型有特出要求,這時就要去考慮到底是匯出外掛程式直接支援還是

按照通常到處之後增加乙個針對此類遊戲的二次加工配置檔案。這個問題並不是簡單的工作量問題,而是更深遠的重用問題。

我個人更傾向於底層資源就是通常的模型,動畫,紋理等等,可以在此基礎上增加一些具體應用的配置檔案,來對這些資源進行配

組合來實現具體遊戲的需求,這樣在資源這個層面也可以進行重用。

作為引擎開發人員,在專案過程中,通常並不能一開始就明確知道到底該對邏輯層面支援到什麼程度,面對這個問題,我個人的做

就是凡是還定不下來的,那通常就是遊戲邏輯相關,而不是引擎相關,在此時此刻他不應該是現在引擎中(隨著日後需求的明確並且

具有通用性,則可以新增到引擎中)。作為模擬只需要想想ansi c中的檔案操作就行,作為ansi c的開發人員並不知道使用者將操作文

件的格式,所以他們只提供了fopen,fwrite,fread,fprintf,fscanf這樣的函式,這就已經足夠了。

層 次 化 網 絡 設 計

層次化網路設計在網際網路元件的通訊中引入了三個關鍵層的概念,這三個層分別是 核心層 core layer 匯聚層 distribution layer 和接入層 access layer 1.核心層為網路提供骨幹元件或高速交換元件,高效速度傳輸是核心層的目標 2.匯聚層是核心層和終端使用者接入層的分...

IS IS 層次化設計

1 r1及r5處於area 49.0001,r2及r6處於area 49.0002,r3處於area 49.0003,r4則處於area 49.0004。2 is is的區域id與ospf是截然不同的,對於is is來說,其骨幹網路並不像ospf那樣是乙個唯一的 具體的區域 area0 而是由一系列...

層 次 化 網 絡 設 計

層次化網路設計在網際網路元件的通訊中引入了三個關鍵層的概念,這三個層分別是 核心層 core layer 匯聚層 distribution layer 和接入層 access layer 1.核心層為網路提供骨幹元件或高速交換元件,高效速度傳輸是核心層的目標 2.匯聚層是核心層和終端使用者接入層的分...