Hello guys,
reading the unreal docs about steam i saw this line:
In shipping builds, the engine will also check to make sure the logged in user is properly subscribed to the game and will shutdown the engine if not. This is but one way to help secure the game. Using Steam DRM (see the Steamworks SDK) should further protect the game from tampering.
I did a packaging configured as Shipping for distribution, and noticed that the game doesn’t open the steam overlay if the steam client is closed, but it still continue to run and doesn’t close, same if i login in steam with an account not subscribed to our game, so i was wondering if this is the intended behavior, and what happens if we distribute it without the DRM protection.
Will the game continue running, even if without online subsystem, if the user launch it without steam?
Btw i’m asking this because if i build in shipping, prior to packaging, the game closes if the steam client is closed or if the logged account isn’t subscribed to the game, as i would expect, but after the packaging this behaviour changes.
Unreal Engine 4.24.2, after thorough investigation of what is expected I noticed the same - the packaged shipping build DOES not shutdown the game if Steam is absent.
There is a bug in the FOnlineSubsystemSteam::InitSteamworksClient:
if (bSteamworksClientInitialized)
This expects Steam client to be launched. Among other reasons, see full list why initialization can fail: Steamworks API Overview (Steamworks Documentation)
And only if Steam is initialized, the subscription check is performed:
bIsSubscribed = SteamApps()->BIsSubscribed();
Which later brings to app shutdown.
So if Steam is not launched then game just starts, which undermines the whole DRM protection.
Few workarounds:
fix the code
include your own Steam presence check and quit
use DRM protection form at the Steam website itself, to wrap your executable