x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Steam shipping build only works when adding steam_appid.txt

  • Running 4.10.2

  • Multiplayer Shootout template

Following the wiki, packaging the project as a Shipping build requires you to copy over the Steam SDK dlls in your packaged project's Binaries/ThirdParty/Steamworks.

These are the only instructions I've found on the hub, so I did that.

But apparently, that's not enough because I needed to add a steam_appid.txt containing the number '480' for Steam's universal test appID for it to work. (work meaning the Steam overlay shows up and I can create/join sessions)

Is this normal? I thought this was an automated process when the .exe was built. Why does adding a simple steam_appid.txt in 'ProjectName/Binaries/Win64/' make it work all of a sudden as a Shipping project?

However, a Development packaged project works straight away without needing to copy over Steamworks DLLs at all or adding a steam_appid.txt

Product Version: UE 4.10
Tags:
more ▼

asked Jan 24 '16 at 10:55 PM in Packaging & Deployment

avatar image

shahrizai
103 9 9 15

avatar image Vindomire Jan 25 '16 at 12:12 AM

love to know how you even got that far. i followed about 4 different tutorials and all failed for me. no steam overlay no matter what i do.

avatar image shahrizai Jan 25 '16 at 04:24 AM

All I did was dissect the Multiplayer Shootout project which is setup for Steam right now, and I also followed Rama's Steam tutorial on the wiki.

I made a brand new project and pieced it together and I also did some bugfixing from the Multiplayer Shootout, the workflow in the BP wasn't that clean.

It works perfectly for me, I can create sessions and join them, tested on 3 different computers with 3 different Steam accounts and their Steam usernames show up in my scoreboard.

I'm just wondering why the Shipping Build requires a steam_appid.txt. I thought that was already included. The development build doesn't need it.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

Hi shahrizai,

I know we discussed this elsewhere, but someone pointed out this post to me, so I figured I'd update it in case anyone else has the same question.

The steam_appid.txt file is just a text file with the steam appid assigned from Steam in it. It's required to be in the game root folder when running with Steam. In non-shipping builds, it's generated automaticallly and deleted when the engine shuts down gracefully, but it needs to be manually created for Shipping builds. The engine uses the SteamDevAppId value when it generates the file.

The steam_appid.txt file is only required for Shipping builds that are not run through Steam, so it's really only a development thing. This isn't intended to be released with the game; after properly uploading and instrumenting your build through Valve AND launching from the Steam client, the text file is no longer necessary. The Valve SDK site might have more information on why it's necessary for development. Oh, and it is required when distributing dedicated server builds.

That said, it's harmless to distribute it, especially now while you're using the 480 testing appID.

Additionally with Shipping builds currently, you'll sometimes need to run it through the Steam client to get the Steam Overlay to show up. You can do this by adding a non-steam game to your library and opening it from there.

Hope that helps!

more ▼

answered Feb 05 '16 at 03:50 PM

avatar image muchcharles Jan 03 '19 at 01:30 AM

Just ran into this. For anyone googling this for dedicated servers, steam_appid.txt must go in [Gamename]/Binaries/[arch], for a linux dedicated server that's [Gamename]/Binaries/Linux

avatar image gustmes Feb 06 '19 at 08:55 PM

Does the txt file need to go in the packaged folder, or the project folder? Also, my packaged folder does not have a [GameName]/Binaries folder, it has a [GameName]/Engine/Binaries. Is that where I should put it?

Or even inside [GameName]/Engine/Binaries/ThirdParty/Steam[VersionNumber] ?

avatar image muchcharles Feb 06 '19 at 09:58 PM

It should go adjacent to the binary that runs your server (not the GameName.sh script in the root, but the actual binary that it runs). I don't know why your layout is different, my stuff is all based on ShooterGame.

In my GameName.Build.cs I just add this now:

     if (Target.Platform == UnrealTargetPlatform.Linux && Target.Type == TargetType.Server)
     {
         RuntimeDependencies.Add("$(ProjectDir)/Binaries/Linux/steamclient.so");
         RuntimeDependencies.Add("$(ProjectDir)/Binaries/Linux/steam_appid.txt");
     }

That causes the files to get copied during packaging. Your paths may be different.

And add $(ProjectDir)/Binaries/Linux/steam_appid.txt into source control (it might not be desireable to have that in source control if you are running linux clients as well as servers on some checkouts as it may get overwritten).

You can find instructions elsewhere on how to get the right steamclient.so file for 64bit.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question