Tuesday, March 8, 2016

Walter, Our New Overlord (SCG Philly Saturday, Open SK)

The SCG Tour stopped in Philadelphia on February 27th and 29th last month, and I was on staff. On Saturday, I was scorekeeping the 755-player Open (details to follow), and on Sunday I was in charge of Swiss side events (which will be its own, separate post).

Scorekeeping the Open was the second chance I've had to work in WLTR, the first being GP Atlanta last November. There's a new build from the one I used in Atlanta, and it made some significant improvements, like being able to print pairings and slips together rather than separately.

Wizards Large Tournament Reporter (WLTR, or Walter)

Since late last year, large events have been using WLTR exclusively for scorekeeping. It replaced the very old and well-loved (but also problematic) DCI Reporter.

There were a two glaring issues with using DCI-R for events like GPs:

  1. Events can't be directly uploaded.
  2. It's impossible to enroll more than 2,000 players into a single event.

Once upon a time, no one imagined that the second thing would be a problem. A 2,000+ player event? Really?

That's not only a possibility, it's become pretty common. In the past few years, events have grown massively. My first GP ever, Charlotte in 2012, set the record with almost 2700 players, and that was a Big Deal. This past weekend, Detroit capped out at around 2500, and that now seems pretty normal. GP DC is coming up this weekend, and attendance expectations are higher than both of those events.

The Past: Split Grands Prix

The "solution" to the maximum player cap was to split the GPs that had more than 2,000 players. Day 1 ran as two or three (or, in the case of GP Vegas last year, 8) different events, and then the events were combined for Day 2. That's all fine and dandy as a workaround, but it creates some awful tiebreaker situations.

Because Day 1 and Day 2 aren't actually linked, tiebreakers didn't carry over. Day 2 was treated as a completely separate, seven-round* event, which means that only your opponents from Day 2 and their records on Day 2 mattered.

For example, a player who went 9-0 on Day 1 and then from 0-2 to 4-0 on Day 2, for a total record of 13-2 could miss Top 8 while the player who went 7-2 on Day 1 and 6-0 on Day 2 could make it instead.

This isn't how tiebreakers are supposed to work. They're supposed to reward losing to better opponents, which translates to later in the event. But, because of the way Day 2 had to be implemented for these events, it instead rewarded losing later on Day 2 or not at all on Day 2, and when you lost on Day 1 didn't matter.

*Yep, seven. In DCI-R, you could assign any number of match points to a bye. To combine the events for Day 2, every player started with a bye that was assigned the number of match points they earned on Day 1, then "round 2" was paired, which would actually be round 10 of the event, and round 1 of the day.

The Present: Walter

Now, in the Age of WLTR, that won't happen anymore. Since there's no player cap and there's support for multiple scorekeepers at multiple computers to actively work on the same event, GPs no longer have to split.

While WLTR does a lot of cool things and has some nifty interface updates, it's still new. As Patrick Vorbroker and the SCG team described it, "It's a great program with some landmines."

He wasn't wrong.

I ran into three WLTR-related issues over the course of the day:

1. Some Bye Issues

These always come up, but the ones from Philadelphia were of a slightly different flavor than normal. At GPs, some players inevitably think they should have byes but aren't listed with them. This can be the result of a number of things:

  • A GPT wasn't uploaded by an LGS
  • A Last Chance Trial winner wasn't communicated from the side events area
  • Planeswalker Points weren't updated
  • There was a typo somewhere
  • The player registered with no DCI number or an incorrect DCI number (usually online)

That last thing was the source of the bye issues in Philly. SCG Tour events have a preregistration site that players can use if they want to sign up in the weeks leading up to the event. This form asks for DCI number, but it can be left blank.

*Unlike in WER, you can enter a player with a "Joe" DCI number in WLTR. It serves as a placeholder, and you can change it later on in the event to the correct number. This means that we can fix missing or invalid numbers after the event has started, and we don't have to track players down before we can pair round 1.

For Philly, a few players who should have had awarded byes registered online without entering their DCI number. When that list was imported into the platform SCG uses to manage event registration, it didn't flag those sign-ups with byes because it checks DCI numbers to do so.

Fast forward to the beginning of the tournament. The player list was imported from that platform, and those players weren't assigned the correct number of byes before round 1 was paired. We didn't realize this was the case until partway through round 1, when the judges started issuing No Show penalties.

Fixing It

