Steam-enabled servers on GameLift

Another topic.
I did not find any topic where this problem would be solved.

How do I activate steam on gamelift servers?
I literally can’t use steam features.

Setup:
Unreal Engine Server + Steam

Fleet ports:
TCP 27015-27030 - Steam
UDP 27015-27030 - Steam
UDP 7777-7778 - Unreal Engine

How it works on default win server:

  1. Install Steam
  2. Run Server

Steam initialization is successful, everything works.

At first, I tried to install Steam via install.bat, nothing happened, fleet went into error at the activation stage.
Then I connected to the active server from my fleet via RDP. I installed Steam and restarted the server through the processes. When reconnecting, nothing has changed. Steam still can’t be initialized.

When the server cannot initialize Steam, it switches to subsystem NULL. The player has a Steam subsystem. When the player connects to server, server crashes.

Hi @ezburbon ,

Sorry you’ve run into this issue,
Can you provide the fleetId and/or the install.bat script used that caused your fleet to go into ERROR to help debug what went wrong there?

A couple further questions for the issue experienced after manually installing steam & restarting the process:

  1. Is this error the same as the one seen without Steam installed on the instance (i.e. is this an issue with the server process finding the steam install)?
  2. When restarting the server process, did you do so manually? GameLift will try to always keep a server process running so its possible that this issue could be caused by multiple server processes running at the same time. Are you able to see any other server process running?
  3. Can you provide a fleetId for this issue as well (will help the GameLift team further debug what went wrong)

Hello! :slight_smile:
Sadly that fleet was deleted, can’t find that one.

  1. Same error, steamworks wont init.
  2. I tried to end server task via task manager, then gamelift just restarted process automatically. I checked logs again, steamworks still wont init even after steam installation. And no, there is only 1 process.
  3. I created a new one fleet-ac689e3f-292d-47f5-a34f-b52e4e4faf98

So i just tried again.
I bought dedicated server (not from aws) with Windows Server 2012 R2, which Aws GameLift servers using.

Same server build was used on both servers

What i did on this server to make everything works:

  1. Installed dependencies (Otherwise server wont run)
  2. Installed Steam
  3. Opened port 7777(only) in firewall for tcp and udp. (Inbound rules)
  4. (Only for test) Installed Java SDK and GameLiftLocal version, so i can test GameLift too

So i started GameLiftLocal by (java -jar GameLiftLocal.jar -p 9080) and then started server
GameLift init check
SteamWorks init check
Everything works

Then i tried same thing on brand new fleet

  1. Dependencies installed via install.bat, server is running and i can connect to it
  2. I connected to server via RDP and installed Steam client + restarted server process trough task manager, so steam installed and 1 server process is running on server.
  3. Port 7777 opened in fleet settings
  4. GameLift already running on server

So everything should be same, but on GameLift servers steam wont init.

Random Windows 2012 R2 server:

AWS GameLift server:

I found more requests on unreal engine forum about this problem and no one knows how to fix this.
I can’t understand why it works with GameLiftLocal but don’t work on GameLift servers.

Looking around, this is most likely an unreal-specific problem. It’s hard to say what might be going wrong, but I would suspect it likely has something to do with a dependency of one kind or another, though perhaps other issues could be at play. e.g. perhaps permissions since on GameLift it will be running as a specific user, or perhaps some configuration, etc isn’t happy about the location the server is running from.

My best advice would probably be to put in a pause or something prior to attempting to initialize steam (just to give you time to attach tooling) and see what’s happening with the process using e.g. Process Monitor (procmon.exe), WinDbg, or similar. If you do that on your GameLiftLocal setup and your GameLift one hopefully you will be able to see what’s different.

You may also want to try a different version of UE – I came across this bug. Not sure this is the same issue that you’re hitting, but perhaps worth a shot.