Websocket connection issue with Plugin in Unreal when using Gamelift Anywhere on dedicated server

0

Hi! I've tried to follow these guides: https://docs.aws.amazon.com/gamelift/latest/developerguide/unreal-plugin-anywhere.html for setting up Testing on a local machine and https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-engines-setup-unreal.html for generally setting up unreal correctly. I'm using Unreal Engine 5.1.1 Source together with the GameLiftPlugin for Unreal Version 1.0.0, which contains the GameLiftServer Version 5.1.0.

I have successfully started and tested GameLift Anywhere with my project on two different, local machines running Windows 11. But anytime I try to start the Server on a dedicated server, I get the following result:

Connection to GameLift websocket server failed. Retrying connection if possible.
Connection to GameLift websocket server failed. Retrying connection if possible.
Connection to GameLift websocket server failed. Retrying connection if possible.
Connection to GameLift websocket server failed. Retrying connection if possible.
Connection to GameLift websocket server failed. Retrying connection if possible.
Connection to GameLift websocket server failed. See error message in InitSDK() outcome for details.
1001[2023.12.28-15.46.50:614][  0]GameServerLog: ERROR: InitSDK failed : (
[2023.12.28-15.46.50:614][  0]GameServerLog: ERROR: Handshake with GameLift websocket server failed. Please verify that values of ServerParameters in InitSDK() are correct. For example, process ID needs to be unique between executions, and the authentication token needs to be correct and unexpired.

I have tried running the server on two different hosters (Hetzner and Strato) on both Ubuntu 22.04.2 and Windows Server 2022 Standard Edition. The servers are equipped with the necessary hardware to handle the game server.

I have made sure, that all values of ServerParameters in InitSDK are correct. The process ID is unique every time. The authentication token is updated in a script before running the server and is correct and unexpired - I validated it using the AWS Cli.

I have tested the websocket connection and am able to connect to the websocket using TELNET. I have temporarly completely deactivated all Firewalls on each system to test for any issues there.

I am aware of this very similar issue: https://repost.aws/questions/QUhBkyXMcuQ26sKPa2Z2aDIw/how-to-debug-issues-with-gamelift-anywhere-initsdk But I was able to start the game server on my development machine without issues and additionally have checked every parameter multiple times for issues.

I am also aware of potential issues when building the server SDK with an OpenSSL version that is incompatible to UE5.1.1, but I have checked multiple times and made sure that the SDK was built with the compatible OpenSSL 1.1.1n. The libcrypto.so.1.1 and libssl.so.1.1 or equivalent for Windows have been shipped accordingly with the project files.

I'd be incredibly grateful for any help I can get. I'd also be grateful for anybody that can confirm Gamelift Anywhere is working for them on their own (non-EC2) dedicated server, just so I know that it's possible to run it.

  • Is there any way, that this note: "If calls to InitSDK() are failing for game builds deployed to Anywhere fleets, check the ServerSdkVersion parameter used when creating the build resource. You must explicitly set this value to the server SDK version in use. The default value for this parameter is 4.x, which is not compatible. To resolve this issue, create a new build and deploy it to a new fleet." from the docs https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk5-unreal-actions.html has something to do with it?

  • Hey David, that note in the docs link has a typo. It should be referring to the GameLift Build resource used with Managed EC2 fleets, and is not related to Anywhere fleets.

  • "The authentication token is updated in a script before running the server and is correct and unexpired - I validated it using the AWS Cli." - Just to clarify, are you using the authentication token returned by GetComputeAuthToken?

David
asked 4 months ago197 views
2 Answers
0
Accepted Answer

So, I've figured this out together with the AWS Business Tech Support.

Previously AWS GameLift Websocket Connections have been automatically declined by CloudFront when coming from specific IP adresses, like TOR nodes, temporary proxies and - this was my issue - webhosting and cloud providers like Hetzner and Strato. So, setup was correct, but the Connection was declined because of this rules list: https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-anonymous

The AWS Gamelift team has adjusted the rule to remove the HostingProviderIPList from the Blocking List, which now allows servers rented on hosting providers like Hetzner to connect to Gamelift. Thanks again!

David
answered 2 months ago
profile picture
EXPERT
reviewed 19 days ago
0

Hi David, I can confirm that i got Gamelift Anywhere working on my own server. This guide(https://aws.amazon.com/blogs/gametech/unreal-engine-5-dedicated-server-development-with-amazon-gamelift-anywhere/) helped a lot when i did the setup. Could you try following this? also, please confirm that "The authentication token is updated in a script before running the server and is correct and unexpired - I validated it using the AWS Cli." - you want to be using the authentication token returned by GetComputeAuthToken.

AWS
answered 2 months ago
  • Hi! Thanks for the answer. This was also one of the guides I've been following. My issue was not, that it didn't work, my issue was, that it didn't work on specific server machines. Take a look at my answer for the resolution :)

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions