Questions in Game Tech

Content language: English

Sort by most recent

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

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
35
views
asked 9 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
36
views
asked 9 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
71
views
asked a year ago