使用官方引擎时,如何实现强制玩家通过Steam拉起游戏

您好,

<br/>

我们希望强制玩家通过Steam拉起游戏,我们看到引擎的OSS Steam有这样一段逻辑

<br/>

/**
 * Get relaunch settings from OnlineSubsystemSteam configuration
 *
 * @param RequireRelaunch enforce the Steam client running precondition
 * @param RelaunchAppId appid to launch when the Steam client is loaded
 *
 * @return if this sequence completed without any serious errors
 */
bool GetRelaunchSettings(bool& RequireRelaunch, int32& RelaunchAppId)
{
#if !UE_BUILD_SHIPPING && !UE_BUILD_SHIPPING_WITH_EDITOR
    // Get SteamDevAppId and set it as RelaunchAppId
    if (!GConfig->GetInt(TEXT("OnlineSubsystemSteam"), TEXT("SteamDevAppId"), RelaunchAppId, GEngineIni))
    {
       UE_LOG_ONLINE(Warning, TEXT("Missing SteamDevAppId key in OnlineSubsystemSteam of DefaultEngine.ini"));
       return false;
    }

    // Should the game force a relaunch in Steam if the client isn't already loaded
    if (!GConfig->GetBool(TEXT("OnlineSubsystemSteam"), TEXT("bRelaunchInSteam"), RequireRelaunch, GEngineIni))
    {
       UE_LOG_ONLINE(Warning, TEXT("Missing bRelaunchInSteam key in OnlineSubsystemSteam of DefaultEngine.ini"));
    }

#else
    // Always check against the Steam client when shipping
    RequireRelaunch = true;
    RelaunchAppId = UE_PROJECT_STEAMSHIPPINGID;
#endif

    return true;
}

<br/>

在Shipping版本下,看上去只有改变UE_PROJECT_STEAMSHIPPINGID这个宏才能指定Steam的AppId,但只有重编引擎才能修改UE_PROJECT_STEAMSHIPPINGID这个宏。在使用官方构建好的引擎版本时,有没有什么好的办法实现这个功能?

[Attachment Removed]

你好,UE_PROJECT_STEAMSHIPPINGID是一个DRM功能。默认是0不会启用。此时App ID会通过这两种方式来确定:

要么通过Steam库启动游戏时由Steam传进来要么通过游戏可执行文件同目录下的steam_appid.txt文件来确定,您可以看一下~

[Attachment Removed]

您好,我们的需求是,希望如果玩家双击游戏的exe启动游戏,那游戏自动关闭,然后自动从Steam拉起游戏,引擎的相关逻辑在下图中:

[Image Removed]此时,由于RelaunchAppId是0,导致这段逻辑并不会被执行,我们的需求是希望启用这段逻辑,也就是说,我们想开启这个DRM功能,要如何开启?

[Attachment Removed]

我又看了一下steam_appid.txt来指定的方式更适合开发测试版本,发布版不建议使用。我觉得您的这种情况可以拷贝一份该模块的代码到项目的plugin中,在项目中开启这个宏来解决

[Attachment Removed]

好的了解了,我们讨论下方案,感谢

[Attachment Removed]