2

大家好,我开始设计一个新的小游戏引擎,我假设游戏引擎是一个 DLL,然后为游戏构建一个项目,该项目将使用这个 DLL 并输出一个 EXE 文件。

但后来我读到了最新的 ID Tech Game Engines 以及他们是如何反其道而行之的。( http://fabiensanglard.net/doom3/index.php )

但并没有真正解释为什么。我觉得它与修改有关,因为只有游戏(在这种情况下为 DLL)在相当长一段时间内向公众开放,而引擎 (EXE) 是封闭源代码。

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

据我所知,DLL 项目应该包含所有可重用的代码。正常项目应该是引用可重用 DLL 的应用程序。通过这种方式,您可以在 DLL 项目中构建一个可用于任何其他未来项目的框架。

我能想到的另一个唯一原因是 AFAIK 仅将 DLL 的名称记录在程序文件中,没有文本或数据,因此如果游戏可能比引擎大,它可能会使可执行文件的大小更小。

[编辑]

我想到了另一个原因:引擎是一个 EXE,所以它可以在没有游戏 DLL 的情况下使用?喜欢 CAD 或脚本等工具?

4

1 回答 1

1

如果您在应用程序(例如游戏)中使用库,那么您的应用程序的 EXE 具有零个或多个自己的 DLL,消耗具有一个或多个 DLL 的库。

如果您有一个通用环境加载自定义其行为的元素,从而使其成为一个特定的游戏,那么您就有一个带有 EXE 和零个或多个 DLL 的环境,它使用配置来加载各种 DLL 和配置文件以确定其行为。

要么很简单,你的应用程序中可能应该有两个以上的程序集。

例如,一个(EXE)用于加载主配置和模块并将它们全部连接起来,一个用于主 UI,一个用于图形,一个用于物理,一个用于 AI 等等。

于 2013-02-21T00:42:53.017 回答