The fix here was straightforward: since their opponents had already been told they'd won their match and we were already 10 minutes into the round, the best thing to do was to split those matches and award the opponents byes manually in the pairings screen (this works basically the same way that it does in WER, but things look a little different). Then, we'd make sure those players who should have had byes to begin with had them now.

Everything worked beautifully.

At least, I thought it did. I started entering results, and Everything Was Wonderful.

Fast forward to the end of round 1. According to WLTR, there are about six matches outstanding. The EoR lead only knows of three that are still playing. The other three tables are clear.

Well, that's a problem.

I looked at the names of the players at those tables, preparing to have announcements made for them to come to the stage. Except I recognized them: each of those three matches was one of the ones where a player should have gotten byes.

So, the changes just didn't take, right? Not quite :(

Those three matches were still waiting for results, but the three opponents (so not the players who should have received byes at the beginning of the event) are listed with their assigned byes in the reported matches column. Yep. They were in the round twice.

Well, that's a much more interesting problem.

Ward and Patrick remembered something about a similar issue that had happened at the last event with re-paired matches not saving, and they had to manually edit the tournament file to fix it. Patrick got on the phone with Jason Flatford, master wizard, to talk him through the changes that needed to be made, but it was taking some time and it sounded like they were having issues with that approach.

So I started fiddling with things. I found a solution (which involved deleting the table they were paired at and not just the pairing), but it added a few minutes to the round turnaround time.

2. The Unsticky Re-Pair

At the beginning of round 2, I had to switch two players, a la Editing Matches. But, no matter how hard I clicked the button to assign them to their new seats, it didn't save. It looked like the swap was complete, but if I tried to move to a different process, like entering results, those players magically unseated themselves.

Thinking the problem was something like the one I ran into while fixing the byes, I went through a few iterations of deleting the pairings and tables and recreating them, but nothing stuck.

In WLTR, you can't start entering results until all the players are paired, so this meant that I couldn't, well, start entering results. With about 20 minutes left in the round, I had to find an interim solution, and that turned out to be assigning byes and losses to those players. This cleared them from the list of unseated players, and I could go back to it when their slip came in and adjust which player won and which lost so they'd have the correct match points.

It's not an ideal solution; it means that they won't show up on each other's tiebreakers.

3. The Floating Player

After the first two rounds, everything on the software side was pretty smooth. There was one more wonky WLTR thing, but I couldn't figure out how to fix it and it didn't seem to be impacting the tournament. It was, however, pretty amusing:

A player was dropped in round five. Except...he didn't appear to actually be dropped, according to WLTR.

His name showed up every round after that, in the list of unseated players for the round. Normally, an unseated player means that you can't move to the results entry screen, but this one didn't cause that problem. He just hung out, spying on the pairings, for the remaining four rounds of Day 1. He didn't even show up anywhere on the results entry screen.

During rounds six and seven, I kept trying to drop him. Nothing worked, and he didn't seem to be causing any problems for the rest of the event. He dropped with three match points, so he wasn't going to make the cut to Day 2, and I decided that doing too many weird things to try to fix it might cause more substantial problems.

It also seemed likely, based on the fact that he wasn't paired and wasn't preventing the tournament from moving forward, that, as much as WLTR wanted me to think he was still enrolled, he wasn't really. I shrugged it off.

At the end of the day, there was a clean cut to Day 2 at 64th place. I performed the cut in WLTR with the place rather than the match points because it was so neat and tidy: 64 players into the next set of rounds.

Guess how many players were active in the event after that?

65. Obviously. And one of them had three match points.

I laughed, and then I went back to my hotel to sleep.

WLTR and Penalties

WLTR's penalty entry interface is very different than the ones from WER and DCI-R. In fact, WLTR has two different penalty entry interfaces.

This means that the preferred format for writing penalties on the back of the slips has changed. This is what's been used at GPs and SCG Tour events recently, and it seems likely to stick:

[Table Number] - [P1/P2] - [Judge] - [Infraction] - [Penalty] - [Description]

Of note here, you don't need to write the player's name anymore. Instead, use P1 for the first player listed in the slip and P2 for the second. Beyond that, the rest is pretty much the same.


  1. Thanks for the peeks into WLTR! My SKing is limited to the small local store events, but WLTR interests me very much nonetheless!

  2. I really dislike the penalty entry in WLTR. It's made me realize how much easier they are in WER, which seems to be my preferred method *shudder*