fbpx

Yawgmoth’s Whimsy #257 – Magic Online Updates

Read Peter Jahn... at StarCityGames.com!
Wednesday, March 18th – This might not have been the best weekend to play Magic Online, even if I had had the time. The program has problems, again. Since I can’t talk about the decks, looks like I’ll have to talk about that. Lots to talk about – Wizards has made a number of announcements recently. Sets are leaving, sets are coming, and MTGO will have its own big buck championships at Worlds.

I really wanted to write about a new deck this week. I even had time to do the playtesting. That was before my car — well, my mechanic said I was going to buy a new engine. The only question was whether it would be in my current car, or a new one.

In this case, the car was getting about 400 mpg. That’s not 400 mpg of gas — it gets about 30 miles per galling of gasoline. The problem is that it is also burning about 1 quart of oil per 100 miles. That’s a lot of 10W30, and it’s getting worse. That meant spending all that wonderful free time trying to find a new ride. I have one — or will, shortly — but that sure messed with my Magic play time. I even missed out on FNM. Test driving a car you don’t much like << drafting.

On the plus side, if there is one, this might not have been the best weekend to play Magic Online, even if I had had the time. The program has problems, again. Since I can’t talk about the decks, looks like I’ll have to talk about that. Lots to talk about – Wizards has made a number of announcements recently. Sets are leaving, sets are coming, and MTGO will have its own big buck championships at Worlds.

Masters Edition II Leaving the Store

MEDII, the only online source of five of the classic dual lands, Necropotence and a handful of other interesting old-set cards, plus 200+ pieces of digital chaff, will no longer be sold as of early next month. Once that last pack is sold, that’s it. People are drafting like mad to try complete playsets of dual lands. Players are also participating in 8-man Swiss sealed events. Drafts and Swiss sealed events are all NIX TIX — the entry fee is just the packs. The payout is 4-3-2-2 for drafts, and 2 packs per win for the Swiss sealed.

I am entering a Swiss sealed as I write this. In the queue and waiting — actually the queue has filled and I am waiting for my pool to open. It is taking a while — which would segue neatly into the next topic, but I really hope that I get my cards long before that.

It’s close. I did bang out a bit of that section just now.

Hey — cards. I’m all eager, because what I really want are duals. That is the whole point of this mess — to open missing dual lands. Since I am short one or two of every dual, anything I bust is a win.

I bust — nothing. No duals. My rares are Marhjan, Ritual of Subdual, a FOIL Despotic Scepter, Kasya, Magus of the Unseen and something I can’t remember — with the exception the foil, they all retail at $0.15. If I could trade, and if I could find someone to buy them, I might get a whole TIX for the entire pool, plus maybe 2 for the foil. Maybe.

The sealed product cost me $21.15.

On the other hand, Underground Sea is currently selling for close to $50.00, and my favorite dealers are out. Busting one seems like the best option.

Looking through this pool, however, I see some problems. I have almost no creatures. I have one Dark Banishing and three Necrites, but no other playable black cards. Really — the rest of black is Misdirection, Icequake and Songs of the Damned. Blue has a couple copies of Browse (that will be numbers 13, 14 and 15 in my collection) and Personal Tutor — and exactly two creatures. Red is pretty much a couple Orcs and absolutely nothing that says burn that guy. White has two fliers and a bad tapper. Green has — Kaysa and a Thallid. And an excessive number of Shrinks. (Okay, any number of Shrinks is excessive, even zero, but I have way more than that.)

I should really just drop — but I may be able to invest a couple hours and win at least a couple packs. Maybe. I’ll have time to write, at least.

Lag

MTGO has rediscovered a classic piece of its history — it lags. It is especially bad when starting new games, pairing rounds and looking at collections. Trading is a mess. Just clicking on your own collection to make cards tradable takes a while. Actually entering a trade, and clicking on the other player’s cards, is slow beyond belief. I spent part of this weekend trading some of my extras to Ingrid, to complete our playsets of Shards and Conflux commons. It took about 15 minutes to trade 32 cards for 30 other cards.

Gah.

Still waiting for my round to be paired, by the way.

