2

我们基于 Windows C++ Ogre 的游戏即将完成。在我们公开发布之前,我们必须解决这个问题:

如果没有更新到最新的 Dx9.0c 版本,Ogre 在许多测试计算机上会崩溃。所有这些计算机都已经安装了 9.0c,但那一定是一个旧的操作系统预安装的子版本,因此崩溃了..?

第一个问题是:如何确保用户拥有正确的 9.0c 版本,这样游戏才不会在用户面前崩溃,而是显示类似“Go get the latest 9.0c version from there ... .”?

第二个问题是:在游戏安装过程中,是否有一种标准的、自动化的方法可以将用户的计算机更新到最新的 9.0c 版本?那将是最好的解决方案。

非常感谢提前,

账单

4

2 回答 2

4

第一个问题是:如何确保用户拥有正确的 9.0c 版本,这样游戏才不会在用户面前崩溃,而是显示类似“Go get the latest 9.0c version from there... .”?

最好的办法是从 Game Installer 静默更新/安装 DirectX。连同其他所需的系统组件,如 PhysX、vcredist 等。默默地,不问“你想安装 DirectX”(用户可能不知道他是否需要 DirectX,如果已经安装,则不会发生任何事情)。
请参阅面向游戏开发人员的 DirectX 安装。另外,我建议您查看“游戏的安装和维护”

这是因为(我相信)当您制作游戏时,您应该假设计算机用户完全是白痴。即,如果您给出指示,预计用户会搞砸,损坏系统并为此责备您。与那种无声的 DirectX 安装相比,它几乎是万无一失的。此外,它更方便 - 用户不必寻找 DirectX 下载,并且可以在安装后立即播放。

第二个问题是:在游戏安装过程中,是否有一种标准的、自动化的方法可以将用户的计算机更新到最新的 9.0c 版本?那将是最好的解决方案。

AFAIK,DXSDK 包括 DirectX 可再发行组件,而 AFAIK 您应该将这些可再发行组件包含在您的产品中。

于 2010-07-15T11:45:23.050 回答
0

我遇到了同样的问题,但是由于 Ogre 开箱即用地支持 Direct3D 和 OpenGL,我只是尝试加载所需的 Directx 库(d3dx9_42.dll)的 LoadLibrary,如果失败,则跳过 Directx 渲染系统的加载。(我将渲染系统插件的加载从 plugins.cfg 文件中移出,以便在初始化时手动执行)。在这种情况下,我的应用程序转而在 OpenGL 上运行。

当然,如果您有特定于directx 的代码(例如hlsl 着色器或类似的东西),这将不起作用,在这种情况下,只需包含redist。只需与 Microsoft 和 EULA 核对一下,他们似乎反对静默运行 redist,因为他们希望用户首先接受协议。因此,为了 100% 正确,您需要以非静默方式运行 redist,或者在安装程序中包含带有您自己许可证的 MS EULa。

(人们似乎已经完成并且侥幸逃脱的另一件事,这意味着他们的应用程序运行没有任何问题,只是在他们的项目中包含所需的 directx dll(如 d3dx9_42.dll 或其他)。只需将它们复制到 bin目录,这样渲染系统总能找到它们。这似乎不是一个好的方法,但是嘿,如果它有效,为什么不呢?)

于 2011-01-06T22:53:37.447 回答