Showing posts with label WLTR. Show all posts
Showing posts with label WLTR. Show all posts

Thursday, June 2, 2016

GP Charlotte 2016: Saturday (Swiss Sides)

While the events on the GP certainly impacted my day on Saturday (I spent some time on the GP stage and the events that started after 6:00 PM got absolutely wrecked), that wasn't really my focus for the weekend. My focus was on Swiss side events, and my scorekeeping buddy for the weekend was Jeff Darran (who has written a guest post here before!). Previously, I'd worked with Jeff directly at GP Atlanta last year, and he's awesome. Without him, Saturday would have been a giant mess.

Since the events that unfolded after the announcements from the main event that players would be able to drop for a free Infinite Challenge Badge were far more interesting than anything else that happened to Swiss events on the weekend, that's the story that I'm going to tell.

For a little bit of context, the initial afternoon schedule looked like this, including the number of players registered:
  • 1 PM — Sealed Challenge — 300 (226 were paired for Round 1)
  • 1 PM — Standard Challenge — 10
  • 2 PM — 2HG Sealed Spectacular (notably, not a Challenge) — 98 players
  • 2 PM — Vintage Challenge — 8
  • 3 PM — Modern Challenge — 95
  • 4 PM — Standard Challenge — 96
  • 5 PM — Legacy Challenge — 70
  • 6 PM — Modern Rebound Challenge — 144
As a part of the offer to GP players, a few more events were added to the schedule. Before those changes were announced, we had been told that there would be a new Sealed Challenge at 5:30 PM — less than an hour away. That was going to be a really tight deadline to prepare for that event, especially with the number of players the main stage was predicting we would have. By the time the new events were actually announced, that event had been pushed back to 6:30, which provided an extra hour to prep product and make plans.

These were the additional events:
  • 6 PM — Standard Challenge
  • 6 PM — Legacy Challenge
  • 6:30 PM — Sealed Challenge
  • 7 PM — Modern Challenge
The 7 PM Modern Challenge might seem a little out of place, but it was there to give players dropping from the GP (which was Modern) the option to get their six packs from the Sealed event and still be able to play Modern for the rest of the night.

When the schedule was finalized, Jeff and I had to start making plans, and the awesome judges on the side events staff had to find a place to put a Sealed event that might to get a thousand players.

Step One: Figure Out the Status of EVERYTHING

It can be tempting to respond to this kind of situation by focusing on the new things that need to happen, but there are some risks to that. It's unlikely that an event slips through the cracks because there are players and judges engaged with those events, but it is very possible that some details of active events are overlooked while making that plan, like where they're located, how many active players they have, and who's scorekeeping.

The first thing I did was establish that customer service couldn't make use of an extra person. At that point, all of the afternoon events I listed earlier were still on our plates, but one of us could have stretched a little to handle all of them, which might have helped with the massive line of players getting badges from customer service.

After that, we updated our notes on all the active events:
  • What rounds were they in?
  • Who was in charge of them? What HJs were on break? Was that going to change in light of the schedule changes?
  • What's the highest table number for each one?
  • When were the current rounds going to end?
This information is super important. When things aren't breaking, I might not keep tabs on when I expect rounds to flip because I have plenty of bandwidth to handle them flipping whenever. However, when things *are* breaking, I need that information in order to prioritize what I'm working on — how important is it that these slips be entered? What about slips from that other event? Can I afford to leave the stage to work with the sides leads and HJs on a plan? Are these events going to start their last round early enough to be off our plates around six?

One of the other things I made sure we did was sort and organize all the slips currently on the stage. This tends to be a low priority, especially for smaller events. That's not to say that there was a giant pile of rainbow-colored pieces of paper — there were some neat, tidy stacks of slips that were sorted by round, but not table number. As we ramped up to getting the new events fired and earlier events were wrapping up and prizing out, I wanted to make sure that we could find slips quickly if we needed to.

