Ir para o conteúdo

Amazon GameLift Server fleet creation error CREATE_FAILED, HandlerErrorCode: NotStabilized

1

I'm developing multiplayer game in Unity with authoritative server. I'm using GameLift's sample project for testing scenario and procedure. First I use Anywhere fleet to test sample project by following documentation. It worked as expected. Than I use Managed EC2 fleet by following documentation, than it gives me following error on CloudFormation when I upload it with unity editor

This AWS::GameLift::Fleet resource is in a CREATE_FAILED state.

Resource handler returned message: "Resource of type 'AWS::GameLift::Fleet' with identifier 'fleet-6013ad1d-e0f1-4372-a7b0-9701c201badd' did not stabilize." (RequestToken: 106bbc26-5b21-e0b4-7a3b-a17b1ab02e27, HandlerErrorCode: NotStabilized)

I had also created install.sh bash file and place it in root folder.
install.sh

#!/bin/bash
# For Amazon Linux 2023 (Server SDK 5.x)
sudo dnf install -y libicu libX11 libXext libXrender libXrandr libXcursor libXcomposite libXdamage libXi libXtst

# Essential: Ensure the binary can be executed
chmod +x BuildName.x86_64

I had also checked EC2 quota value which is 5

IAM user has following roles

  • AWSServiceRoleForAPIGateway
  • AWSServiceRoleForRDS
  • AWSServiceRoleForResourceExplorer
  • AWSServiceRoleForSupport
  • AWSServiceRoleForTrustedAdvisor

Granted permissions are

  • AdministratorAccess
  • GameLiftContainerFleetPolicy
  • GameLiftGameServerGroupPolicy

I'm using Unity 6.3LTS
Build platform Linux Server (headless build)
Build Architecture Intel 64-bit
SDK version Server SDK 5.x
Region us-east-1
Sample project
Documentation

  • I am having the same issue, and I found another user that opened a ticket on Github too: https://github.com/amazon-gamelift/amazon-gamelift-plugin-unity/issues/283

    Amazon Linux 2023 uses GLIBC version 2.34, while Unity Linux needs GLIBC version 2.35. The provided install.sh script tries to solve the situation by downloading and compiling GLIBC 2.35 and patching Unity libraries, but it fails both for me and for the guy in the Github thread too.

4 Respostas
0
Resposta aceita

Thank you for all who were helping me. Things that worked for me are following

  1. Optional: Disable "Enable Dedicated Server Optimizations" in Player settings.

  2. Used this install.sh file.

    2.1. Change line ending of file from CRLF -> LF
    2.2. Change sudo dnf install to sudo yum install. This thing worked for me.

  3. Changed Server Build OS in Managed EC2 Fleet section of Amazon GameLift Editor GUI. From Amazon Linux 2 (AL2) to Amazon Linux 2023.

respondido há 17 dias
0

Hi, we have released 3.2.1 plugin that has an example install script for Linux builds for Unity 6.3 to address Amazon Linux 2023 GLIBC dependency issue: https://github.com/amazon-gamelift/amazon-gamelift-plugin-unity/blob/main/ExtraServerResources/install.sh

You can merge it to your existing install.sh

AWS
respondido há 2 meses
  • When I use updated SDK 3.2.1 with unity version 2022.3 LTS. It work fine When I use it with unity version 6000.3.2f1 (LTS) and 6000.3.10f1 (LTS) it is not working. It gives me same error on both unity versions

    SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT The server process did not call InitSDK() within the time expected. Check your game session log to see why InitSDK() was not called in time. ComputeName: i-0151adf51f66392ba and Location: us-east-1 SERVER_PROCESS_CRASHED Server process exited without calling ProcessEnding(), compute(i-0151adf51f66392ba), location(us-east-1)

  • After using this install.sh file, now I'm getting this error in logs of fleet.

    configure: error: *** These critical programs are missing or too old: make *** Check the INSTALL file for required versions.

0

Here are a few things that can help you debug:

  1. Build target: Make sure you're building with the Linux Server (Dedicated Server) platform in Unity Build Settings — not Standalone Linux. The GameLift Server SDK code is behind #if UNITY_SERVER preprocessor directives, so a standard Linux build won't include the InitSDK() code path at all.
  2. install.sh output: Check your fleet event logs and verify the install.sh actually completed the glibc 2.35 compilation successfully. The build can fail if dependencies like gcc, make, or bison aren't available on the instance.
  3. SSH onto the instance: You can follow https://docs.aws.amazon.com/gameliftservers/latest/developerguide/fleets-remote-access.html to remotely access the EC2 instance even if your fleet is in an ERROR state. You may manually try running the game server executable to trace down the stack.
AWS
respondido há um mês
    1. I had double checked my build. I'm exporting headless linux server build.
    2. I had checked fleet logs. glibc-2.35 compilation completed successfully. I'm using this https://github.com/amazon-gamelift/amazon-gamelift-plugin-unity/blob/main/ExtraServerResources/install.sh bash file of install.sh
    3. I had checked GameLift sdk version 3.2.1 on Unity 6000.3.2f1 and Unity 6000.3.10f1 I'm still getting following error in fleet logs

    configure: error: *** These critical programs are missing or too old: make *** Check the INSTALL file for required versions.

-1

The "NotStabilized" error indicates that your fleet failed to complete the activation process successfully. This typically occurs during fleet validation when Amazon GameLift attempts to launch and verify your game server on the EC2 instances.

Based on the error, here are the most likely causes and troubleshooting steps:

Common causes for fleet activation failure:

  1. Runtime Configuration Issues: The executable path specified in your runtime configuration may not match the actual binary location in your build, or the binary may not have proper execute permissions despite your install.sh script.

  2. Server Process Initialization: Your game server may not be calling the Server SDK initialization methods correctly or within the expected timeframe. The server must call InitSDK() and ProcessReady() within the timeout period.

  3. Missing Dependencies: Even with your install.sh script installing libraries, there may be additional dependencies required for Unity Linux builds that aren't being installed or the installation may be failing.

  4. Build Validation Failure: The game server executable may be crashing on startup or failing to run properly on the Amazon Linux 2023 environment.

Recommended troubleshooting steps:

  1. Check Fleet Events: In the GameLift console, navigate to your fleet and view the event logs. Look for specific error codes like FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND, FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE, SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT, or SERVER_PROCESS_PROCESS_READY_TIMEOUT. These will provide more specific information about what failed.

  2. Review Server Logs: Access the pre-signed log URLs from the fleet events to examine your server's output and error logs. These logs are available for 15 minutes and will show you exactly what's happening when GameLift tries to start your server.

  3. Verify Runtime Configuration: Ensure your launch path in the runtime configuration exactly matches your binary name and location. For Unity Linux builds, verify the path includes the correct executable name.

  4. Test Install Script: Make sure your install.sh is being executed properly and all dependencies are installing successfully. Consider adding logging to the script to verify execution.

  5. SDK Integration: Double-check that your Unity game server is properly integrated with the GameLift Server SDK and calling ProcessReady() within the expected timeframe after initialization.

The fleet event logs will be your best source of detailed information about why the fleet failed to stabilize.
Sources
Event - Amazon GameLift Servers
Fleets in the Amazon GameLift Servers console - Amazon GameLift Servers

respondido há 2 meses

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.

Conteúdo relevante