As promised, the release schedule should speed up a bit between releases: 4 months since the last stable release! Grab your reading glasses, because there have been a lot of changes!
Elo Recalculation Bug
First and foremost, I'd like to apologize in advance for this very critical bug when it came to Elo calculations. With the release of 0.10.0, Elo has been expanded beyond just ranking teams and now is used to rank players as well. The way that Elo ratings work is that all values are always compounded on the value from the previous match. In order to preserve the ability to see an Elo history and "undo" calculations in the case of a match being edited or deleted, a lot of information is kept and all of that information is used in our code.
With the new feature of seasons and player Elo ratings for each season, the player Elo changes need to be categorized based on season since every season the Elo resets at 1200. The incremental Elo calculations worked just fine. However, whenever an Elo recalculation was executed, this would cause an incorrect base Elo value to be used in a number of situations.
Explain like I'm five? There was a chance that instead of starting your season with a 1200 Elo, you started with a value higher or lower giving you an advantage or disadvantage from the start of the season.
Remember how I mentioned that a lot of information is kept regarding Elo changes? Well all of that information will allow us to rectify the issue; I wasn't joking about having a "return policy" in the 0.10.0 release name. I've added a new command for website hosts to correctly recalculate player Elos. The <match ID>
that is used should be the ID of the first match of the first season you hosted.
./app/console bzion:recalc-elo <match ID>
So what does all of this mean for players? If you started with a disadvantage, you'll likely see a boost in your Elo balancing out the disadvantage. If you started with an advantage, you'll likely get a drop in your Elo balancing out the advantage. Don't worry, these are the real Elo ratings you should have always had. Because, maths!
The Seasons Page
With the introduction of seasons in 0.10.0, there was no way for players to see actual their statistics for a given season. It was promised that a "Season" page would be introduced and it's finally here! The new page contains information for the current season and can display information for previous seasons too. So what's on this page?
- Number of official matches and fun matches, respectively
- Number of matches that happened on each map
- The players with the top 10 Elo ratings
- The top 10 players who had played in the most fun and official matches, respectively
Ban Interface
Being banned is never fun, maybe it is to some players. Who knows? Anyhow, being banned on the site led to a number of issues of players being hidden accidentally or not having proper permissions, even after the ban had expired. The ban system on the website has been updated to function only as a formality/historical record.
This will be changing in the future, however the existing bugs of unexpired bans has been rectified.
Accessibility Improvements
Accessibility has always been important to us and we are working very hard on improving the experience for all players. In this release we have improved some ARIA specifications to make things more accessible for individuals who rely on assistive technologies. However, the biggest improvement for this release is that we've added an option to help users with different forms of colorblindness.
To access this option, go to your profile and click the "Color Blind Assistance" checkbox.
Throughout this website, a lot of information is conveyed with color (and that's bad!). For example, red buttons typically mean destructive actions or things that cannot be undone. By enabling this option, an additional layer of decoration will be added to buttons.
If you don't have a form of colorblindness, this may look strange to you but this is what buttons would approximately look like to different forms of colorblindness.
The patterns and colors of buttons across the website have been standardized to the following:
- Destructive actions: red buttons with a diamond pattern
- Modification actions: grey or yellow buttons with diagonal stripes
- Creation actions: green with vertical stripes
- Submission actions: blue with diagonal stripes
This is an opt-in feature for players and is still in the testing phase.
Admin Control Panel
The administration control panel has always been neglected but no more! Editing pages, roles, models, and player information has been completely redesigned and cleaned up. Accessibility has been improved throughout the control panel and is more user friendly.
There is still a lot of work that needs to be done, however this release is a start of what's to come.
Additional Release Notes
Fixes
- Thumbnails for team and player avatars always get cropped into squares now. Previously, rectangular thumbnails would break the layout of a given page.
- Team and player avatars with transparency now correctly keep their transparency
New
- Support for restoring teams through the web interface is now available
- Maps now have more information regarding the world
- World size - the size of the world
- Randomly generated - whether or not the world is generated at the start of each map
- Game mode - the game mode this map uses (e.g. CTF, AHOD) with support for more easily available
Improvements
- Less queries are necessary on the Team's page, speeding up its load time
- Team activity calculations have been offloaded to MySQL
- Page titles have been standardized and updated to be more friendly when appearing in search engines and social media cards.
Development Changes
- The matches page has been rewritten so grouping by day happens in the controller instead of the Twig template
- Added "Demo Mode" to hide sensitive player data while a BZiON website is being demoed with production level data
- Player match participation has been restructured in the database to allow for faster queries. The information is now available in a separate table (allowing for JOINs) instead of having to perform string operations in a comma-separated column.