Releases: FAForever/server
v1.5.1 - RabbitMQ Exchange Config
v1.5.0 - Lobby Rating Ranges and Bugfixes
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
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
Summary
Config variables are loaded from a file instead of environment variables. This means they can be reloaded without restarting the server.
Deployment Notes
- Set environment variable
CONFIGURATION_FILE
to the config file path. - Create a config file (yaml) to override needed config settings (keys not present in the file will use the default values).
- 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
v1.4.1 - Achievements Fix
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
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
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
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 to70
.
Pull Requests
v1.3.5 - Better handling of connection errors
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
v1.3.4 - Handle any error in broadcast
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)