Unable to compile editor from source after upgrading Steam SDK

Hi everyone,

I wanted to update the Steam SDK to the latest version (v144 as of writing) due to some issues we’ve been having with Steam integration. I used a number of guides including these two here:

These are the steps I ended up following:

  1. Downloaded the latest Steam SDK, and placed it in Engine\Source\ThirdParty\Steamworks\Steamv144, preserving the sdk subdirectory
  2. Downloaded the latest Steam SDK redistributables and placed both the 32bit and 64bit DLLs into Engine\Binaries\ThirdParty\Steamworks\Steamv144 with the appropriate win32/win64 subdirectories
  3. Modified the Steamworks.build.cs file in Engine\Source\ThirdParty\Steamworks and set the SteamVersion to “v144” and STEAM_SDK_VER to “1.44”
  4. Removed the old v139 directories from both the source and binary locations

However, I am now unable to compile the editor from source. Doing so produces the following error:


#error:  Steam SDK not located.  Expected to be found in Engine/Source/ThirdParty/Steamworks/{SteamVersion}

I also tried modifying OnlineSubsystemSteamPrivate.h in Engine\Plugins\Online\OnlineSubsystemSteam\Source\Private to add an extra line:


#define STEAM_SDK_VER_PATH TEXT("Steamv144")

However, this causes redefinition conflicts and still produced the same error, and I suspect it is an outdated requirement from an earlier version of the engine, so I removed it again.

Can anyone help me understand why this isn’t working? I’m completely stumped and I can’t find any information on this error anywhere (Google produces literally 1 hit from a forum that has since been shut down).

Thanks!

I encountered the same thing, same as in previous versions of the documentation that line change just breaks it. It seems like whoever wrote the docs for this never actually tested their own instructions. I could just be dumb but yeah, same problem :confused:
Have a look into how the Advanced Sessions plugin handles it.

Thanks for the response :slight_smile:

I haven’t used the advanced sessions plugin before, can you remember what changes you had to make to fix the solution? I tried cleaning the solution and rebuilding it from scratch but it doesn’t seem to help even after I removed that STEAM_SDK_VER_PATH line.

I did this not too long ago and didn’t run into any issues. Here’s the Steamworks.build.cs changes:



        /** Mark the current version of the Steam SDK */
        string SteamVersion = "v144";
        Type = ModuleType.External;

        PublicDefinitions.Add("STEAM_SDK_VER=TEXT(\"1.44\")");
        PublicDefinitions.Add("STEAM_SDK_VER_PATH=TEXT(\"Steam" + SteamVersion + "\")");




The logic just below that is what is throwing that error:



        string SdkBase = Target.UEThirdPartySourceDirectory + "Steamworks/Steam" + SteamVersion + "/sdk";  <- VERIFY THIS LOCATION EXISTS.
        if (!Directory.Exists(SdkBase))
        {
            string Err = string.Format("steamworks SDK not found in {0}", SdkBase);
            System.Console.WriteLine(Err);
            throw new BuildException(Err);
        }



Thanks for the reply Matt :slight_smile:

Here is what my v144 directory looks like, with the full path visible as well:

https://i.gyazo.com/25bf16df262bf8a70900bd32e8e52160.png

Then, this is what my Steamworks.build.cs looks like:

https://i.gyazo.com/03eee6bbe6925ecfdb478ea8e18df553.png

From what I can see, it should be looking for the directory Steamworks/Steamv144/sdk which definitely exists as shown above. However, I’m still unable to compile and I’m completely stumped :frowning:

Found your problem. Open up OnlineSubsystemSteam.Build.cs and change the following:



    public OnlineSubsystemSteam(ReadOnlyTargetRules Target) : base(Target)
    {
        string SteamVersion = "Steamv144"; // Change from Steamv139
        bool bSteamSDKFound = Directory.Exists(Target.UEThirdPartySourceDirectory + "Steamworks/" + SteamVersion) == true;

        PublicDefinitions.Add("STEAMSDK_FOUND=" + (bSteamSDKFound ? "1" : "0"));
        PublicDefinitions.Add("WITH_STEAMWORKS=" + (bSteamSDKFound ? "1" : "0"));


The STEAMSDK_FOUND define being 0 is what causes that error to appear, you’re getting it because you nuked the previous directory so it no longer exists. :slight_smile:

That solved the problem, the engine now compiles nicely! :slight_smile:

Thank you very much for that, it’s odd that none of the tutorials I found out there mentioned OnlineSubsystemSteam.Build.cs, I guess that is a newer addition in a recent engine version?

Is this somthing you added to “OnlineSubsystemSteam.Build.cs” or an edit, mine look pretty different then either of yours, but that might just be engine and sdk updates, I am using 24.3 and sdk 148a

They could have changed it by now. All I did was change the version # it was pointing to. Ignore the rest of the lines.

So I think they changed it however I did manage to fix my problem so its a mute point if anyone is having the same problem I had (steam overlay only showing in standalone but not builds) look at my other post https://forums.unrealengine.com/comm…-for-steam-146 , thanks for the reply Matt.