Skip to content

Releases: FAForever/server

v1.5.1 - RabbitMQ Exchange Config

21 Sep 01:41
aecbf8f
Compare
Choose a tag to compare

Summary

Added the RabbitMQ exchange name as a config variable

Pull Requests

  • Make exchange name used by game_service configurable (#668) [by UmbraSolis]
  • Improve integration tests (#666)
  • Refactor weakrefs in Player object (#665)

v1.5.0 - Lobby Rating Ranges and Bugfixes

14 Sep 20:41
2932f86
Compare
Choose a tag to compare

Summary

This release consists mostly of bugfixes courtesy of our first time contributors (see below) as well as server enforcement of lobby rating ranges. With future client support, the rating ranges you select for your lobbies will mean that players who don't fall into the desired range will not be shown your lobby. So make sure you check those min and max rating fields before hosting a game!

There are also some internal generalizations of the matchmaking system which are working toward team matchmaker support. So stay tuned, team matchmaking may only be a few releases away!

Other noteworthy changes

  • Ban times are displayed more accurately
  • Ladder anti map repetition should work again
  • Map generator games are now ranked
  • Team kills no longer automatically generate moderation reports

Pull Requests

  • issue/#649 Allow host to set rating range limitations to game (#651)
  • Issue/#636 Refactor game validity checks (#652) [by lirael]
  • Issue/#581 Remove hardcoded ladder1v1 queue and map pool (#656) [by UmbraSolis]
  • Issue/#637 mq service initialization race condition (#638) [by UmbraSolis]
  • Ignore game_info message with wrong player count (#653) [by UmbraSolis]
  • Use consistent quote marks (#648) [by lirael]
  • Use UTC instead of local timezone (#650)
  • Add issuehunt link to readme (#647)
  • Issue/#639 Show ban duration to user with higher resolution (#645) [by lirael]
  • Rework ladder search internals/interface (#642)
  • Support multiple servercontexts (#629)
  • Asyncio lock helpers (#641)
  • Issue/#605 add game type to game info message (#635) [by mapi5032]
  • Fix spelling error (#633)
  • Fix game stats division by zero (#626) [by 0x647262]
  • Fix problems with no repetition code (#631) [by 0x647262]
  • More readme updates (#630)
  • Fix matchmaker queue double initialization (#628)
  • Skip policy server check when running in dev mode (#622)
  • Issue/#610 refactor protocol interface (#615)
  • Issue/#282 Game titles seem to be quoted needlessly (#625) [by mapi5032]
  • Update README (#620)
  • Issue/#617 Add check for generated map (#618) [by Sheikah]
  • Add compatibility to db v96 (#619) [by Brutus5000]
  • Issue/#589 disable auto reporting teamkills (#616) [by mapi5032]
  • Update isort config and sort all imports (#614)
  • Feature/#422 Implement team matchmaking (#428)
  • Broadcast Game Results to RabbitMQ (#586) [by UmbraSolis]
  • Rating Service (#553) [by UmbraSolis]

Contributors

Roughly ordered by amount of contribution. Special thanks to our first time FAF contributors lirael, mapi5032, and 0x647262!

  • Askaholic
  • UmbraSolis
  • lirael
  • mapi5032
  • 0x647262
  • Sheikah
  • Brutus5000

v1.4.3 - Multiple Map Pools

17 Jun 05:45
f3b7753
Compare
Choose a tag to compare

Summary

The server now supports attaching multiple map pools to the ladder1v1 queue. It decides which map pool to use based on the rating of the lowest rated player in the match. So for instance if there were a map pool for players with mean below 800, then any new player would be guaranteed to play on only maps from that map pool until their trueskill mean surpassed 800. The exact makeup of the new map pools is up to the ladder team, so check the forums for details.

Other noteworthy changes

  • Players can no longer snipe a spot in their friend's ladder games by clicking the "Join friend's game" notification. (This was the cause of the rare "nomads in ladder" bug)
  • Admin commands now use the new permission system
  • Games will no longer except results from clients that claim to have closed ForgedAlliance. This should allow us to fix the "unrated games" issue with game patch.

Pull Requests

  • Issue/#602 search start confirmation (#604)
  • Travis pull from faf-db directly (#598)
  • Unset lobby_connection reference to game_connection on abort (#588)
  • Fix test_conf.yaml link in README.md (#593) [by UmbraSolis]
  • Cleanup project files (#592)
  • Migrate to new permission system (#509) [by Brutus5000]
  • Check init mode in command game_join (#590)
  • Update dependencies and adjust code (#585)
  • Issue/#567 new map pools (#568)
  • Add ability for proper integration testing (#564)

v1.4.2 - Reload Config Variables

04 May 23:51
6ec63d4
Compare
Choose a tag to compare

Summary

Config variables are loaded from a file instead of environment variables. This means they can be reloaded without restarting the server.

Deployment Notes

  1. Set environment variable CONFIGURATION_FILE to the config file path.
  2. Create a config file (yaml) to override needed config settings (keys not present in the file will use the default values).
  3. Mount the file as a docker volume so that CONFIGURATION_FILE points to the file path inside the container.

Example:

USE_API: true
LOG_LEVEL: "INFO"
COTURN_HOSTS: ["host1.example.com", "host2.example.com"]

There is also another example in tests/data/test_conf.yaml

When config variables are reloaded any changes will be logged at the info level. This can be used to verify that everything is set up correctly, but note that by default CONFIGURATION_REFRESH_TIME is set to 300 seconds.

Pull Requests

  • Reload Configuration Variables (#570) [by UmbraSolis]
  • Bump faf-stack version to v20.4.18 (#578) [by UmbraSolis]

v1.4.1 - Achievements Fix

14 Apr 23:04
85337f4
Compare
Choose a tag to compare

Summary

Achievements should finally be working again 🤞. Token refreshing has been improved, so if the API token has expired it should now be properly refreshed.

Other noteworthy changes

  • The number of players in a game as shown on the play tab should accurately reflect the number of people who have successfully connected to this host. No more of those pesky 8/8 readings when it's actually 7/8.
  • Game should now REALLY be considered as over when "Game Over" appears on the screen. Even if some players disconnect before the message shows up.

Pull Requests

  • Issue #575 - Game end time STILL not quite right (#576)
  • Refactor game options (#574)
  • Issue #571 - Update player object when new avatar is selected (#572)
  • More SQLAlchemy (#569) [by UmbraSolis]
  • Issue/#558 api authentication (#565)
  • Fix service creation (#566)
  • More exception logging (#561)
  • Automatic service instantiation (#554)
  • Refactor abort (#563)
  • Unranking more unknowns. (#552) [by UmbraSolis]
  • Only show players if they've managed to connect (#551)
  • Cleanup tests (#557)

v1.4.0 - Rating workaround

27 Mar 07:56
08a796c
Compare
Choose a tag to compare

Summary

The big change in this release is a temporary workaround in computing game winners to be more resilient against bad results. We discovered that some work needs to be done on the FA side of things, but until that work is done, this server change should mitigate a lot of the rating issues present in the last release.

This release also includes another important rating related fix. Game end times should now be computed more accurately, meaning fewer opportunities to have rating overwritten by playing games too closely back to back. In particular, game end is no longer determined by when you leave the score screen, but instead when the simulation actually ends.

Other noteworthy changes

  • Reworked metric reporting with the official Prometheus library. This means metrics will be more accurate and more plentiful!
  • Game launch options should now be sent correctly.
  • The army outcome for each player is now written to the database. This will let us see when results were missing or conflicting.
  • Updated to python3.7

Deployment Notes

The server no longer uses StatsD. Instead we will need to update the faf-prometheus.yml file. Just copy and paste the scrape config for faf-aio-replayserver and change the job and target name to faf-python-server.

Pull Requests

  • Make matchmaker test more reliable (#556)
  • Add build info to metrics (#555)
  • Issue/#525 update python3.7 (#526)
  • Majority vote game outcomes (#550) [by UmbraSolis]
  • Log API error (#549)
  • Issue/#346 game length too long (#511)
  • Write GameOutcome to db in Game.persist_results. (#543) [by UmbraSolis]
  • Tweak automatch options (#545)
  • Issue/#527 fix game_launch options (#530)
  • Prometheus metrics (#538) [by UmbraSolis]

v1.3.7 - Broadcast Performance 2

20 Mar 19:19
82d6846
Compare
Choose a tag to compare

Summary

After getting some profiling data from the last release we were able to determine that much of the performance hits were caused by frequent calls to the asyncio machinery for waiting on data to drain, specifically ensure_future. Since there wasn't much benefit in waiting for broadcasted messages anyways, we are reverting the async refactor for the broadcast code (but we are still keeping it for everything else). This should make a big difference for performance, hopefully bringing us back to where we were with v1.2.

Pull Requests

  • Performance: Don't await broadcasts (#548)

v1.3.6 - Performance fixes and profiling options

18 Mar 20:39
86ad4bb
Compare
Choose a tag to compare

Summary

Some important performance fixes for the asyncio broadcast changes. Broadcasted messages are now only encoded once like they used to be (instead of being re-encoded for every user). Hard to say concretely how much of an affect this will have, but in theory it should be pretty significant.

Also includes performance improvements for the matchmaker algorithm by dramatically decreasing the number of unnecessary calls to trueskill. The algorithm is now also run asynchronously in the default asyncio executor. This should drastically increase the number of players that the matchmaker can effectively handle.

Deployment Notes

  • New environment variable PROFILING_INTERVAL for setting the interval in seconds at which the profiler will be enabled. Please set this to 70.

Pull Requests

  • Added intermitent profiling (#541)
  • Improve broadcast performance (#542)
  • Bump faf stack version in Travis to 20.2.7 (#544)
  • Ice unit tests (#540)
  • Improve matchmaking performance (#531)
  • Placating flake8 (#539)

v1.3.5 - Better handling of connection errors

04 Mar 23:28
276168d
Compare
Choose a tag to compare

Summary

Another attempt at fixing the asyncio connection issues. We've done some load simulation on the test server and were able to reproduce most of the connection issues that we had observed in test. These have now been fixed along with another minor fix for rating two player games.

Pull Requests

  • Asyncio drain fix 2 (#532)
  • Add username of session id to trace messages (#537)
  • Two player FFA (#529)
  • Increase search expansion per queue pop (#491)

v1.3.4 - Handle any error in broadcast

06 Feb 08:39
9993b7b
Compare
Choose a tag to compare

Summary

Turns out there are some exceptions that are caused by a lost or unavailable connection that do not inherit from ConnectionError. For instance OSError: [Errno 113] No route to host and TimeoutError: [Errno 110] Connection timed out. Since errors during broadcast don't really matter (if we can't reach the target they just don't get the message, no big deal), we just ignore all exceptions raised from drain. We also rewrite do_report_dirties so that even if an exception were to be raised during one broadcast, the rest of the broadcasts, and more importantly ended game removal, will still happen.

Pull Requests

  • Fix exception handling (#528)