2013-02-21 110 views
0

嗨,大家好我開始了一個新的小遊戲引擎的設計,我假設遊戲引擎是一個DLL,然後爲使用這個DLL並輸出一個EXE文件的遊戲構建一個項目。遊戲引擎作爲EXE和遊戲作爲DLL?

但後來我閱讀了最新的ID技術遊戲引擎,以及他們如何以相反的方式進行操作。 (http://fabiensanglard.net/doom3/index.php

這不是真的解釋爲什麼。我覺得它與modding有關,因爲在發動機(EXE)是封閉源的情況下,只有遊戲(在這種情況下,DLL)向公衆開放了很長一段時間。

但我想知道是否有其他原因。

由於我知道DLL項目應該有所有可重用的代碼。正常的項目應該是應用程序,它會引用可重用的DLL。通過這種方式,您可以在DLL項目中構建一個可用於其他任何未來項目的框架。

我能想到的另一個唯一原因是,AFAIK只有DLL的名字被記錄在程序文件中,沒有文本或數據,所以如果遊戲可能比引擎大,它可以使可執行文件的大小更小。

[編輯]

我已經想到了另一個理由,它是這樣的:發動機是一個EXE所以它可能是,它可能沒有一個遊戲DLL使用嗎?像CAD或腳本等工具一樣?

回答

1

如果您在應用程序中使用庫例如一個遊戲,那麼你有一個應用程序與一個EXE與零個或多個自己的DLL消耗一個庫或一個或多個DLL。

如果你有一個通用的環境加載元素來定製它的行爲,從而使它成爲一個特定的遊戲,那麼你有一個EXE和零個或多個DLL的環境,它使用配置來加載各種DLL和配置文件來確定它行爲。

要麼你很容易,你可能應用程序中有兩個以上的程序集。

E.g.一個(EXE)用於加載主配置和模塊並將它們全部連接起來,一個用於主UI,一個用於圖形,一個用於物理,一個用於AI等。

+0

是的,我確實知道。例如Stefan Zerbst的「3D遊戲引擎編程」深入探討了爲每個模塊使用不同的DLL。但它將遊戲作爲把所有東西放在一起的核心部分。這就是爲什麼我問是否有引擎的隱藏原因(在IDTech4的情況下,「引擎」是除了進入不同DLL的圖形模塊之外的所有東西)是中心部分(EXE文件),並將遊戲加載爲一個DLL。 – 2013-02-21 13:48:17

+0

建立一個通用的遊戲環境,根據模塊和配置變成一個特定的遊戲,除了編寫使用其他模塊的遊戲之外,不能輕易地被其他遊戲重複使用。 – 2013-02-21 14:06:30

+0

你能舉個例子嗎?我相信你可以使用模塊實現相同的通用遊戲環境。 – 2013-02-22 11:36:19