Skip to content

Releases: FAForever/server

v1.3.2 - Asyncio bugfix

28 Jan 18:57
0ea040f
Compare
Choose a tag to compare

Summary

Due to a refactor and a bug in asyncio its self, some of the code could throw an unexpected error if two messages were being sent over the same protocol object at the same time. This error would then propagate out to the calling code and cause functions to exit early. As a result, sometimes the game's list wouldn't be cleaned up properly causing in absurd game counts like Currently hosting 1234 players and running 2253 games.

Pull Requests

  • Asyncio drain fix (#522)

v1.3.1 - Rating Fixes, Fixes

25 Jan 22:36
e9edac2
Compare
Choose a tag to compare

Summary

Fixes a bug in the new game rating code where games would only be rated if they were a clean sweep (as in every player on the winning team survived).

Also adds some more fields to the game_launch command which will be needed for projects like Team Matchmaking and Galactic War, and really should have been added a long time ago.

Pull Requests

  • Send game configuration options to the client in game_launch (#517)
  • Game Rating: Clean up some formatting and faulty logic that I missed before (#519)
  • Periodically check if a new database file has appeared (#518)

v1.3 - Flag and Rating Fixes

19 Jan 00:04
5a7f8bc
Compare
Choose a tag to compare

Summary

Flags are back! Maxmind, the company that distributes our GeoIP database for free, changed the way the database is downloaded due to recent privacy legislation being passed in California (CCPA). The server is now able to handle the new URL and more importantly the new data format.

Less immediately noticeable (but still important) are the changes to the game rating code. Games should now either be rated correctly or not at all, fixing a bug where the winning team could sometimes be given a loss depending on how the ACU kills played out. Custom 1v1 games ending in mutual ACU explosion are now correctly counted as a draw (just like in ladder).

This version also finally stops sending the list of featured mods on log in. It is the client's responsibility to fetch the featured mod list from the API. The latest versions of both the official and legacy clients already use the API, but older versions of the legacy client will no longer be able to host games. Go update!

Other noteworthy changes:

  • Added tests for admin/moderator commands. Kicking, banning, joining IRC channels, and sending broadcasts are supported.
  • Bans are checked when hosting or joining a game, meaning players can no longer circumvent a ban by staying logged in forever.
  • Added a command for requesting matchmaker info. This means new versions of the client will show the remaining ladder queue time immediately after opening the ladder1v1 tab.

Deployment Notes

  • New environment variable GEO_IP_LICENSE_KEY.

Pull Requests

  • Fixed some more places where coroutines were not awaited (#516)
  • Refactor Game.compute_rating (#496) [contributed by UmbraSolis]
  • Await async sending functions in command_admin (#515)
  • Issue/#513 New geoip database download URL (#514)
  • General code cleanup (#507) [contributed by Raider61]
  • Refactor message sending interface to be a coroutine (#497)
  • Issue/#503 contact policy server (#510)
  • Clean up game outcome handling (#495) [contributed by MazorNoob]
  • Let client do localization for Close FA message (#502)
  • Don't echo DB operations to log (#504) [contributed by MazorNoob]
  • Check ban when hosting and joining a game (#461) [contributed by Louvegarde]
  • Add test for receiving matchmaker updates after queue cancel (#498)
  • Add endpoint for requesting matchmaker info (#489)
  • Don't send mod list to the client (#464)
  • Install aiomysql from git and re-enable warnings (#493)
  • Auto-rollback DB changes after every test (#494) [contributed by MazorNoob]

v1.2 - Matchmaker Fixes

13 Sep 03:21
Compare
Choose a tag to compare

Summary

This release brings a few much needed ladder fixes. For one, it fixes a bug where the matchmaker would look at players global game count (instead of ladder game count) when deciding to apply a new player rating adjustment. This resulted in the rare case for players who played only ladder to be matched against opponents of lower skill level. Another important change is the addition of a new player matching round to the matchmaker. Any new players who do not find a match at the end of the matching round will now be randomly matched with each other, or if needed, with any available opponent whose mean is less than 1600. This should make it easier for new players to accumulate the games needed for a consistent ladder experience, and should increase the amount of ladder games over all.

Other noteworthy changes:

  • Queue pop times are now calculated by trying to maintain a constant number of players in the queue.
  • Removed unnecessary whitespace from server messages. This should reduce the server's required bandwidth by around 10%
  • Some significant code refactoring.

Pull Requests

  • Match newbies randomly (#492) [contributed by UmbraSolis]
  • [WIP] Support for multiple player ratings (#486) [contributed by MazorNoob]
  • Refactor deviation thresholds (#490) [contributed by UmbraSolis]
  • Smarter queue pop times (#481)
  • Misc cleanup (#484)
  • Call json.dumps without whitespace in protocol messages (#479)
  • Use ladder1v1_rating.c.numGames for ladder newbie calculation (#472) [contributed by Raider61]

v1.1 - Better 1v1 matchmaking

19 Jul 05:05
Compare
Choose a tag to compare

Summary

The highlight of this release is the revamped matchmaking system which includes a new and hopefully improved matchmaking algorithm. To enable the new algorithm, the matchmaker now runs on a time based schedule which adjusts depending on how many people are queued. Players who are further to the front of the queue will have higher priority during the matchmaking system, and players who are not matched during one round will naturally move up in the next one.

Other noteworthy changes:

  • The server now sends a deprecation warning to unofficial clients on login
  • Fixed an error when liking mods that don't have a thumbnail

Pull Requests

  • Fix spelling error (#470)
  • Only tell authenticated clients about matchmaker info (#466)
  • Increase metrics collection (#463)
  • Grammar fixes to readme (#467)
  • Added ban duration SECOND setting on closeLobby (#443)
  • Ladder matchmaking at dynamic intervals (#457)
  • Remove check for matchmaker_ban table (#452)
  • Unlock the aiohttp dependency (#462)
  • Fix command_modvault exception (#458)
  • Send a warning to players logging in with the legacy client (#456)
  • Checkout recent version of faf-stack
  • Remove landscape config file

v1.0 - Achievements Fix

20 Jun 15:36
Compare
Choose a tag to compare

Make search expansion grow through time instead of shrink (#448)
Remove avatar management commands (#451)
Issue/#399 Add tests for PlayerService (#453)
Implement OAuth2 authentication with aiohttp to prevent blocking (#433)
Remove unused config variables (#438)
Removed game_mode_versions (#447)

v0.9.33: Fix: Ensure that LadderService continues to process matches (#449)

11 Jun 19:00
Compare
Choose a tag to compare
* Ensure that LadderService continues to process matches if it encounters an error

* Add searches to the logging statement

This info is probably redundant because there should be matchmakerqueue 
logging right before it, but who the heck knows. Better to be safe than 
sorry I guess.

v0.9.32: Issue/#437 Add timestamps to logs (#441)

07 Jun 07:22
Compare
Choose a tag to compare
* Add timestamp to logs

* Remove module name from loggers

* Remove unused import

v0.9.31: Hotfix 9.30: Fix avatars and py client matchmaking (#436)

24 May 11:48
Compare
Choose a tag to compare
* Fix player service query to look at selected avatars only

* Switch game connection logging to TRACE level

* Allow faction to be passed as int again

* Don't crash if icon is null

* Add handler for automatic teamkill reporting, and ignore AI teamkills

* Improved the inform_player test to verify functionality after logging out

* Separate teamkillreport and teamkillhappened

* Refactor test to not use mock, but send the correct message to signal hosted game

v0.9.30: Rework ladder for team matchmaking (#426)

20 May 10:56
e288979
Compare
Choose a tag to compare
* Add function for yielding matches asynchronusly

* Move matching code so that MatchmakerQueue does not directly call start_game

This will make MatchmakerQueue extend easily to XvX games, and allow LadderService (or some other service) to simply create another queue for XvX and handle matches as appropriate.

* Abstracting away the MatchmakerQueue implementation

* Move search tracking into LadderService

* Remove player from _informed_players on disconnect

* Call stop search with correct args

* Use generic quality function that will work for NvM games

* Some cleanup

* Adjust search to work with any arbitrary team set up

* Set all players's states, not just the initiator

* LadderService.start_search does not need to be async

* Refactor

* Only remove players from list if they exist in the list

* Log unknown player states

* Do not set state to IDLE if player just got matched

* Remove old calls to sleep

* Rename variable and add comments to make iter_matches more clear

* Add a more reliable way of waiting for ladder1v1 hosts

* Add additional error handling if the host cancels the match setup

* Remove unused method `on_message_received`

* Add pipenv script for running tests

* Remove outdated test

* Fix deprecation warning

* Update dependencies

* Only set is_hosted value if it has not already been set

* Always send the guest a game launch command, even if the host timed out

This is necessary to make the client realize it has been removed from the ladder queue. In the future, the client should do this when it receives the  command.

* Remove extra debug output

* Use search.matches_with function

* More input sanitization

* Fixed a bug where find_match would only check the first item in the queue

* Fixed a bug where searches were not properly removed on cancel

* Add match_found message when players are matched