-
Hello everyone,
it is time for an update on the progress that has been made on the league system. I believe the last post was this one: https://forum.faforever.com/topic/311/graphic-artist-wanted
We have decided to use petrics artwork. You can find his post here: https://forum.faforever.com/topic/311/graphic-artist-wanted/23
You may remember that we originally planned to release the league system alongside the team matchmaker. That was last christmas, or in other words over 9 months ago. So what happened? To answer this I will give you some insight into the developing process:First some basics: The FAF client communicates with our lobby server and additionally gets some info from our API. Persistent information, like your rating, gets stored in the database, so it can be accessed by the server or the client by using the api whenever necessary.
We wanted the league system to be not part of the lobby server but to be a separate, independed service. This has the benefit that we can update, shut off, restart etc. the league system without having to touch the lobby server. This allows us to deploy updates without having to restart the server and in consequence have everybody kicked and the currently running games destroyed. The league service even has its own database to store the league data.So far so good. But actually implementing this was way more difficult than I anticipated. I mentioned that the client queries the API for information. We want this separation of the server to be abstracted away from the client, so all data should be available from the same API. This is actually difficult, because the api has to get access to both databases. But the standard configuration assumes there is only one database. Elide, the library we use for our API can handle the case of several databases, but this requires a reconfiguration. This needs special knowledge, so kubko did the job (Thank you kubko!). However, nobody told kubko that other work couldn't continue until this was solved, so he treated it as low priority until several weeks later we talked about this and I was made aware that this information got lost.
This actually illustrates really well, why the development of the league project happens so slow. This project touches so many different aspects of FAF. It needs changes in at least six different repositories on github, each with their own relase cycles, and many depending on one another. This makes it extremely easy that one part is bottlenecking the rest.Another example: The league service was actually already running for quite a while, the server sends info messages about games that the league service can read to trigger changes of the players' league scores. However UmbraSolis and me didn't really pay attention to the format of the messages. The league service read these messages, but failed to parse them. Worse, we realized that we actually need different info from the server. So now we needed to change the league service to accept the new message format This was relatively quick to be done, but it reuqired another server and league service relase.
Add to all of this the normal issues of a volunteer project where random people randomly don't have time for some weeks due to the job, university, holidays or whatever and you arrive at the pace that you see. This also illustrates well why we can't really give estimates when a feature will be ready. It is so uncertain how much time people will be able to spend on a project and new issues that need to be dealt with before a release pop up constantly.
Right now the league service is functional and already processing game results for a test season I started. The client UI is also mostly working now. This screenshot is using real data from the test season.
As you can see it is already in a good state, but there are still some things that need to be worked on, like the number of placement games not being relayed. I also need to alter the division distribution because right now, almost nobody gets placed in bronze and we get a bit too much grandmaster players.The additional UI is quite a large change to the client code, so even when it is ready the new code needs to be reviewed properly and this will also take some time. Because of this it will not make it into the October release. Maybe it will be ready in November if everything is largely smooth sailing from now on.
The only definite release date estimate is - as always- soonTM.
-