Is eSport sport?
That is a good question to ask sports fans at a dinner party if you want to get a good discussion going.
Luckily the question we were asked was: “Can SportsML handle eSports”? And that seemed like a more straightforward question to answer.
Here is a short clip that shows how big eSport really is, and also touches on the question at the beginning of this article:
SportsML is an IPTC standard that covers all aspects of sports when it comes to scheduling, tournaments, results, live reporting, standings and statistics. And even if eSports is very different to traditional sports, on this level it is very similar. All eSports consist of games between teams or players, much like football, hockey, tennis or any other event where the competitors meet “head-to-head”. From those games we have results, standings and statistics, which are all supported in SportsML.
But there are some areas of difference to note.

Home and away teams

In traditional sports that meet in this way, the concept of home and away is often important. For example, the home team can have first choice in colour, starting side, familiar playing ground etc. And in some football tournaments, goals scored away from the team’s home location can be worth more if the game is tight. Plus, often the home team have a much bigger crowd to cheer them on.
In eSports, there is really no concept of home or away. Technically, players can be anywhere and play connected through the internet. Players of the same team do not have to sit together. In reality, though, for bigger tournaments the players will usually gather in an arena with big screens and a huge audience watching. If players are in separate locations, the quality of their internet connection will be a factor.
In SportsML we still have to handle one side as home and the other as away using the alignment attribute.

Pre-game actions

Another difference in eSports is that actions can take place before the official start of the game. For example, teams can choose or reject characters or maps from the game they are playing. This is an important part of the game, since each team’s aim is to get characters and/or maps that they are good at into the game, while rejecting the characters and/or maps that their opponent is best at.
It is as if Argentina and Portugal would meet in football and Portugal could reject Messi from the available players for Argentina while managing to have Ronaldo still in their own squad. Or if Arsenal and Tottenham were playing and they could “battle” over which field to play on.
In SportsML we have something called actions that can be used to represent pre-game actions:

<action sequence-number="1" team-idref="team_9572" type="esacttype:remove" comment="Nuke"></action>
<action sequence-number="2" team-idref="team_6134" type="esacttype:remove" comment="Inferno"></action>
<action sequence-number="3" team-idref="team_9572" type="esacttype:choose" comment="Cache"></action>
<action sequence-number="4" team-idref="team_6134" type="esacttype:choose" comment="Train"></action>
<action sequence-number="5" team-idref="team_9572" type="esacttype:remove" comment="Overpass"></action>
<action sequence-number="6" team-idref="team_6134" type="esacttype:remove" comment="Dust2"></action>
<action sequence-number="7" type="esacttype:remaining" comment="Mirage"></action>

Statistics for eSports teams, players and tournaments

There are many types of eSport games with possibly different sets of stats. We focused on Counter-Strike (CS) where teams play across three different maps. On each map the teams take turns in playing as “terrorists” or “counter-terrorists” and the first to reach 16 wins, wins that map. Then the results across maps are aggregated in a best of three format, so the end score will be 2-0 or 2-1. So it is a bit like games and sets in tennis.
We can represent this structure with a scoping-label on outcome-totals in SportsML:
<team-stats score="16" event-outcome="speventoutcome:win">
  <outcome-totals scoping-label="T" wins="4" />
  <outcome-totals scoping-label="CT" wins="12"/>
Tournament structure is always interesting regardless of sport. There are many tournament models from straight round-robin where the top team wins to constructions of combinations of group play, qualification games, more group play and then finals of various levels.
The eSports tournaments we looked at were a construction of quarter finals, semi-finals and final. I’m not sure if there were more levels such as qualifying games before that. In the end we always have one winner of the final.
If we dig deeper, the stats for individual players will be very different from other sports. But that is more an issue of listing the terms for the types of statistics. To do this, we can make use of the “generic stats” construction in SportsML:
  <rating rating-value="1.11"/>
    <stat stat-type="esstat:kills" value="15" />
    <stat stat-type="esstat:headshot" value="6" />
    <stat stat-type="esstat:assist" value="4" />
    <stat stat-type="esstat:flashassist" value="2" />
    <stat stat-type="esstat:deaths" value="11" />
    <stat stat-type="esstat:KAST" value="78.3" />
    <stat stat-type="esstat:ADR" value="68.4" />
    <stat stat-type="esstat:FKdiff" value="0" />
There is no other sport that has kills and deaths as individual player stats! But with the SportsML stat construction with stat-type and value we can handle any type of statistic.
The eSports qcode prefixes of esstat: and esacttype: in these examples do not currently exist in the IPTC NewsCodes catalog but could easily be set up if needed. It might be necessary to have different prefixes for different type of eSports games. But that would require some more investigation.
If you are interested in using SportsML to represent results of eSports matches or if you would like copies of the complete SportsML example files that we created during this investigation, please get in touch – we would be happy to help.
Johan Lindgren, Lead of the IPTC Sports Content Group