Some of this was delegated to judges (who, by the way, were awesome), and a few other tasks were delegated to judges as well, including setting up a station to let players redeem their playmat vouchers without having to stand in the massive line.

Step Two: Make a Plan

This was a little more challenging. The first thing we had to do was figure out who was scorekeeping which events. Jeff started the 5 PM Legacy event, which had been the plan since the beginning of the day. I still had the 4 PM Standard event, and we each had an event or two from earlier in the day.

Our initial plan was to split up the 6 PM events — I was going to take Modern, and Jeff was going to take Standard and Legacy. That would (roughly) split the players in those events between us. I was going to take the Sealed event at 6:30, and Jeff was going to take the 7 PM Modern event.

Then we got starting table numbers from the judges for those events — the Sealed event was going to start at table 685, with all the 6 PM events starting around table 1200. In short, this meant that the table range for the Sealed event was closer to the GP stage than it was to the sides stage, and the 6 PM events weren't much closer. I stepped off the sides stage to take a look, and it took me a good 45 seconds to walk to those tables.

That's a lot of time. That's especially a lot of time if you need to collect and communicate a ton of information about drops from the Sealed Challenge, especially if you're expecting a need to process 300 of them in half an hour (which, by the way, is basically impossible).

Fortunately, I had a brilliant idea: we set up a satellite scorekeeping station in the middle of the tournament hall. By "satellite scorekeeping station," I mean "a table with my computer and a printer." When we realized we needed to do this, it was about 5:45. Registration was closing in five minutes for the 6 PM events, and since they were roughly in the same area, we decided that I would just ... scorekeep all those things. I passed my remaining events (mostly the 4 PM Standard event) off to Jeff.

There wasn't enough time to move me, my computer and my printer to their new locations before starting the 6 PM events, so I started them from the stage. The judges on those events knew what was going to happen, so they were able to tell their players where their slips were going to go from the start. These rounds started a few minutes after six. This is going to be important later.

At six on the dot, when Round 1 pairings for all those events were posted and announced, I relocated. Steve, a member of SCG's OP team, joined me at my table to and got ready to enroll players in the Modern Challenge as they dropped from the Sealed event.

Step Three: Do ALL the Things

Sealed deck construction seatings went out at about 6:34, with Nicholas Sabin, Grand Curmudgeon of the Mid-Atlantic (read: RC), at the helm. There were 680 players total. Nicholas's team distributed sealed boxes of Shadows over Innistrad to every six seats — there hadn't been time to make sealed sets for 680 players.

I’d previously warned him that processing all the drops would probably take me 10-15 minutes longer than the build time of the event, and we had a plan to make it as efficient as possible.

Four judges were stationed at a table close to mine with copies of the player seatings, divided into four name ranges. After players got their packs, they could hop in line, highlight their name on one of the lists the judges had, and sign up for the 7 PM Modern Challenge (or not). Deck construction started at 6:45 or so. About ten minutes later, I traded the judges at that table a fresh copy of the player list for the one they had already, and I started processing drops.

The player list for the event was 16 pages long, and I went through a two full lists, plus a few random scraps of paper with stragglers who dropped only after seeing their pools, to process the drops. Partway through the first list, the last slips from the first round of all the 6 PM events made their way to my table, so I had to pause to flip those rounds (remember how I said this was going to be important?).

All in all, pairings for Round 1 of the Sealed Challenge were printed at about 7:25, almost 10 minutes after Nicholas announced the end of the deck construction period. That’s not ideal, but the only way to process drops from WLTR is one player at a time — in theory, you could edit the file you use to import players to remove the drops and then re-import it into a fresh event file, but then you wouldn’t have a record of the players who dropped in the file. Given the circumstances, I wasn’t terribly upset with the amount of time it took.

A total of 234 players indicated that they were dropping before Round 1, which meant that the round paired with 446 players. There were quite a few no-shows that round, more than is usually for the Sealed Challenges, and I suspect it was the result of players either not knowing how to drop or not wanting to wait.

Step Four: Sleep