The lag is a big problem. It will eventually go away, but right now it is affecting trades, creation of new games (both in events and in casual), viewing collections, changing screens – and some players are reporting click lag and other in game effects. I don’t get the latter — I am just seeing bad lag in new games, etc. Once in a game, the problems I experience all seem to result from the fact that I am not actually all that good at this game. Correction — I don’t concentrate enough. I know what the tricks are, how they work, etc., but I occasionally forget to play around them, even when I know they are there.

Whatever — let’s talk about the lag. The problem really seems to be the database server that keeps track of who owns what. That database is a massive undertaking — and it is the root of all the big problems. Let’s look at some of them.

1) Slow game joins: people have complained that this is just a matchmaking function — match player X looking for a Standard game with player Y looking for same. True — but then it needs to validate the decks. Both player X and Y have chosen decks, and the server now needs to validate that both decks are Standard legal (simple) and that both players own all the cards that they intend to play (not simple.) That means 150 database calls. It’s a small number, but keep reading.

2) Long lags during release weekends: In a draft, people sit down and open cards. Starting the draft means that the server has to destroy 40 digital objects (the players’ booster packs plus 2 TIX each) and create 360 new ones (the cards.) For a large sealed event, the server has to create a lot more — a 96 player sealed event, for example, would involve the simultaneous creation of 8,640 new digital objects.

Wizards delayed the Conflux release Championships, and divided it into five separate events. It was, initially, going to be a single sealed event with 1,300+ players qualified. That would have been a lot of database activity — and scheduled during prime time. Five smaller events at scattered times is a lot less likely to cause a crash — and Wizards should avoid any chance of having to redo the event or pay compensation to 1,300 players at once. Either option would involve serious money.

Maintaining a collections-tracking database for something as complex as MTGO is a significant challenge. Recently, Algona — one of the few outsiders with real knowledge about MTGO economics and activity — asked whether this was even feasible. It really has never been done before.

Some people have talked about World of Warcraft. True, WoW has a lot more players, but they are not all on the same server. You cannot trade WoW objects across servers, and each individual WoW server has a whole lot smaller load. Most WoW servers have 1-2k players. MTGO has two to three times that load — and everyone can trade with everyone.

MTGO players also have more database entries. I’m not a WoW player, but I do play Guildwars. My Guildwars characters have somewhere between 100 and 200 items, between their inventory, equipped items and storage. My two MTGO accounts (main plus a storage account) have tens of thousands of cards.

People also talk about Poker sites with far more simultaneous players. True, but so what? The rules engine for poker is trivial, and the only things that has to be tracked for players are game status, cards in hand and chips. That’s trivial, by comparison — and poker sites appear to run multiple servers. It’s like trying to stuff 15 Magic players into a VW bug — then saying “hey, in NYC there are millions of people in cars.” Right, but the point is that MTGO players are all in the same car. They have to be to allow everyone to trade with everyone. After all, I do not want to go join a new server on which no one owns any cards. I’m having enough trouble finding Lion’s Eye Diamonds as it is. And note that replicating the database is no answer — the problem is not the number of users, it’s the huge number of cards. And the cards are pretty much crucial to a collectible card game.

The volume of digital objects owned by players and tracked by the system really does appear to be unprecedented.

Some inventory tracking program for Fortune 500 companies might deal in the same volumes of items, but these do not have the same response time issues. A company like Walmart might actually add 9,000 items to its inventory at one time, but those items will tend to have one initial location and ownership code — not several hundred. Those items may all end up being separated and routed eventually, but that might need to happen in a couple days — not a second or less.

In many ways, a digital CCG like MTGO may be a unique programming challenge.

Forum posters keep beating on Wizards for not getting this done immediately. They suggest all sorts of “solutions.” My favorite is to “put the hamsters powering the servers on steroids.” Another common suggestion is outsourcing. However, it is entirely possible that no other company in the world has the expertise to build something like MTGO — Wizards may really be on the bleeding edge, here. This really is rocket science, and the Wizards may really be the best there is. It may just be really, really hard.

It took a decade to get to the moon. MTGO is only half a decade or so old. I’ll give Wizards a few more months to get the collections server finished. (That doesn’t mean I’m going to enjoy the problems and lag in the meantime, but at least I’ll have something to write about.)

Round 1:

