Integrating Steamworks and Configuring Achievements
Begin by enabling the necessary plugins in your Unreal Engine 4 project. In the Editor, go to Edit > Plugins, then activate both Online Subsystem and Online Subsystem Steam. Restart the editor after making these changes.
Next, modify your Config/DefaultEngine.ini file to include the following configuration:
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=2066920
bRelaunchInSteam=true
GameVersion=1.0.0.0
Achievement_0_Id="ACH_WORLD_1"
Achievement_1_Id="ACH_WORLD_2"
Achievement_2_Id="ACH_WORLD_3"
Achievement_3_Id="ACH_BOSS"
Achievement_4_Id="ACH_FINISH_ALL"
Achievement_5_Id="ACH_IMPOSSIBLE"
Achievement_6_Id="ACH_WHAT"
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
Replace SteamDevAppId with your actual App ID from Steamworks. This ID is obtained during app creation in the Steam Partner Portal. Note that Steam does not email you upon approval—you must check manually.
The achievement identifiers (e.g., ACH_WORLD_1) must match those defined in your Steamworks dashboard. Remember: unachieved icons must be manually uploaded as grayscale images—Steam does not auto-convert them.
Verifying Steam Integration
To test if Steam integration works:
- Ensure Steam is running.
- Launch the game directly from the
.uprojectfile via right-click → Launch Game. - Alternatively, package a development build and run it.
If the Steam overlay appears or a notification pops up in the corner, the plugin is active.
Preparing a Shipping Build
When packaging for release, disable Include Prerequisites Installer in the packaging settings. This reduces build size by ~40 MB, as Steam can handle runtime dependencies.
You must integrate the Steamworks SDK into your engine installlation:
- Download the latest Steamworks SDK (e.g., version 1.54).
- Place it in:
Engine/Source/ThirdParty/Steamworks/Steamv151/sdk(note theSourcepath). - Copy the following DLLs from your Steam client install or SDK into:
Engine/Binaries/ThirdParty/Steamworks/Steamv151/Win64/:steam_api64.dllsteamclient64.dlltier0_s64.dllvstdlib_s64.dll
After packaging, the shipping executable won’t connect to Steam unless launched through the Steam client. To test locally, create a file named steam_appid.txt in the same directory as your -Win64-Shipping.exe, containing only your App ID (e.g., 2066920).
Uploading to Steam
For builds under 2 GB, use direct ZIP upload via SteamPipe:
- Compress the contents of
WindowsNoEditor/(not the folder itself) into a ZIP. - In Steamworks, create a new Windows 64-bit depot.
- Go to SteamPipe → Build Generation, select "Upload depot as ZIP".
- Set the launch executable to just
YourGame.exe(no subfolder prefix). - Under Redistributables, enable:
- DirectX June 2010
- Visual C++ Redistributable 2022
This ensures the game runs on clean Windows installations without bundling prerequisites.
Setting the Desktop Icon
Upload an .ico file under Installation → Client Images → Client Icon. The icon must include a 32×32 pixel image, but for clarity, embed multiple resolutions (e.g., 16×16, 32×32, 64×64, 256×256). Tools like IcoFX can generate such multi-resolution icons from a single PNG.
Applying Steam DRM
Steam’s DRM wrapper validates ownership and ensures Steam starts before the game. It deters casual copying but is not robust against determined attackers.
To apply:
- Navigate to Security → DRM in Steamworks.
- Upload your
-Win64-Shipping.exe(the larger binary from theBinariesfolder). - Download the wrapped EXE and replace the original in your depot before uploading.
Note: Re-wrap only after finalizing your build, as each packaging generates a new EXE. Linux builds may fail post-DRM—test thoroughly.
Legal and Attribution Requirements
Before launch, complete Epic Games’ publisher obligations:
- Submit the UE publishing notification form (includes CAPTCHA verification).
- File quarterly revenue reports once earnings exceed $100,000 (5% royalty applies).
Create an EULA using Epic’s template. Replace placeholders:
[Product]→ Your game title[Licensor]→ Your name/company[Agreement]→ "EULA"
Upload this in Steamworks under Store Assets → EULA. Add the following credit to your game’s credits screen:
[Product Name] uses Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere. Unreal® Engine, Copyright 1998 – [Year], Epic Games, Inc. Alrights reserved.
Replace [Product Name] and [Year] accordingly.
Updating Your Game
To push updates:
- Upload a new depot build as before.
- Generate a new build and set it as the default branch.
- Delete outdated builds from the build history to save storage.
Steam handles delta updates automatically—users typically download only changed portions (e.g., 10 MB for 100+ MB of modified assets).