Everything was downhill after Round 1 paired. At that point, the four events I was responsible for only had about 650 players combined. Nicholas sent the judges on his team on half-round breaks in the early rounds, and the sides leads worked on getting the people who were coming back early on Sunday off the floor for the night after that. Eventually, Nicholas himself took off and Casey Brefka took over for the last round and a half of the Sealed Challenge.

After Round 4 was paired, Casey and his team helped me break down my satellite station and carry things back to the sides stage. Since the players were taking their Round 4 slips to customer service to pick up prizes, I didn’t need to hang out in the middle of the hall.

Everyone was exhausted, and even though they were doing their best to maintain the level of energy necessary to close out the night, it was obvious. I left the hall sometime after midnight, made the short trek back to my hotel room, and passed out.


I woke up on Sunday to do it all (albeit without all the craziness) again.

Tuesday, May 24, 2016

GP Charlotte 2016: Saturday (The GP)

Well. That was a weekend, wasn't it? I'm still not quite awake. I mean, I'm awake, but I feel a bit like a zombie.

I do, however, want to get this post out there while the conversations about the GP are still fresh. There's a pretty substantial knowledge gap around tournament software--you know, the thing at the heart of the long delays and ever-shifting information that players in Charlotte experienced.

I was the scorekeeping lead for Swiss side events (which got blown up by the influx of 700+ players with Infinite Challenge badges), and I was sent to the GP at the end of Round 4 when they thought the initial problem was fixed to help Kristin and Patrick (the GP scorekeepers) get through the backlog of result slips for the round. I chatted with Kristin on Sunday. My understanding of what happened on the GP is based mostly on that conversation and my own experiences scorekeeping large events, but it does shed some light on some important questions that came up, like why backups weren't an option and why tiebreakers carried over to Day 2 despite previous announcements to the contrary.

Before I get into those things, though, there's some important context. I'm not writing this as a defense of or as an excuse for the things that happened in Charlotte. As much as we (we being everyone on stage--outside admins and SCG staff) tried to make the best out of a miserable situation, I understand that it was exactly that: a miserable situation. It's not the event experience that we wanted to create for the attendees of the Grand Prix, and that's a pretty awful feeling to come home with. But it happened. Instead, I'm writing this to (hopefully) shed some light on the circumstances that led to it all.

The Unholy Trinity: DCI-R, WER, and WLTR

There are three different pieces of software that have been developed and used for Magic tournaments. Most people are most familiar with WER, or Wizards Event Reporter. This is the software that's used at your Friendly Local Game Store. DCI-R (the R stands for Reporter) used to be used for large events like GPs and SCG Tour events, but it was replaced last year with WLTR, also known as Walter or Wizards Large Tournament Reporter.

WER

When WER came out, the goal was for it to be used to run all events, but it doesn't scale very well. The results entry interface in WER is kind of awful (read: inefficient) for scorekeepers who don't use hotkeys, which is about half of us. Instead of switching over, GPs continued to use DCI-R until last year, when the switch to WLTR happened.

WER is also missing some important functionality for large events--for example, you can't edit a player's DCI number. That may not seem important, but the sheer magnitude of events the size of GP Charlotte means that EVERYTHING that can happen does happen, and that includes players signing up with the wrong DCI number.

DCI-R

When DCI-R was developed, no one imagined that a Magic tournament would ever have more than 2,000 players. It was an absurd thought, and that was the cap they set on the number of players in a single event. If you remember the (recent) days of GP Day 1 splits, this is one of the primary reasons. The other was that DCI-R didn't support multi-point data entry, which means that you could only have one scorekeeper, in front of one computer, working on a given event. The number of people who can effectively scorekeep an event that size is pretty limited. When events started to get bigger, with 2,000+ players being the norm instead of a crazy exception, this model clearly wasn't sustainable.