My opponent dropped Skull Catapult on turn 4. I got out a 2/3 flier — and he had bigger and better fliers. I had the keep-a-dude-tapped guy in play — or did, until he killed it — but his 3/3 flier had vigilance. I lose.

Skull Catapult is the Loxodon Warhammer of MEDII limited. It does not help that my pool has exactly zero ways of dealing with it.

The advantage of Swiss rounds — I can keep on playing. I don’t know that I should, but I can. My rating is now back down to 1700, but ratings do nothing online. If they did, I might reconsider playing a truly bad pool in a 16k event.

Magic Online Season Championships

Some seriously good news — Wizards is treating Magic as a real product. They recently announced a Championship series. The upcoming year is divided into seven “seasons.” Players earn points for winning events. Any player earning 15 points in a season is qualified for a spot in the end-of-season championships. The championships pay out a really good amount of prizes, as well as special textless cards (the first is a textless Cryptic Command).

The top two finishers in each season win a chance to play, on computers running MTGO, in an MTGO Championship to be held live at Worlds in Rome next fall. Sweet!

Seasons are 30 days long, and you have to win 15 points per season to qualify for the Championship. Winning a draft is worth one point. Top 8ing a PE is worth 3 points.

The prizes in Rome range from $4,000 for 5th — 8th up to $13,000 for 1st place.

Looking back over my notes, I see that I did once win 6 drafts in a single week, and I am not a draft specialist. Fifteen points in a month is possible, if I play a lot. If I can do it, anyone can.

This will be really interesting. I can’t wait to see whether this affects who is playing in what formats. While sharks descend on “easy” formats like 10E booster draft, especially during the last week of a season? Will overall participation increase markedly, or decrease? How many players will end up qualified for the end-of-season championship?

Will I?

The Shredder

A few people have proposed having a method of destroying unwanted cards as a means of resolving the server load, etc. Let’s look at this.

First, the program should not allow users to just delete cards. If it did, sooner or later, someone is going to end up deleting something they didn’t want to delete, or some angry friend or spouse is going to shred someone’s collection, or whatever. If deleted cards are untracked, then Wizards is going to have to deal with requests to restore expensive cards — and both answers to that are bad. A “yes” may lead to fraud, while “no” will mean upset users.

A far better choice would be a process where players can trade unwanted cards to Wizards, in much the same way redemption works. Having Wizards remove cards in this way would also Wizards to track what is being removed. Wizards could take action if some particular card was likely wind up in short supply, but this seems unlikely.

(A caveat on the following — I know enough programming to be dangerous, but not enough to make my living that way.)

I am not sure that the shredder would significantly reduce the number of object identifiers in the database, at least not in any meaningful way. The number of objects would decrease, but that might not make much of a savings. To explain, assume I had a list of 100 objects, and I erased items 17, 28, 29, 34, 56, 73, 74, 75 and 97. My list now has eight fewer objects, but what do I do now?

I could put other objects into those holes on the list. This works, but now I need to write additional code that would identify the holes and assign those numbers. That is going to be less efficient that just assigning the next new number whenever an object is created.

I could also renumber everything to fill the holes. (This part of the analogy doesn’t really work with a paper list — think spreadsheet.) This would compress the list, and we could just start numbering again at the first empty spot in the list — number 93 in my example. This works, but it is playing with fire. Renumbering the list is great, if we make no mistakes. However, if anything gets overwritten, then parts of people’s collections vanish. That’s incredibly bad. MTGO can survive almost any problem, but the idea that people’s collections are unsafe might be fatal. The only answer would be to create a system to match old numbers with new numbers, to enable future verification, and that becomes really code- and space-inefficient.

Maybe it can safely be done — I’m no expert on this stuff.

IMHO, the best option would be a system that “trades” cards from users to a Wizards account. The items could just be sequestered, or destroyed, or whatever. After all, storing a bit or byte really doesn’t require much room, so keeping them in that “account” has no real effect.

At first, I didn’t see much advantage to moving cards from my account to a Wizards dead cards account. After all, I also have a storage account — one where I stick all the extra cards I don’t need. For example, I have drafted Pacifism in several base sets and in Mirage. Online, I only need four copies, no matter how many decks I have them in. I kept the two foils, plus two with the best artwork and traded the rest to my storage account. That storage account has 40 Pacifisms, 43 Aven Windreaders, 50 odd Hill Giants, etc. — over 13,000 cards I have no real use for and that bots won’t buy. I occasionally give some cards away to new players, but the account is still growing.

