What's Changed
This has been sitting for quite some time, so special shoutout to @mfamahran for implementing these features and getting queue integration (and more!) across the finish line, it's much appreciated!
Features ⭐
Support For Queues
- Temporal 10-man/PUG queues can now be created and stored in redis. Users will be able to create queues and send a URL to friends to join the queue, once the maximum numbers of players is in the queue, it will randomly create two teams (with some logic behind HTLV ratings stored in G5API, in an attempt to create evenish teams) and create a match.
- Once the queue is popped and the match is created, the API will either look for the first available server that the user has stored in G5API, or there is now an option to automatically provision a server from DatHost!
- SSE endpoints have also been created for the queue so you can monitor joins, leaves, and queue popping in real time instead of polling the API.
DatHost Server Provisioning
- On-the-fly server provisioning: Users can now pass
use_dathost: truewhen creating a match to automatically provision, configure, and start a game server on DatHost — no pre-existing server_id required. - Automatic plugin installation: Provisioned servers have CounterStrikeSharp and MatchZy downloaded from their latest GitHub releases and installed before the server is started.
- Managed server lifecycle: DatHost servers are tracked as "managed" (
is_managed,dathost_server_idongame_server) and are automatically stopped and deleted when a match ends, is forfeited, or is cancelled — replacing the previous inlinein_use = 0updates with a unifiedreleaseManagedServer()function that handles both normal and managed servers. - Permission-gated access: A new
dathost_allowedboolean flag on the user table controls who can use DatHost provisioning. Admins can grant/revoke it via the user update endpoint.
Support for both CS:GO (using get5) and CS2 (using MatchZy) is now officially supported.
After the release of CS:GO as its own AppId on Steam, there was a recent resurgence of players to CS:GO. The ability to use G5API was still available when it was in its own legacy branch in CS2, but should still work with the API, so long as you provide the proper enum during match setup.
Fixes and Breaking Changes 🛠️
- The config has been updated to move out default maps from a random file when a user is created, into the config files. Please ensure that your configs are updated!
- New options for server provisioning have been included in the config, as well as queue options. Please review the config files here.
- The match JSON has changed! the
gamekey in the request body will default to CS2 if not provided. If you wish to run a CS:GO game, please ensure that this is now included! Please review the Swagger documentation on these changes.
Yarn Changes 🧶
- Bump basic-ftp from 5.0.5 to 5.2.0 by @dependabot[bot] in #332
- Bump minimatch from 3.1.2 to 3.1.5 by @dependabot[bot] in #333
- Bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in #339
- Bump handlebars from 4.7.8 to 4.7.9 by @dependabot[bot] in #340
- Bump path-to-regexp from 0.1.12 to 0.1.13 by @dependabot[bot] in #341
- Bump brace-expansion from 1.1.12 to 1.1.13 by @dependabot[bot] in #342
Thanks 🙏
Again, thank you to @mfamahran for his first time contributions to this project!