- Drift-Base Change Log
- Fixes match-presence unavailable due to service not having access to query rich presence
- Fix redis key scoping and other misc. issues with Rich Presence
- Integrated 'rich presence' support for players.
- Fetching rich presence for your friends using
template_richpresence
- Listen for updates with the
richpresence
message queue.
- Support for using partitioned streams for eventlogs
- Support Discord authentication
- Improved player banning support in FlexMatch
- Support for banning players in FlexMatch queues
- Add basic client configuration endpoint
- Add support for DataDog traces through Shoutout
- Give each player a global UUID as well as a player_id and put that in the JWT payload
- Update to latest drift and drift-config for config caching
- Move from uwsgi to gunicorn
- Update to redis 7
- Update to postgres 15
- Update drift to 0.13
- Allow lookups of eos, gamecenter and ethereum player identities
- Authenticated player accounts now get a 'player' role by default
- Update to Drift 0.10.2
- Improve auth handling
- Parties/flexmatch: party ticket is now cancelled if player leaves party while searching for match
- Fix potential deadlock in match svc by introducing timeouts on held locks
- Update to Drift 0.9.2
- Match placements now includes player latencies when starting placements
- Total match time is now correctly logged
- The Players resource now includes total play time in response if asked to
- Flexmatch tickets in state PLACING will now timeout after PLACEMENT_TIMEOUT seconds so players don't get stuck past the timeout if server doesn't comply
- Support 'system' messages/notifications coming in from other deployables
- Player latencies are now also sent as part of the players attributes in Flexmatch tickets
- Fix a bug where a players latency to a region that has been removed from valid regions would still be passed on to flexmatch
- If a player leaves a match early his ticket is now set to MATCH_COMPLETE
- Support generic match_placements without lobbies.
- Support fetching recent matches for a given player
- New auth provider 'ethereum' added
- Support gzipped payloads in events endpoint
- Added 'flexmatch_regions' endpoint in drift-flexmatch to expose supported regions
- Dependency updates, python-drift updated to 0.9.0
- Datadog Runtime Metrics can now be enabled via an environment variable
- The matches endpoint now has a PATCH handler to update a match players stats from battleservers
- drift-flexmatch will now cancel any matchmaking tickets owned by players when their client entry is removed
- Added 'template_player_gamestate' to the players endpoint
- drift-flexmatch now cancels a players personal matchmaking ticket if he joins a party while searching
- drift-flexmatch added a new state CANCELLING on tickets, which is active from the time a cancellation request is issued and until cancellation is confirmed by AWS.
- drift-flexmatch will now expire COMPLETED and MATCH_COMPLETE tickets from the cache after MAX_REJOIN_TIME has passed
- Custom Lobbies
- Support custom pre-match grouping of players via Lobbies and associated Gamelift match placements
- EOS support (Beta)
- Preliminary support for authentication via Epic Online Store
- Friends:
- Friend tokens can now be generated out of wordlist in addition to uuid generation
- Flexmatch:
- POST endpoint now accepts arbitrary extra data to be passed verbatim to Flexmatch's ticket
- Drift now expects backfill ticket IDs to match a regular expression defined in the tenant config 'backfill_ticket_pattern'
- Parties:
- Players will now be removed from their party if they gracefully disconnect
- Players can now join a party whilst being in another party, provided they flag their intention to leave the old party
- Further improvements of player counters
- Use BigInt for counter IDs
- Fix logging of queue events
- Fix bug where notification of a potential match would only be sent to one player in a party
- Fix a bug where a player who joins a party while having a matchmaking ticket would have both marked active, potentially causing the whole party to fail to join a match.
- Fix a race issue causing wrong notification being sent to players if they managed to issue a 2nd ticket before being notified about the cancellation of the first
- Optimize reporting and fetching of player counters which was unacceptably slow for any non-trivial amount of counters
- Fixing a shadowing bug in drift-flexmatch causing PotentialMatchCreated to fail on foreign tickets
- Add out-of-the-box support for DataDog APM tracing. Enable with ENABLE_DATADOG_APM=1. Must be used with UWSGI_LAZY_APPS=1.
- Add AWS Flexmatch matchmaking support. This ofc depends on the organization having the proper AWS infrastructure in place and introduces a few new config values for the tenant:
- aws_gamelift_role (no default): The AWS role to assume when interacting with Gamelift/Flexmatch
- valid_regions (default ["eu-west-1"]): Which AWS regions are valid for matchmaking
- max_rejoin_time_seconds (default 2 minutes): How much time may pass after a ticket is completed before drift considers the ticket to be invalid for late-comers. This is mostly relevant for players in parties and those who disconnect from a match.
- Stabilized message exchange implementation and fixed GET for individual messages
- "latest" is no longer pushed as a tag for Docker images.
- Discard expired messages to avoid processing them over and over.
- Demote message logs to DEBUG.
- Add party support.
- Switched to Marshmallow schemas for arguments and responses.
- Improve shutdown handling when running in a container.
- Dropped support for Python < 3.9.
- Dropped all use of
drift.schemachecker
in favor ofFlask-Marshmallow
.