Fine, you say, but what’s the point?

Well, last week I cleaned out some draft leavings and moved them to my storage account. That meant opening the collections on both accounts and trading. That transaction required database calls to determine that I owned all 30,000 or so cards. If I could shred a lot of those cards, the number of database transactions to open the accounts would be smaller.

It will probably be a bit of a pain to “trade” away all those cards. To provide some incentive, Wizards could pay some nominal amount for the cards. It should not be a lot — Wizards does not want to outprice dealers. However, it should be a real payment. I am thinking something like 1 TIX per 1,000 cards transferred to Wizards. No one gets rich, but a lot of people can clear out their accounts of unneeded chaff.

A couple groups will benefit from this. The first is long-time or heavy drafters who have not traded away their commons. Note that those people have spent the money — maybe some effort, but mainly money — necessary to get the packs and TIX for the drafts and sealed events. Very, very few people can “go infinite,” but a lot draft a lot. On average, it takes 30 drafts to get 1,000 commons, so this is not a lot of payback, but it is something.

The other group that could make some TIX off this deal would be large traders. Some of the big ones probably have lots and lots of random commons stored up — far more than they could ever sell. It would be a minor windfall for them. That is not a bad thing. Who is really bearing the brunt of the trading glitches, the super-slow trades and so forth? The large traders. The biggest such traders might be able to make a couple hundred TIX this way — I don’t know, I deliberately didn’t ask — but that’s only because they buy and open hundreds of boosters whenever a new set comes out.

Besides, with all the trade problems they have endured, they really deserve some recompense. This would be a great way of providing it. Dealers make constructed possible, after all.

Equally importantly, having the traders open thier bots and storage accounts simultaneously — which happens whenever the bots are serviced, is going to result in a massive amount of database activity. Clearing 200,000 unwanted commons out of some of these accounts can’t help but improve performance, at least to some extent.

At least, I think so.

Round 2:

My opponent dropped Skull Catapult on turn 4. Seriously, one of the best uncommons in the format, and both opponents have had one turn 4. This opponent also had Kjeldoran Outpost. That meant that, for four mana, he had a free blocker and a Shock every turn until I was dead. He had other stuff, but he hardly needs it. I did manage to steal one game, but not the match.

The Death of Classic?

I note, with some concern, that none of the Classic events appear to have fired this weekend. This could be because of the NIX TIX MEDII events — all the Classic players were trying to draft or sealed their way into the last few duals they need. Alternatively, it could be because of sideboarding issues. The database communications issues are meaning that sideboarding changes sometimes are not verified by the server (as in “he can put those cards in, he owns them.”) If the verification does not complete, the player winds up playing unsideboarded. This is a problem — if I am playing game two against Dredge or Affinity, I sort of want my sideboard tech.

Or maybe the format is just too expensive. I still haven’t drafted my way to the cards I need, and I am not willing to pay $45.00 for those last Underground Seas if I might bust them in limited. Until then, I am not paying to play constructed with half-completed decks. Maybe many others are in the same boat.

If it is the fact that the format is too expensive, and the PEs cannot attract minimum numbers of players, now, then it is unlikely to get better in a couple months, once the cards are no longer for sale. In that case, Classic and Legacy formats are doomed. They will go the way of Prismatic and Momir Vig — formats that once had regularly schedule PEs, but lost that status.

I sure hope not. Wizards has said that they will not let formats die because of super expensive mana bases — we’ll see what they do about it.

Round 3:

My opponent did not drop Skull Catapult on turn 4. He did have some good stuff, however, and I got mana screwed. I died with him at 1 and with two fliers in play — but he had a larger flier and a spider also in play. I died with my Dark Banishing in hand and 9 cards left in my library — three of them my three swamps. Game two was similar — I got some fast beats through, then he stabilized and I had no reach. However, he was playing very consistently slowly — enough so that I think he was suffering from some in-game lag. In the end, it killed him. He ran out of time in game 2.

I won two packs, despite the fact that my deck went 0-2, 1-2 and 0-1.

Go me.

PRJ

“one million words” on MTGO