游戏引擎作为EXE文件和游戏作为DLL文件?

3

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

但是,我读到了最新的ID Tech游戏引擎,以及它们采用的相反方式。(http://fabiensanglard.net/doom3/index.php

虽然没有真正解释原因。但我感觉这与modding有关,因为在很长一段时间内,只有游戏(在这种情况下是DLL)对公众开放,而引擎(EXE)是封闭源代码。

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

据我所知,DLL项目应具备所有可重复使用的代码。普通项目应该是应用程序,该程序将引用可重复使用的DLL。这样,您可以在DLL项目中构建框架,可用于任何其他未来项目。

我能想到的另一个原因是,据我所知,程序文件中仅记录DLL的名称,不包括文本或数据,因此如果游戏可能比引擎更大,则可以使可执行文件大小更小。

[编辑]

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

1个回答

1

如果您在应用程序中使用库,例如游戏,则具有带有零个或多个自己的DLL的应用程序和使用一个或多个DLL的库。

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

无论哪种情况,您的应用程序可能都需要不止两个程序集。

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


是的,我知道。例如Stefan Zerbst的“3D游戏引擎编程”深入探讨了每个模块使用不同的DLL。但它将游戏作为中心部分来保持一切联系。这就是为什么我问是否有隐藏的原因让引擎(在IDTech4的情况下,“引擎”是除了图形模块之外的所有内容,该模块位于不同的DLL中)成为中心部分(EXE文件),并将游戏作为DLL加载的原因。 - Robert Rodriguez
构建一个通用的游戏环境,根据模块和配置转化为特定的游戏,远远超出编写使用其他模块的游戏,并且不能轻松地重复使用于其他游戏的水平。 - Danny Varod
你能给个例子吗?我相信你可以使用模块实现相同的通用游戏环境。 - Robert Rodriguez
查找复合应用程序架构。 - Danny Varod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接