There's one other thing that's important to understand about DCI-R. Going around the software's interface was really easy. The tournament data was stored in a series of .dat files, and as long as you knew what each column of each file meant, it was easy to manipulate the files directly if you couldn't do something through the interface. An easy example of this is the starting table number of events--999 was the highest number you could set (because you wouldn't need more than that for 2,000 players, right?). However, if you saved and closed the tournament, you could change the starting table number in the event information file to whatever you wanted and everything worked just fine.

This is the reason that DCI-R worked (reasonably) well for large events--there were workarounds for the restrictions that existed as a result of the player cap.

But, DCI-R doesn't interact with the organized play database. You can't use it to sanction or upload tournament data, and it doesn't connect to the player database to verify DCI numbers and byes.

WLTR

WLTR is WotC's solution to the problems with DCI-R and WER for giant tournaments. It does a lot of cool things, like let you enroll more than 2,000 players in one tournament. It also lets multiple scorekeepers at multiple computers work on the same event, which is insanely important as attendance creeps up. It has a lot of the features that large events need that are missing from WER, which is awesome.

When using the multi-entry option, one computer is the "main" computer and the rest are "slaves" (yeah, I know...we have the best lingo for these things). Bad Things happen when you try to advance the event (seat for the player meeting, pair rounds, perform a cut) from one of the slave computers, but you can do basically anything else, like entering results and dropping players.

However, WLTR keeps tournament data stored in a different way, and editing it directly isn't as easy as editing the .dat files that DCI-R used, and pinpointing problems can be a little bit trickier (read: a lot). It's also still new. My first experience with it was last year at GP Atlanta, which was one of the first GPs that used it exclusively.

So, What Happened on Saturday?

When Round 4 of the GP was paired, players noticed that they didn't have the correct number of match points--no one had more than three. Obviously, this is a problem after the third round, when tons of players had two- and three-round byes, not to mention the players who, you know, won matches of Magic: the Gathering in the first three rounds.

From what I understand, the rounds that were paired randomly weren't entirely paired randomly--they were paired based on these incorrect numbers of match points. Since two rounds of match points were obliterated by the tournament software, that means that instead of being paired in their brackets, players were paired up to two brackets up or down. Players at 3-0 were paired against players at 3-0, 2-1, or 1-2.

WLTR has what's called the player card. It shows each player's opponent from each round, the table they played at, and the results of the round--it's a great quick reference for troubleshooting when a player says that their results were reported incorrectly. Despite the match points being wrong for most of the players in the event, the information on the player cards was correct. This means that the results were all still there, WLTR just wasn't calculating match points for the second and third rounds, and it was pairing based on these faulty match point totals.

What caused it?

I'm not really sure. This is Kristin's theory:

There was a player in the event who wasn't correctly assigned byes, despite having a Sleep in Special. At the beginning of Round 3, he showed up to the stage because he couldn't find his name on the pairings.

Stuff like this happens all the time. Patrick (who was on the "slave" computer) re-added him to the event and fixed his results from the first two rounds. WLTR crashed. This didn't raise any red flags at the time because WLTR crashes, well, a lot. You just re-open it, and everything is Fine. Most of the time. That seemed to be the case this time.

Except, then the round finished, Kristin tried to pair Round 4, and everything went to shit. There was some confusion about whether the pairings were correct because the player cards had accurate match results.

Reverting to the back-up from the end of Round 3 and re-pairing Round 4 didn't fix anything because the trigger for the problem happened, effectively, rounds earlier. Moreover, the data (match results from the previous rounds) was still there, it was just unusable. Re-creating the event from Round 1 would have taken hours--in addition to re-entering all those results, each round would have to be manually paired in the software, and there's no quick or easy way to do that in WLTR.

The folks on the main stage got on the phone with WotC and sent copies of the tournament file to them to see if they could figure out what the problem was.

Eventually, there was an announcement that these pairings, and the pairings for the rest of the day, were going to be random. Anything else was going to take way too much time. Round 4 started with random pairings because that was the only way to start Round 4.

So what about after that?

At some point during Round 4, it seemed like the issue had been resolved. There were about 12 minutes left in the round when I was sent to the main stage to help Kristin and Patrick hammer through the result slips from the round so they could get Round 5 paired ASAP.

Even though it looked like things were going to be okay, there were some players who were already understandably upset--they had lost to players they shouldn't have been paired against, or their tiebreakers were adversely impacted by a huge pair down. The discussions had already started about what to do for these players.

Pete and Jared decided to let players drop for a free Infinite Challenge badge, and they added some events to the side events schedule. By this point, it was late in the day, and most of the Challenge events had fired; these events gave the players who were dropping more options for the rest of the day.

There were about 700 drops, and processing them took a huge amount of time. Round 5 was paired, and it looked like the match point issue had been solved.

But it wasn't. When Round 6 was paired, the same thing happened again.

The Ever-Changing Announcements

I've been reading some of the Reddit threads and FB posts in my local playgroups, and the thing people seem to be most frustrated about is that the information they were given was constantly changing. That's true. Random or Swiss pairings? Ten minutes until the next round or twenty or an hour?

It sucks. No, really. It's awful.

Communicating in these kinds of situations is difficult. You want to get information out there so everyone knows what's going on, but it's hard to estimate how long it will take to actually get everything done.

The biggest hold-up on getting the Infinite Challenge Badges in the hands of the players who wanted to drop from the GP was the lack of label printers for the badge bar codes. We had more people on stage--Jeff was my Swiss scorekeeping buddy, and I took his events to free him up to help with the customer service line--but there wasn't a label printer for him. Instead, he handed out prizes to players finishing their Challenge events, traded playmats for vouchers, and did pretty much anything else he could that wasn't print an Infinite Challenge Badge bar code. Kristin and Patrick were also slammed trying to get all those players dropped from the GP event before Round 5.

The flip-flop on whether the rounds were going to be paired Swiss-style or randomly was based on the changing understanding of the tournament status that the event staff had--was the problem fixed, was it not fixed? After Round 4, it seemed like everything was back to normal. A few rounds later, that was clearly not the case. Going into Round 7, things were back to normal. For real this time.

Day 2 Tiebreakers

At several points on Saturday, the GP stage announced that tiebreakers from Day 1 wouldn't carry over. This is good and bad--it means that the players who had been paired down in the two rounds that were paired randomly wouldn't be punished for the impact that had on their breakers, but it also meant that the players who went undefeated on Day 1 wouldn't be rewarded for that if they did not-so-well on Day 2.

Regardless of the pros and cons, both of which are many and varied, it was the announcement that was made.

Here's the thing: it was impossible to wipe tiebreakers from Day 1 with WLTR.

Wait, what? Isn't that what used to happen on Day 2 of giant GPs by default?

Yes. But, remember what I said about DCI-R and the workarounds for events with more than 2,000 players? The fresh Day 2 tiebreakers was a side effect of one of those solutions: Day 2 was run as a completely separate event. Everyone was awarded a bye for the first round of Day 2, and they were assigned a number of match points for that bye equal to the number of points they earned on Day 1. This is just one of those crazy things that you could force DCI-R to do.

But WLTR can't do it. Why would you need to anymore? No event will ever have to split again, so there's no reason to need to create a new event and carry those points over. WLTR assigns 3 match points for a win, 1 for a draw, and 0 for a loss.

There's sort of a way to do it. You'd have to re-create every round from Day 1 and assign each player a bye or loss (rather than pairing them and entering a result) to get them to the correct number of match points. This way, they aren't associated with any opponents, so there are no tiebreakers to calculate. This has two problems: it would have taken literally forever, and there's no way to assign a player a draw.

On Tournament Software in General

Many of the responses to this issue, and the issues that have come up in the past as a result of tournament software, have included comments about developing "real" tournament software.

None of these programs are perfect by any stretch of the imagination. Far from it. DCI-R had fewer problems not because it had fewer problems, but because it had been around so long that the people using it knew how to work around them (like, you know, splitting GPs and editing files directly).

One of the big problems with developing these kind of programs is that the people writing specs and code aren't the people using them. They don't know what needs to be possible, like changing DCI numbers--if you've never scorekept an event, it's easy to imagine that you would never, ever need to change a player's DCI number. WLTR was developed with input from GP-level scorekeepers, and it does some pretty exciting things. However, the attitude toward many of the issues that have cropped up has been "that's probably a one-time thing" or "why would that be a problem?"

It mostly works. It's good enough, most of the time, But, the times when it's not, these are the kinds of things that happen.

Tuesday, March 22, 2016

GP DC 2016: Friday

Welcome back! The saga of scorekeeping Swiss side events at Grand Prix: DC 2016 continues this week. As I mentioned last week, the Tale of Friday comes in three parts:
  • Pairings board signs
  • Events that start on time (and why some don't)
  • Three stories
If you haven't read the first post in this series, I recommend that you do. It provides some context for the things that happened over the course of the weekend.

Also, you'll get to read the story of how I killed Shift, one of SCG's event printers. Late last week there was an important update to that saga: Shift lives! He's probably still recovering from his ordeal, but at least he's not dead-dead.

Yet. When's my next event on stage for SCG? May?

Pairings Board Signs

The table numbers for the weekend were set up by SCG when I arrived in the hall early on Friday, and they were glorious: each tent had two numbers on it, a traditional table number and a match number. The same match number was used for three consecutive tables, along with an A, B or C designation for which player was supposed to occupy each seat.

I mention this because these numbers snaked through the entire hall, and the events I was scorekeeping were placed at the high-end of the table numbers — most events started in the 2500s or 2600s.

On top of that, our use of pairings boards was limited. There were two or three designated for side events use, which means that events had to share pairings boards. Each board had 12 slots for sheets of paper, but we had to make it easy for players to figure out what bits of information posted there was relevant for them.

About the time that each event started, I gave the head judge a stack of papers. These were printed on the color paper that matched the match result slips for the event:


Oh. There were also schedules and prize payout signs on the pairings boards too!

These signs are super basic, but they get the job done. Each HJ got one copy of the sign on the left and four of the one on the right. Some of the larger events, like the Sealed Challenges and the Foiled Again! on Friday night, posted their pairings on two different pairings boards. Those events got twice the signage. Yay!

The slots on the pairings boards (which are just giant-sized top loaders) comfortably fit several pieces of paper, so they could hang up all of them at the beginning of the event and toss them as each round finished.

These signs, combined with the giant Gathering Point banners that now come in the GP kits, made it pretty easy to direct players to their seats. I pointed about a billion players to the round end signs over the course of the weekend, too: I tried to make notes of when I printed pairings for each round, but that only gave me a rough idea of what the round end time would be.

This brings me to a bit of advice if you're responsible for an event that's using these kinds of signs: make sure you announce at the beginning of the event that you'll be posting this information. Your players will appreciate knowing where to go to find the answers to their questions.

Events that Start on Time

For the most part, I had signs created for all my events at the beginning of the day, usually just before the first event fired. Once I've made the template and started printing things, it's easy to make the small tweaks for each other event. More importantly, it's something that each event needs to get started, and by doing it early, I won't have to remember it for the rest of the day.

Small things like this make it much easier to get events started on time. The other, biggest thing that helps is closing registration on time.

At SCG GPs, event registration closes ten minutes before the scheduled start time of the event. If you're in line by that time, you can sign up, but no one else can hop in line. This is super, super important. Ten minutes gives the awesome folks at registration enough time to get through those last few players (and some times "few" really means "dozens"), and it gives me time to get the tournament files set up and seatings or pairings generated and in the hands of the event's judges.

The "Tournament Files" Part

To start each of the Swiss events, I had to export a player file from SCG's registration system and import that file into WER or WLTR. Often, this process is pretty simple:
  1. Confirm with the registration stations that everyone's signed up.
  2. Click the export button.
  3. Save the file in the event folder.
  4. Alt-tab into the appropriate bit of tournament software.
  5. Press the import button.
All in all, it takes a minute or two. If the event is large, exporting the player file might take a little bit longer.

Sometimes, if you're me, you forget that the main event gets exported by default, so you have to twiddle your thumbs while your computer generates a .csv file with data for 3000+ players and their team affiliations, but we're not going to talk about that. Much. It only happened twice. OK, maybe three times. Maybe.

Two-Headed Giant events, on the other hand, are the absolute worst. Creating events for those is ... well, it's an adventure (and the headline of my Saturday post, so stay tuned).

After the import, it takes a few more clicks to get to seatings or pairings printed. Those have to be walked to the pairings boards, and someone has to make an announcement that they've been posted.

None of the pieces of this process are particularly time-intensive, but each one does take some time. If registration stays open until the scheduled start time of the event, there's no way that it's starting on time. Even if registration closes on time, there's a chance that Something Wonky happens, and the event starts a couple minutes late.

My pile of Friday match result slips.

So, signs have been created beforehand and registration closed on time and I have a functional tournament file. What else is there?

Starting Table Numbers

This is where side event judges can help their scorekeepers get events started on time. I need to know where to put this event.

In WLTR, once you've seated or paired the event, you can't change the starting table number. (Well, OK, you can, but it's has consequences, especially for limited events. Just pretend that you can't.) This means that I need that information ASAP.

In an ideal and perfect world, I have the starting table number for an event as soon as the one before it is seated. This makes sense, right? As soon as you know what the last table number for the noon event is, you can figure out where the 1 p.m. event should go.

That's not always the case, though. Lots of factors can influence what space you want to use for an event:
  • The number of players
  • The number of other events firing at the same time
  • The number of players in those events
  • The events that might be wrapped up (but also might not be) before this new event starts
Because WLTR makes it harder to move events than either DCI-R or WER, it's important to keep these things in mind when you're finding a spot for each event.

I'd prefer to have a tentative table number for that 1 p.m. event at 12:15 than a definitive one at 12:59:59, especially if you know under what circumstances and how that number might change.

For example, if you have an ending table number but don't know how many players are signed up, let me know that. Worst case, I can't do math, but my computer can, and I can figure out the starting table number for you or help you adapt your plan to whatever's going on.

The Friday Verdict

Friday started off on the right foot. The 11 a.m. Legacy Challenge fired on time. The Vintage Challenge started a few minutes late, but that was because we were short players and had to recruit a few more to sanction it.

The 4 p.m. events also started a little bit late because the registration system blew up. By "blew up," I of course mean that there was an update to it to fix something that was causing issues, and the update kicked everyone out. Naturally, this happened at about 3:48. Some not-panic ensued, and after the update went through, it took a few minutes to get things back up and running.

Everything else that ran from the Swiss section of the stage went out on time on Friday, which is kind of a feat by itself.

Three Stories

All three of these are player interactions. Scorekeepers interact with hundreds of players in a day, from the all-too-common "Does my slip go here?" to problems with match points and event registrations. Those things are pretty mundane. Only the wonky thing end up in my notes, and these are the highlights from Friday:

#1: "My name's not on the seating."

At first, this one seemed to fall into the mundane category. A player who had signed up for the Sealed Challenge wasn't on the seating assignments. He had an Infinite Challenge Badge (which means that he could have registered for free), so I didn't need to try to figure out whether he had actually paid for the event. Instead, I was just going to add him to the tournament and send him to his seat with six packs.

Some background is necessary here. When players pick up their Infinite Challenge Badge (which is card-sized laminated card that can hang from a lanyard), a small sticker is placed on the back of the badge. This sticker has a bardcode that's tied to the player's DCI number, and the registration stations had scanners to read it. The sticker also has the player's name and DCI number printed on it.

This player's badge didn't have his name or DCI number printed on it — it had someone else's.

Well, I thought, that's interesting. I poked around a bit to verify that this player should have had a badge, and it turned out that Customer Service just printed the wrong sticker for his. I checked, and the player whose name was on his badge was registered for the event.

I thought that maybe that player wasn't actually in the event, and just made it into the file because this player's (incorrect) badge had been scanned.

Nope. They were both supposed to be signed up. No problem. The judges seated the payer whose name hadn't shown up, and I tracked down an appropriate replacement sticker for his badge.

As it turned out, he wasn't the only player to experience that problem over the weekend. From what I was able to discover, it seems like one of the Customer Service printers had somehow gotten off by one sticker for a little while on Friday morning, so players were getting the sticker that should have gone to the player in front of them in line. Most of them caught it quickly because they noticed that the name and DCI number on the sticker were wrong.

Some of them hadn't caught on right away, though.

#2: "My name's not on the seating."

Well, this sounds familiar, doesn't it?

Completely unrelated to this particular story, I had problems all weekend with people who didn't realize what the drop box on the match slips were. WLTR slips look pretty different than the ones from DCI-R and WER, and in addition to people accidentally dropping themselves because they thought they were supposed to initial there, there were all sorts of other weird slips turned in. But, I digress. Back to the story.

This is what slips generated by WLTR look like. They print a little bit differently, but it's close.

When this player gave me his name, I recognized it as one of the no-shows from the previous round. I dug the slip out of my pile (which I hadn't gotten to sorting yet), and showed it to him.

He seemed ... perplexed, and then insisted that he had, in fact, played a match. He even signed the slip. Not the no-show slip with his name on it, obviously, but he had definitely signed a match slip.

He recalled that he won the match and his opponent had dropped, so I flipped through the slips that had the loser dropping. The event was on the small side, about 50 or 60 players, so there were a handful of those, and it only took a minute to find the one with his signature on it. He understood what had happened: he sat at the wrong seat and filled out the slip for a match that he wasn't a part of, all without noticing that his name wasn't on that match slip.

No big deal. We can fix this. I got him back in the tournament and paired him with the player who had the bye — because the Challenge events awarded points based on record, a bit of a mismatch wasn't a Problem.

I also had to explain that, even though he won the match he played, that wasn't a match as far as the tournament was concerned. He had been assigned a match loss for that round, and that would be reflected in his match points. I also had to adjust the result that was reported on the slip that he filled out.

#3: "I want to give my opponent the win."

Players can't be enrolled in more than one Challenge at a time. In order to sign up for one, they have to be dropped from their previous event. Some players didn't know that when they went to sign up for their second event of the day, but most of them were fine with it.

One player felt really bad that he had beaten his opponent and was then dropping from the event. That didn't feel right. The least he could do, now that he knew he wouldn't be able to play anymore, was concede.

But, they had already turned in their slip. At that point, the results of the match were final. This is enforced for lots of good reasons: we don't want players going out into the hallway, threatening or bribing each other, and then coming back in to change results. That concern doesn't extend to this case, but the policy is still the same: once you've filled out and turned in the slip, the result is final.

[Side note: There's actually quite a bit of nuance to the point at which a match result is final. Most of that conversation is impractical.]

He just didn't want to be That Guy. I explained what the rules are and why, but I also pointed him toward Kali, the event manager. I expected that she would give him the same answer that I had (spoiler: she did), but I thought that this was one of those situations where escalating would make him feel like we understood what he was trying to do and wanted to make it work.


The Future!

I have two more days from DC to write about. The most "exciting" thing that I did on Saturday was start the Two-Headed Giant event. That was in WER, and it gives me an excuse to talk about how you can edit players and teams in a 2HG event :D

BUT ... before I can get to the Saturday and Sunday reports, I'm going to be putting up a post about End-of-Round. That post ties into a seminar that I'm presenting this weekend at the Northeast Spring 2016 Judge Conference with my roommate and Area Captain, Eric Dustin Brown — who will also be writing a complementary blog post. Both of those will be up on Thursday night, and you can look also look forward to some seminar reports after the conference. If there are specific things you want to ask about EOR, let us know!

(Did I mention that Shift isn't dead? :D)

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.