By using AWS re:Post, you agree to the Terms of Use
/Game Tech/Questions/
Questions in Game Tech
Sort by most recent
  • 1
  • 90 / page

Browse through the questions and answers listed below or filter and sort to narrow down your results.

1
answers
0
votes
65
views
asked 2 months ago

[Announcement] AWS announces support for Android, iOS, and MacOS games with AWS GameKit for Unreal Engine

AWS GameKit is now extended to support Android, iOS, and MacOS games developed with Unreal Engine. AWS GameKit, [launched on March 23, 2022](https://aws.amazon.com/about-aws/whats-new/2022/03/aws-gamekit-unreal-engine/), gives game developers a powerful tool set to quickly and easily build AWS powered game features directly from the Unreal Editor. With today's update, the AWS GameKit plugin for Unreal Engine now supports developers who are building games for Win 64, Android, iOS, and MacOS. Game developers can use the AWS GameKit plugin for Unreal Engine to integrate the following cloud-based game features: Identity and Authentication, Achievements, Game State Cloud Saving, and User Gameplay Data. With this release, these features can now be configured and packaged into games that run on mobile devices and PC. AWS GameKit includes complete solution for each game feature and an architecture design based on the [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc). Each feature comes with an AWS CloudFormation template for the backend architecture, plugin controls to manage the backend from the Unreal Editor, and sample C++ code and Blueprint assets to help you integrate the feature into your game. AWS CloudFormation templates provision all of the AWS resources needed to power each game feature and can be set up with just a few clicks and no prior experience with AWS tools and services. After the game backend is configured, simply add cloud-based feature functionality to the game client by calling the AWS GameKit API. AWS GameKit is a powerful tool set for game developers who want to self-manage a game's cloud resources. Each feature is fully customizable and runs in the developer's AWS account. Get started fast with the core AWS GameKit solutions, and customize and extend build to meet the needs of your game. AWS GameKit provides access to the source code to give visibility into each game feature and the ability to customize. With AWS GameKit, you can deploy backend services for your game to any of 17 AWS Regions, depending on resource availability for each of the game features. These AWS Regions include: US East (Ohio, N. Virginia), US West (Oregon, N. California), Canada (Central), South America (Sao Paulo), EU (Ireland, London, Paris, Frankfurt), Europe (Stockholm), Asia Pacific (Tokyo, Seoul, Mumbai, Singapore, Sydney), Middle East (Bahrain). Learn more and download AWS GameKit from the [AWS GameKit website](http://aws.amazon.com/gamekit) or our [GitHub Repository](https://github.com/aws/aws-gamekit-unreal/releases). Visit [AWS re:post](https://repost.aws/tags/TAtbJBs1j4Q76nb-HQavme0w/aws-game-kit) to reach out to us with any questions or share tips with other AWS GameKit users. Help us iterate and expand our game feature sets by sharing feedback and feature requests. If you are interested in joining the AWS GameKit interest list to receive latest news and updates, please [fill out this form](https://pages.awscloud.com/2022AWSGameKitInterestList_01-LandingPage.html) to stay up to date on announcements.
0
answers
1
votes
29
views
asked 2 months ago

4.27 Can't package project (windows)

Hey! I've created a blank project and configured all 4 features (tested on a sample map) and wanted to package the project for windows. I've tried both develop and shipping configuration. I've followed provided packaging guide by adding GameKitConfig into Additional Non-Asset Directories to Copy (as it's been told in here https://docs.aws.amazon.com/gamekit/latest/DevGuide/awsgamekit-dg.pdf) But on packaging I'm getting following errors (they are actually differs based on what build configuration is selected. Any tips on fixing it? Build error logs: Development: `UATHelper: Packaging (Windows (64-bit)): LogThreadingWindows: Error: Runnable thread TaskGraphThreadBP 28 crashed. UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: begin: stack for UAT UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: === Critical error: === UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: Assertion failed: IsValid() [File:C:\Program Files\Epic Games\UE_4.27\Engine\Source\Runtime\Core\Public\Templates/SharedPointer.h] [Line: 890] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff91555466c KERNELBASE.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff843090216 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff843094218 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842db242d UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842d06a45 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842d080a0 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: Runnable thread TaskGraphThreadBP 28 crashed. UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff880159a3b UE4Editor-AwsGameKitEditor.dll!<lambda_e3306f270c8206d8a5dae464b60dea3e>::operator()() [D:\Develop\Projects\AWSGameKit\Plugins\AwsGameKit\Source\AwsGameKitEditor\Private\AwsGameKitEditor.cpp:166] PackagingResults: Error: begin: stack for UAT PackagingResults: Error: === Critical error: === UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842aff045 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: Assertion failed: IsValid() [File:C:\Program Files\Epic Games\UE_4.27\Engine\Source\Runtime\Core\Public\Templates/SharedPointer.h] [Line: 890] PackagingResults: Error: [Callstack] 0x00007ff91555466c KERNELBASE.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff843090216 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff843094218 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842b11507 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842db242d UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842d06a45 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842d080a0 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff880159a3b UE4Editor-AwsGameKitEditor.dll!<lambda_e3306f270c8206d8a5dae464b60dea3e>::operator()() [D:\Develop\Projects\AWSGameKit\Plugins\AwsGameKit\Source\AwsGameKitEditor\Private\AwsGameKitEditor.cpp:166] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842b12860 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842aff045 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842b11507 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842b12860 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff842b19aa5 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff8430aff0b UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff8430a7050 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff842b19aa5 UE4Editor-Core.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff9173c54e0 KERNEL32.DLL!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff8430aff0b UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff8430a7050 UE4Editor-Core.dll!UnknownFunction [] PackagingResults: Error: [Callstack] 0x00007ff9173c54e0 KERNEL32.DLL!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: [Callstack] 0x00007ff917d6485b ntdll.dll!UnknownFunction [] UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: Crash in runnable thread TaskGraphThreadBP 28 UATHelper: Packaging (Windows (64-bit)): LogWindows: Error: end: stack for UAT PackagingResults: Error: [Callstack] 0x00007ff917d6485b ntdll.dll!UnknownFunction [] PackagingResults: Error: Crash in runnable thread TaskGraphThreadBP 28 PackagingResults: Error: end: stack for UAT` Shipping (same error for all aws dll files `UATHelper: Packaging (Windows (64-bit)): Writing manifest to D:\Develop\Projects\AWSGameKit\Intermediate\Build\Manifest.xml UATHelper: Packaging (Windows (64-bit)): Failed to delete file 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' UATHelper: Packaging (Windows (64-bit)): Exception: Access to the path 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' is denied. UATHelper: Packaging (Windows (64-bit)): Attempting to retry... UATHelper: Packaging (Windows (64-bit)): Failed to delete file 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' UATHelper: Packaging (Windows (64-bit)): Exception: Access to the path 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' is denied. UATHelper: Packaging (Windows (64-bit)): Attempting to retry... UATHelper: Packaging (Windows (64-bit)): Failed to delete file 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' UATHelper: Packaging (Windows (64-bit)): Exception: Access to the path 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-c-event-stream.dll' is denied. UATHelper: Packaging (Windows (64-bit)): ERROR: Exhausted all retries! UATHelper: Packaging (Windows (64-bit)): Failed to delete file 'D:\Develop\Projects\AWSGameKit\Binaries\Win64\aws-cpp-sdk-lambda.dll' PackagingResults: Error: Exhausted all retries!` Thanks!
1
answers
0
votes
67
views
asked 2 months ago

GameLiftLocal Crashes when commands are given to it

We are in the process of testing GameLift for our game. We have created an Amazon Linux 2 VM under Virtual Box and have a working sample server form Github working and also have GameLiftLocal running on the machine. We run Gamelift running the following command: ``` [ec2-user@vm_gamelift3 GameLiftLocal-1.0.5]$ java -jar GameLiftLocal.jar ``` This seems to result in a successful startup: ``` 05:22:54,823 INFO || - [SocketIOServer] main - Session store / pubsub factory used: MemoryStoreFactory (local session store only) 05:22:59,344 WARN || - [ServerBootstrap] main - Unknown channel option 'SO_LINGER' for channel '[id: 0x88185e57]' 05:22:59,353 INFO || - [SDKConnection] main - GameLift SDK server (communicates with your game server) has started on http://localhost:5757 05:22:59,390 INFO || - [SocketIOServer] nioEventLoopGroup-2-1 - SocketIO server started at port: 5757 05:22:59,450 INFO || - [SdkWebSocketServer] WebSocketSelector-13 - WebSocket Server started on address localhost/127.0.0.1:5759 05:22:59,655 INFO || - [StandAloneServer] main - GameLift Client server (listens for GameLift client APIs) has started on http://localhost:8080 05:22:59,705 INFO || - [StandAloneServer] main - GameLift server sdk http listener has started on http://localhost:5758 ``` We also get a good connection when starting up the game server sample locally. However, when we attempt to issue the local server a command, it always comes back with an exception ``` [ec2-user@vm_gamelift3 ~]$ aws gamelift create-game-session --endpoint-url http://127.0.0.1:5758 --maximum-player-session-count 2 --fleet-id fleet-123 ``` ``` An error occurred (NullPointerException) when calling the CreateGameSession operation (reached max retries: 4): ``` The server does not completely crash, but does give a warning and a call stack of the exception that was caught ``` 05:25:31,497 WARN || - [GameLiftSdkHttpHandler] GameLiftSdkHttpHandler-thread-0 - Caught exception java.lang.NullPointerException at com.amazon.gamelift.handlers.GameLiftSdkHttpHandler.validateHeaders(GameLiftSdkHttpHandler.java:84) at com.amazon.gamelift.handlers.GameLiftSdkHttpHandler.handle(GameLiftSdkHttpHandler.java:55) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79) at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82) at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:700) at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79) at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:672) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 05:25:31,554 WARN || - [GameLiftSdkHttpHandler] GameLiftSdkHttpHandler-thread-0 - Caught exception null ``` This exception also occurs when we just try to describe the sessions, so it seems to be any command you issue the jar on that socket. How do I resolve this so that I can get to actually testing my code? Thank you! David
2
answers
0
votes
28
views
asked 2 months ago

Turning off automatic backfill near end of game session (FlexMatch matchmaking)

Hi, I have enabled "automatic backfill" in my matchmaking configuration per the instructions in the docs: "Turn on automatic backfill" section of [https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-backfill.html](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-backfill.html). The backfilling itself works well. Calls from my client service to "StartMatchmaking" will, when expected, return a match to an existing game session. The problem I'm trying to solve now is that I don't want players to be backfilled into a game that's almost over. Item #4--"Turn off automatic backfill for a game session"--doesn't seem to work when I try to implement it on my game server: > **4. Turn off automatic backfill for a game session**. You can opt to stop automatic backfill at any point during an individual game session. To stop automatic backfill, add code to your game client or game server to make the GameLift API call StopMatchmaking. This call requires a ticket ID. Use the backfill ticket ID from the latest backfill request. You can get this information from the game session matchmaking data, which is updated as described in the previous step. What confuses me here is that I want to stop backfilling near the end of the game regardless of whether the game session has backfilled any players yet. The line "Use the backfill ticket ID from the latest backfill request" doesn't make sense if no backfill tickets have been received in the game session. Intuitively, it feels like there should just be some API I can call that opts a particular game session out of future backfill requests but I'm not seeing it. Any help would be greatly appreciated.
6
answers
0
votes
15
views
asked 3 months ago

[Announcement] AWS GameKit for Unreal Game Engine is now Generally Available

Today we are releasing AWS GameKit, a new solution that allows game developers to deploy and customize game backend features directly from Unreal Engine. AWS GameKit comes with AWS CloudFormation templates for each feature that follows AWS Solution Architect designs. AWS GameKit also comes with an integration code between the game backend features and Unreal Engine. AWS GameKit is for game developers looking to build AWS-powered game features directly from Unreal Engine with just a few clicks. With this release, developers have access to four game backend features: Identity and Authentication, Achievements, Game State Cloud Saving, and User Gameplay Data. AWS GameKit uses AWS CloudFormation templates to provision and connect all the necessary AWS resources together into a cohesive solution to power these features. Each feature follows the AWS well-architected framework to provide a secure, high-performing, resilient, and efficient infrastructure deployment that is fully customizable and runs in the developer's own AWS account. AWS GameKit also provides Unreal Engine Blueprints, C++ code, libraries, documentation, and sample UIs for each of the four game features. The provided AWS CloudFormation templates automatically configure cloud resources that allows game developers to programmatically apply AWS best practices with common abstractions. This leads to the rapid creation of cloud-connected game features without being an AWS expert. AWS GameKit can be used to deploy cloud-connected game backend features in 17 AWS Regions where applicable, dependent on feature requirement of available AWS primitives: US East (Ohio, N. Virginia), US West (Oregon, N. California), Canada (Central), South America (Sao Paulo), EU (Ireland, London, Paris, Frankfurt), Europe (Stockholm), Asia Pacific (Tokyo, Seoul, Mumbai, Singapore, Sydney), Middle East (Bahrain). Learn more and download AWS GameKit from the [AWS GameKit website](https://aws.amazon.com/gamekit/) or our [GitHub Repository](https://github.com/aws/aws-gamekit-unreal/releases).
0
answers
0
votes
16
views
asked 3 months ago

Client not receiving RTS message

I'm having trouble with one particular piece of code that is supposed to be sending a message to a client. Both pieces of code below are from my Realtime Server Script: ``` function onPlayerAccepted(player) { logger.info("..New player accepted: " + player.peerId); const newPlayerMessage = session.newTextGameMessage(OP_CODE_PLAYER_ACCEPTED, session.getServerId(), JSON.stringify(galaxyAndLocalPlayerState)); session.sendReliableMessage(newPlayerMessage, player.peerId); } ``` The above block within my realtime server script runs when a player is accepted, and the message is successfully received by the client (Unity). On the client side, logs show that OnDataReceived() **is called**. RTS Logs for above call: 02 Mar 2022 03:59:32,191 [INFO] (ManhuntServerScript.js) 96: ..New player accepted: 1 02 Mar 2022 03:59:32,191 [INFO] (index.js) 333: Received custom game message from sender: -1 with opCode: 100, targetPeerId: 1, targetGroupId: 0 ``` function onMessage(gameMessage) { switch (gameMessage.opCode) { case OP_CODE_TRAVEL_REQUEST: logger.info("..Travel Request Received from Peer " + gameMessage.sender + " to PlanetId: " + gameMessage.getPayloadAsText()); const travelResponseMessage = session.newTextGameMessage(OP_CODE_TRAVEL_BEGIN, session.getServerId(), JSON.stringify(playerStates)); session.sendReliableMessage(travelResponseMessage, gameMessage.sender); break; default: logger.info("..Unrecognized Op Code received: " + gameMessage.opCode); break; } } ``` The above block shows the message is being sent in the server logs, but is not received by the Unity client. I have ensured the op codes match. On the client side, logs show that OnDataReceived() **is NOT called**. RTS logs for above call: 02 Mar 2022 03:59:36,628 [INFO] (index.js) 333: Received custom game message from sender: 1 with opCode: 200, targetPeerId: -1, targetGroupId: 0 02 Mar 2022 03:59:36,628 [INFO] (ManhuntServerScript.js) 136: ..Travel Request Received from Peer 1 to PlanetId: 2 02 Mar 2022 03:59:36,629 [INFO] (index.js) 333: Received custom game message from sender: -1 with opCode: 102, targetPeerId: 1, targetGroupId: 0 --- The only thing I can think of is that possibly a realtime server can't send a message within onMessage() but that seems silly to me. Thanks in advance for any insight!
9
answers
0
votes
0
views
asked 4 months ago

Where to get started as a C/C++/C# developer?

Hello everyone, I've been a software and game developer for well over a decade, and I feel very at home with C, C++ and C#/.NET. I've done a lot of programming with DirectX SDKs and Unity, as well as desktop and mobile development. However, I don't really know much at all about the web and networking. But now I'm becoming very interested in what kinds of things I can do with AWS in game development, as well as with blockchain, AI/ML and cloud computing power. There seems to be more AWS services and packages than I can count though, and I'm really not sure which ones I should be pursuing and trying to learn more about and which ones are irrelevant to me and my job. The list of services, SDKs and packages is as impressive and inspiring as it is overwhelming and confusing! I'd like to be able to deploy some .NET applications to AWS to provide remote APIs for games and applications. To start with and get the hang of it, I just want to make a little minigame that lives on a server that a Unity or Unreal game can interact with through http requests. And I'll incrementally add some features to it as I start to get the hang of it. I'd also like to do some experimentation with blockchain software and services and see what kinds of interesting things can be accomplished with it. And beyond that, I'd eventually like to get into using AI/ML to accomplish goals in games and apps, harness cloud-based CPU/GPU processing power for heavy-lifting and even setup some real-time multiplayer game servers. I just don't know what tools/services/packages I need to dive into and start figuring out. I've found [the Visual Studio 2022 AWS package here](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.AWSToolkitforVisualStudio2022&ssr=false#overview), as well as [this AWS GitHub page](https://github.com/aws/dotnet) for .NET. I've also heard about Lambda. I really have no idea which ones are relevant to me or where I should start with this. To begin with, I want to run a .NET application on a server that applications can query and interact with and have it store and supply data for them, offer some remote APIs and requests, etc. I'd also potentially be interested in running some native C/C++ modules on servers. Can someone point me in the right direction and tell me what I need to set up and dive into first? I'm doing this in my free time when I'm not working on projects for work, so my time is very limited and researching and learning the wrong things would be a big setback for me. Any help or guidance is greatly appreciated!
1
answers
0
votes
11
views
asked 4 months ago

FlexMatch long matchmaking time

We are using the following matchmaking ruleset with a standalone configuration ``` { "name": "MatchmakingRuleset", "ruleLanguageVersion": "1.0", "algorithm": { "backfillPriority": "high", "batchingPreference": "random", "strategy": "exhaustiveSearch" }, "playerAttributes": [ { "name": "tournamentDefinitionID", "type": "string" }, { "name": "skill", "type": "number", "default": 0 } ], "teams": [ { "name": "player", "minPlayers": 0, "maxPlayers": 1, "quantity": 4 } ], "rules": [ { "name": "SameTournament", "description": "Match players to play in the same tournament type", "type": "comparison", "operation": "=", "measurements": ["flatten(teams[*].players.attributes[tournamentDefinitionID])"] } ] } ``` Since minPlayers is 0 for all teams, that means that when there are no other players matchmaking at the moment and no backfilling tickets, players can get a successful match with just their own ticket, in which event we create a new game, and the player enters this game alone. We then call startMatchBackfill with the same configuration and repeat the process until the game is full. This mean that at any given moment, any submitted ticket "should" always result in a MatchmakingSucceeded callback, so theoretically there should be no waiting for matchmaking. For some reason we are experiencing wait times of 5-10 seconds from when we call startMatchmaking until our matchmaking event listener lambda is called (wired through EventBridge), is there any way to speed this up? Is this a technical constraint? Is FlexMatch waiting for more tickets to enter the pool, and is there a way to configure this?
4
answers
0
votes
5
views
asked 4 months ago

GameLift adds support for more complex rules logic and longer string lists in FlexMatch

Hello GameLift devs, Today, the GameLift team is excited to announce three updates to FlexMatch. The updates expand existing matchmaking functionality that will allow you to create more evenly matched players teams with greater precision. The three updates are as follows: * **Support for compound rules**. Today, the behavior in a FlexMatch [matchmaker rule set](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rulesets.html) is that all of the rules must hold true to form a match. Effectively this means that all rules use the “AND” logical operator. With compound rules, more complex constructs are possible. FlexMatch now supports the following additional logical operators in addition to “AND”: “OR”, “NOT”, and “XOR”. * **Longer string lists**. FlexMatch allows you to pass in different [player attributes](https://docs.aws.amazon.com/cli/latest/reference/gamelift/start-matchmaking.html) to FlexMatch, e.g., numbers, strings, or a list of strings. String lists are currently limited to 10 strings. With today’s update, that limit is increased to 100. One common use case is to use the string list as a “blocklist” for players. Now, instead of blocking only 10 players, you can block up to 100. * **More flexible team selection**. FlexMatch “[property expressions](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rules-reference-property-expression.html)” are used to perform logical operations with player attributes regarding team selection. Previously, they were limited to apply to one or all teams, only. With today's update, you can use property expressions to target more than one team without having to target all teams. We’re excited to see what you can do with this greater flexibility with FlexMatch rules logic. For more information, please refer to the following links. [Compound rules](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rules-reference-ruletype.html) [Property expressions](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-rules-reference-property-expression.html) [API reference for string list attribute](https://docs.aws.amazon.com/gamelift/latest/apireference/API_AttributeValue.html#gamelift-Type-AttributeValue-SL) Mark Choi, GameLift PM
1
answers
0
votes
5
views
asked 5 months ago

How to communicate with GameLift Server with Java Client

I have a Java Client I am attempting to integrate with GameLift. I am able to use it to search for Active Fleets, Search Game Sessions, Create Game Sessions and Create Player Sessions. I do not know where to go from there. What API or Java method is used to communicate with the Server. I have the example Server setup and running. The example server code is shown here: https://docs.aws.amazon.com/gamelift/latest/developerguide/realtime-script.html The Java code I have written: //////////////////////////////////////// AmazonGameLift gameLift = AmazonGameLiftClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion("us-east-2") .build(); DescribeFleetAttributesRequest dfar = new DescribeFleetAttributesRequest(); DescribeFleetAttributesResult describeFleetResult = gameLift.describeFleetAttributes(dfar); CreateGameSessionRequest cgsRequest = new CreateGameSessionRequest().withFleetId(describeFleetResult.getFleetAttributes().get(0).getFleetId()) .withName("Sim Game") .withMaximumPlayerSessionCount(MAX_PLAYERS); CreateGameSessionResult cgsResult = this.gameLift.createGameSession(cgsRequest); byte[] array = new byte[[PLAYER_ID_LENGTH]]; // length is bounded by PLAYER_ID_LENGTH new Random().nextBytes(array); String playerID = new String(array, Charset.forName("UTF-8")); CreatePlayerSessionRequest cpsRequest = new CreatePlayerSessionRequest().withGameSessionId(cgsResult.getGameSession().getGameSessionId()) .withPlayerId(playerID); CreatePlayerSessionResult cpsResult = this.gameLift.createPlayerSession(cpsRequest); //////////////////////////////////////////////////////////////////////////////////////// I am assuming there is a way to communicate using to the Server using some call to cpsResult. My theory is to use cpsResult.getPlayerSession().marshal() But I do not understand how to use the marshall function. void marshall(ProtocolMarshaller protocolMarshaller) I am also not sure that is even the correct function to use. If anyone can point me in the right direction to start attempting Server communication I would be very grateful.
1
answers
0
votes
19
views
asked 6 months ago

Queue priorities with Spot fleets

Hi. According to documentation: https://docs.aws.amazon.com/gamelift/latest/developerguide/queues-best-practices.html#queues-design-spot >* When configuring priorities for a queue with Spot fleets, place cost near the top of the list. This will ensure that locations on Spot fleets will always take precedence over locations on On-Demand fleets, when available. Also: https://docs.aws.amazon.com/gamelift/latest/developerguide/tutorial-queues-spot.html > Prioritize the fleets in your queue. Fleet prioritization determines where the queue looks first when searching for available resources to host a new game session. You might choose to prioritize by Region, instance types, fleet type, and so on. When working with Spot fleets, we recommend either of the following approaches: > * If your infrastructure uses a primary Region with fleets in a second Region for back-up only, you want to prioritize fleets first by region, and then by fleet type. With this approach, all fleets in the primary Region are placed at the top of the list, with Spot fleets followed by On-Demand fleets. > * If your infrastructure uses multiple Regions equally, you want to prioritize fleets by fleet type, placing Spot fleets at the top of the list. I have a setup with 10 fleets (5 per region): 1 x On-Demand - c5.xlarge 4 x Spot - c5.xlarge, c5.2xlarge, r5.xlarge, m5.xlarge I've placed the On-Demand fleets last in the Queue and still the players are routed to those two On-Demand fleets instead of Spot ones. We are making the placements based on reported player latency. What am I missing? What is the explanation for this behavior? Thank you.
1
answers
0
votes
0
views
asked 8 months ago

How to SSH to instance and replace build in-place to iterate quickly

Hi folks, Just want to share some knowledge on how to iterate game server development quickly with a single fleet. The best practice is still to test out your server SDK integration with [GameLift Local](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-testing-local.html) first, to make sure you can successfully respond to a heartbeat. Otherwise, your fleet might go into ERROR if you deploy an untested build. However, GameLift Local is quite limited currently and doesn't support all features obtainable from Server SDK, so, sometimes it might be necessary to test in the actual GameLift EC2 environment. But there is another problem, uploading an updated build build and getting a new fleet to go ACTIVE takes a long time (20-40 minutes depending on your build) and is not viable for quick iteration. GameLift is currently working on revamping this process, in the mean time, here is a workaround: 1. Create a fleet with port 22 open. It's always a good idea to open port 22 for development, in case fleet is stuck in ACTIVATING and you cannot modify port settings until fleet is ACTIVE. Sample command: ``` aws gamelift create-fleet --region us-west-2 \ --name "TestFleet" --ec2-instance-type c5.large \ --ec2-inbound-permissions FromPort=6250,ToPort=6280,IpRange="0.0.0.0/0",Protocol=TCP FromPort=22,ToPort=22,IpRange="0.0.0.0/0",Protocol=TCP \ --build-id <build-id> \ --runtime-configuration ServerProcesses="[{LaunchPath="/local/game/gamelift-test-app",Parameters='port:6251 gameSessionLengthSeconds:10',ConcurrentExecutions=1},\ {LaunchPath="/local/game/gamelift-test-app",Parameters='port:6252 gameSessionLengthSeconds:10',ConcurrentExecutions=1}]" ``` 2. Once the fleet is ACTIVE, run the following script (you can also do this after the fleet has been ACTIVATING for a while, or is stuck in ACTIVATING, so that EC2 instance is created) ``` if [ "$#" -ne 1 ]; then echo "Usage: ./sshhost.sh fleetid" exit 1 fi FLEET_ID=$1 echo Fleet Id is $FLEET_ID aws gamelift update-fleet-****** INSTANCE_ID=$(aws gamelift describe-instances --fleet-****** echo Instance Id is $INSTANCE_ID IP_ADDRESS=$(aws gamelift describe-instances --fleet-****** echo IP Address is $IP_ADDRESS rm -rf /tmp/gamelift.pem aws gamelift get-instance-access --fleet-****** chmod 400 /tmp/gamelift.pem echo SSHING to host at $IP_ADDRESS ssh -i /tmp/gamelift.pem gl-user-remote@$IP_ADDRESS ``` 3. Run "`sudo su`" to assume the root access 4. Run "`rm -rf /local/game/``<FILES IN THE BUILD>` ” to unlink and delete the old build (it’s important to run rm instead of mv to unlink the running process, see stack overflow post: https://stackoverflow.com/questions/1712033/replacing-a-running-executable-in-linux) 5. Upload the new build to "/local/game" using SCP, sample command: ``` scp -i <path-to-gamelift.pem> <path-to-new-build> \ gl-user-remote@<ec2-ip-or-dns-name>:/local/game/<path-to-old-build> ``` 6. Run “`chown gl-user-server:gl-user ` `<FILES IN THE NEW BUILD>`” , need to use “`--resursive`” if you have directories, this will set the new files to the right permission so that the GameLift onbox process manager ("AuxProxy") can read them. 7. Run "`ps -efww | grep "sudo -H -E -u gl-user-server`” to get the running process ids 8. Run “`kill -9 ` `<PID>`” to kill the running processes, GameLift onbox process manager ("AuxProxy") will try to spin up a new process afterwards 9. Poll “`ps -efww | grep "sudo -H -E -u gl-user-server`” until a new process shows up 10. Create game sessions and connect the client to the new server build to test! 11. Repeat step 4-10 to iterate on the server builds.
2
answers
0
votes
12
views
asked 8 months ago

Running container-based games on GameLift

Hi everyone! Since GameLift has a limit of up to 50 game sessions per hardware node, I am trying to find anyway, how can I run more than 50 sessions per node (since the limit of 50 game sessions per node is a REALLY huge waste of resources for my lightweight game). The suggested way was to manage set up FleetIQ manually with EC2 machines (possibly with some built-in autoscaling mechanism). This way should work for us, except for one thing - in this case, we need to run raw binaries instead of containers. If we use simple binaries, we need to work somehow with monitoring, logging, implementing blue-green or canary deployments, and so on. All these concerns can be solved in an easier way by using containers. With the "containers" word I mean Docker container in this case. But running containers on raw EC2 instances seems like is not convenient enough: implementing things like blue-green or canary deployments is not really trivial, etc. I am thinking about the way with AWS ECS, based on EC2 instances. In this case, I can run 1 game session per container as much per node as I can. Fargate is not applicable in my case since the minimal limits for Fargate tasks are too huge for us and it will be a waste of computing resources again. My question is: Can I use GameLift with ECS at the same time? Why I want to use GameLift: it provides more robust Spot instances and these instances will be more suitable for the game. P.S. I also thought about AWS EKS with something like Agones but it's overkill for us, and managing EKS for us is too complex a task. @REDACTEDUSER
2
answers
0
votes
9
views
asked 8 months ago

GameLift adds Osaka and FleetIQ now supports Graviton2-powered instances for better price performance

Hi Game Devs, Today, we are excited to announce an update to Amazon GameLift that increases coverage for developers and enhances seamless, low-latency gameplay experiences for players in Japan. This update adds Asia Pacific (Osaka) Region to GameLift and enables our game developer customers to place servers in their multi-region fleets closer to players’ actual regional locations in Japan with Asia Pacific (Osaka) and Asia Pacific (Tokyo) regions. We are also happy to introduce that GameLift FleetIQ now supports next-generation [AWS Graviton2 processors](https://aws.amazon.com/ec2/graviton/). You can now use Graviton2-hosted game servers, based on the Arm-based processor architecture, in FleetIQ to achieve increased performance at a lower cost when compared to the equivalent Intel-based compute options. To learn more about this update, please visit [our blog post](https://aws.amazon.com/blogs/gametech/now-available-new-asia-pacific-osaka-region-and-graviton2-support-for-amazon-gamelift/). In summary, this GameLift update will: * **Deliver lower player latency from increased global coverage.** Now with 23 regions with the launch of Osaka region, game developers can place players closest to where they are playing to ensure a smooth experience using GameLift’s multi-region fleet. * **Better performance at lower cost.** GameLift FleetIQ now supports Graviton2-powered instances, including c6g, m6g, r6g instance families. Available regions are Asia Pacific (Mumbai), Asia Pacific (Seoul), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), South America (Sao Paolo), US East (N. Virginia), US East (Ohio), and US West (N. California), US West (Oregon). Best, Yi-Min GameLift Product Manager
0
answers
0
votes
2
views
asked 8 months ago

GameLift Plug-in for Unity now available

Hello GameLift devs, Today, the GameLift team is excited to announce the general availability of the GameLift Plug-in for Unity. With this update, you can use native Unity user interfaces and workflows to access GameLift APIs and deploy AWS CloudFormation templates for common gaming scenarios. The GameLift Plug-in for Unity provides everything you need to access GameLift APIs. After downloading and installing the plugin package into your Unity development environment, you can use the native plugin UI to configure their plugin settings, perform local testing of builds of their game server, and import and run a sample Unity game. The GameLift Unity plugin also includes five pre-built CloudFormation sample scenarios that you can customize for their game, making it easier to integrate GameLift with AWS. The five deployment scenarios include: * **Auth Only** - this scenario create a game backend service that performs player authentication. * **Single-Region Fleet** - this scenario creates a game backend service with a single GameLift fleet. * **Multi-Region Fleets with Queue and Custom Matchmaker** - in this scenario, GameLift queues are used in conjunction with a customer matchmaker. The custom matchmaker forms matches by taking the oldest players in the waiting pool. When there are enough players for a match, the AWS Lambda handler starts a queue placement. * **SPOT Fleets with Queue and Custom Matchmaker** - this scenario is the same as Multi-Region Fleets with Queue and Custom Matchmaker except it configures three fleets. Two of the fleets are SPOT fleets containing nuanced instance types. * **FlexMatch** - this scenario uses GameLift FlexMatch, a customizable matchmaking service for multiplayer games. You can deploy these five scenarios from the GameLift Plug-in for Unity. Get stated now by visiting our GitHub page: https://github.com/aws/amazon-gamelift-plugin-unity. For more information, please refer to our [Release Notes](https://docs.aws.amazon.com/gamelift/latest/developerguide/release-notes.html#release-notes-summary) and [What’s New](https://aws.amazon.com/about-aws/whats-new/2021/09/aws-amazon-gamelift-plug-in-aws-cloudformation-templates-unity/) post. Mark Choi, GameLift PM
3
answers
0
votes
12
views
asked 9 months ago
  • 1
  • 90 / page