bad winner-info in demofiles

bad winner-info in demofiles

For the discussion of infrastructure improvements and changes.

Moderator: Moderators

Post Reply
dansan
Server Owner & Developer
Posts: 1203
Joined: 29 May 2010, 23:40

bad winner-info in demofiles

Post by dansan »

I am finally fixing stuff of the replay site, and so I decided to tackle this problem: sometimes the winner of a match is not recognized correctly: https://github.com/dansan/spring-replay-site/issues/89
I am at a loss why that happens, and need your help. I'm not sure if it is a engine, game, host or parsing problem.

There are two problems. First the most obvious and strage one:

The repay site shows "The match was stopped!" if this happens, but that's just a wrong interpretation of the situation: the data in the 'winningAllyTeams' section of the demofile is bad. It is a vector of ints (encoded as chars) - usually '0' or '1', but could also be '13', if two allyteams would have won. (See engine code in rts/System/LoadSave/demofile.h.)
In a problem-case the number found at the indicated position (headerSize + scriptSize + demoStreamSize) is for example '147' - but there is no allyteam with a corresponding number.

I just reparsed all ~100.000 replays since 2012, and have found ~1000 matches that have winningAllyTeams with a number > 9 (1800 with a number>3).
From 2012 until 2016 there were 36 replays with bad data - just happens I guess - but from 30.03.2016 till 31.10.2016 it happend 1063 times.
The data (see attached CSV) clearly shows the following things:
* happens since engine 101.0
* happens almost exclusively for:
- gametype=nota* or autohostname=notAhost* -- but only with engine < 103.0
- gametype=Evolution RTS* or autohostname=EvoRTS* -- but only with engine >= 103.0
* until 2016-10-14 09:22:38, when autohostname=OverKill* joins the fun with gametype=Balanced Annihilation V9.46

While for nota and evorts it is not clear whether the problem is with the game, engine or the host, for BA it is obvious: only OverKill* hosts have the problem, other BA hosts don't.

After finding this bug: https://springrts.com/mantis/view.php?id=4939 I checked the autohosts !hoststats, and guess what: all are Linux hosts, except for:
* OverKillHost1 OS: Win2012 - Windows NT 6.3 - Build 9600
* EvoRTSDedicated6 OS: Win2012 - Windows NT 6.3 - Build 9600
* notAhost01NA OS: Win2012 - Windows NT 6.3 - Build 9600

---------------------------------------------------------

The other problem is, that for a lot of matches the winner is simply wrong. This started in 2015 (see github issue 89). For example this one: http://replays.springrts.com/replay/f7e ... 6f3a5c0d3/
It is allyteam 1 that wins, but in the demofile it is '0'. The CSV line for it would be:
"103","5","1","2","0","Balanced Annihilation V9.46","[ACE]Pirateur","f7e918588fdf6524903a7d46f3a5c0d3","2016-11-01 20:16:07"

The reason for this is, that in the demofile 'winningAllyTeams' is (almost) always '0'. The stats over the 100.000 matches shows, that in 2012, 2013 and 2014 the chances of a winning allyteam '0' or '1' were almost the same, while in 2015 to many matches were won by allyteam '0' and in 2016 almost all:
'2012': '0': 5232, '1' : 5315,
'2013': '0': 13168, '1': 11048,
'2014': '0': 14621, '1': 10311,
'2015': '0': 18149, '1': 6388,
'2016': '0': 18615, '1': 403,

So I guess this is an engine error. I have reported it at https://springrts.com/mantis/view.php?id=5384

---------------------------------------------------------

So in the end this whole posting is not necessary, as it seems that both problems are engine related... well... I'll keep you posted :)
Attachments
winning-test1.csv
CSV with mentioned data
(135.02 KiB) Downloaded 7 times
dansan
Server Owner & Developer
Posts: 1203
Joined: 29 May 2010, 23:40

Re: bad winner-info in demofiles

Post by dansan »

The problem with all replays being won by team=0 has been fixed for the next engine release: https://springrts.com/mantis/view.php?id=5384

Thanks hokomoko!
dansan
Server Owner & Developer
Posts: 1203
Joined: 29 May 2010, 23:40

Re: bad winner-info in demofiles

Post by dansan »

For now a workaroud is in place: TrueSkill data is used to fix the bad win/loss data, in case no winner exists or it is team=0.
Post Reply

Return to “Infrastructure Development”