In the devblog, I'll be giving you insights about what I'm working on at the moment and what the status of my projects are within the big picture. Today, I'll present the progress I've made during the last couple of weeks regarding competitions and events on TMNews.
The big picture
Let's go back a few months, when the idea came up to make TMNews not only a textpost based site, but a lot more. It all started with the wish by the TMNews team to incorporate the ability to post competition results. Of course, you can write a HTML form + the DB structure to store this information and then a view page to display it. Done. Actually not so much.
With only being having this "result" entity, there's no real purpose of it within the site, next to articles or player transfers. All info on this site should not rely onto itself, but be connected to other entities. Like a player transfer includes players and therefore accounts. What are competition results even good for, if you don't have a dedicated page for said competition where you find more than just this info? Let's introduce competitions.
Now, think of a competition as a box. On the outside it says "Trackmania Grand League Fall 2020". You open it and you find many more boxes, with one of which that says "Event: Step #1". You open that one. Inside that box, there are some cars that resemble the players that have partaken in this event. There's a paper that says who finished 1st, 2nd and so on. There's a DVD, which includes a recording of the event. Now you know almost everything about this event.
Why this analogy? All of this information is contained and labelled, ready for storage and easy to find. Historians or just casual players will be able to look back and into the future to read and learn about the competitions and results of Trackmania.
If you got the idea and made you curious for more, read on.
The competition feature
About 10 months later, all of the thinking-work behind the scenes has been concluded and I have started to code in this monstrosity of a feature. A competition contains the following:
- A list of events
- the game, that it was played in
- the dates when it starts and ends (or started and ended)
- some tags to improve searchability
- the type of competition (regular, tournament)
- the usertype (player- / teambased)
That's all the info a competition needs. Where it starts to get complicated is with events. The way events work in TMNews is that the event in itself is only defined by what competition it is assigned to, who is playing the event and when the event happens. This triangle of properties differentiates the event from all others.
While the core properties of an event
- the Start- and EndDate
- the parent competition
-
the people / teams that are playing it
are simple, a lot of infos can optionally be attached to it:
- the name of the competition
- the type of event (public, registration, closed)
- a lineup of players (manually entered or automatically derived from previous events)
- a list of prizes, that are given out based on the results of this event
- a list of available casting streams
- a list of VODs (after the result ended)
- the results of this event
As you can see, the whole thing just got way more complicated, but at the same time, more concrete. Programatically entered player lineups can be useful for tournament hosters with groupstages. Publishing results on the same page will allow more information to be centered on one page. An API also allows posting real-time results to these event pages for live-tickers.
For the casual player / viewer, it can be helpful to know where streams are to follow this event. Before I participate in an event, I might want to know if I have to register somewhere and which prizes I can win.
With programatically keeping track of the events with its results and prizes, it will be possible to display these results on player pages as statistics. Until we reach this most satisfying part of the project it is unfortunately still a long way ahead.
The current progress of this feature can be viewed in this live-action video.
Next Steps
Now that the bases of competitions and events are covered, the time for results has come. These results require an UI to enter them, as well as an API to enable live results on the site.
Additionally, programatically generated player lineups will need to be implemented for tournaments to be able to display player lineups for closed events. Currently the system has been tested for player-based competitions, but team-based competitions are bound to come soon also.
When will this feature be released?
As soon as all relevant subsystems are ready to ensure no data-loss through negligience. Multiple tournament organizers and hosters have been contacted to prepare data to import into TMNews from previous events.
I dare to make a very vague prediction: January 2021 could be the timeframe when the feature is ready for release. Until then, many more hours of work have to be completed in order to even be able to test properly.
What do you think of the competition feature? Would you agree that this is the right approach to store and view the data or would you do it differently? Did you enjoy reading the devblog? Let me know about your thoughts.