One hot topic recently has been whether older formats like Modern and Legacy will come to Magic Arena, and if so, when. Some people are optimistic that these formats will appear relatively soon, and others think it will be many years, or that they may never show up at all.
While there are many reasons why those older formats may take a while to arrive on Magic Arena, from how they would fit into the economy to how events would be structured, one of the major hurdles is the programming effort required to code all the cards, which I think makes it unlikely that we’ll see those formats for several years.
On the Rules Engine
There have been a lot of discussions about the rules engine of Magic Arena and to what extent it can parse rules text to automatically understand what cards do, but even if it is everything that people think it is, it can only understand the rules text that it’s been taught to understand. If a card says “affinity for artifacts” or “rebound,” the rules engine can’t do anything until the meaning of those words has been programmed in, so we need to look at how difficult implementing mechanics is.
For most mechanics, just mapping keywords to regular rules text is all that’s necessary. On the whole, mechanics tend to be simple triggered abilities (i.e., rampage, flanking, bushido), activated abilities (bloodrush, ninjutsu, reinforce), variants of kicker (buyback, entwine, overload), or evasion mechanics (shadow, skulk), which are the bread and butter of a Magic game. Implementing a mechanic like provoke doesn’t take significantly more effort than just implementing a single card that has provoke’s text written out, and then they get to apply it to every card with provoke.
There are a few things in the game that require a lot more effort than that, though, mainly due to two things: needing to modify other cards, which I think of as “splash damage,” and a need for a special UI. UI costs in particular are often underestimated by the general public, but they tend to dominate everything else, largely because it takes lots of iterations to come up with something that works, and it’s never clear if you’ve found the best option available. You can easily test whether something is mechanically correct, but figuring out if a UI is understandable by your audience is much more difficult. You can see this in action in the Magic Online context in their discussion of implementing Born of the Gods, where Whims of the Fates took a significant amount of total effort to implement the set, solely due to the UI design.
So with that in mind, here are my choices for the top five technical impediments to getting older formats online.
#5: Graveyard Order
In the very early days of Magic, several cards were printed that care about the order of a player’s graveyard, starting with Nether Shadow in Alpha and ending with Volrath’s Shapeshifter in Stronghold. While many of these cards are irrelevant to competitive Magic, Shallow Grave sees play in Legacy.
The difficulty here isn’t in implementing the actual cards. Determining the top creature card of a graveyard or whether there are three creature cards above a certain card is straightforward. Rather, the difficulty here is largely in getting cards to go to the graveyard in the right order in the first place, which affects everything in the game.
The rules for graveyard order are actually pretty tricky. As an example, if you have an Elvish Clancaller and a District Guide in play and you cast Ritual of Soot, you get to choose which order your cards go to the graveyard, and then the Ritual goes on top of it. If you instead cast Golden Demise, the Golden Demise goes to the graveyard, followed by the Clancaller, and then finally the District Guide.
This also has a UI impact, because when multiple cards need to go to the graveyard, the user has to be prompted to choose the order. This can be suppressed in formats that don’t have graveyard order-matters cards, as Magic Online does, but it needs to exist to support Legacy, and making it clear what the player is choosing between and, most importantly, why, will be a challenge.
#4: The One-Offs
As Magic has progressed, the designers have figured out what kinds of effects work properly and feel satisfying, and even the regularly-appearing wacky red rare, whether it’s Chance for Glory, Apex of Power, or Scrambleverse, is actually a pretty straightforward combination of Magic effects.
The early days were a bit more fluid. In Alpha, Richard Garfield was big on flavorful effects and leaving players to figure out how they actually worked. Even beyond the ante and dexterity cards, which aren’t legal in any format and won’t ever make it to Arena, there are some cards you’d never see made today. The other early sets contributed some more, and then a couple snuck in many years later. These cards would be disproportionately expensive to implement, mostly due to UI design issues.
For the most part, a bunch of these cards can be skipped. Designing a UI for Drain Power that clearly explains what’s happening and prompts the player to activate a mana ability of each land would be annoying, but nobody plays that card, so Arena can ignore it like Magic Online has. (Side note: Did Alpha really need both Drain Power and Mana Short?) But there are a few cases where these cards have shown up in competitive Magic and need to be implemented to properly support older formats. A few examples:
Doomsday is the namesake of both a Legacy and Vintage deck, albeit one that isn’t currently a major player in either format, but the specific choices that need to be made require a specialized UI. The user needs to be presented with every card in their graveyard and library, then they have to be able to choose and order those cards. This seems like a relatively straightforward combination of existing UI elements, but laying them out such that a player can see the situation on the battlefield and their card options, and then choose and order 5 cards from among 40 or more without timing out will be a challenge.
Serum Powder is a staple in Vintage Dredge and shows up in other decks from time to time. It allows you to exile your hand instead of taking a mulligan. Implementing this affects not only the UI for taking a mulligan, but also the mulligan UI for the opponent, since they now need to see what was exiled. In game 1, an opponent using Serum Powder allows you to see what they’re playing and adjust your mulligan decisions accordingly. Even in later games, if a player sees that their Dredge opponent has exiled multiple Dread Returns, for instance, it might affect what hands they’re willing to keep.
Finally, I think the most difficult one-off is Panglacial Wurm, which allows you to cast it while searching your library. This requires not only modifying the search UI in order to allow the player to signify they want to cast the Wurm, it also requires that the game be able to run the spellcasting UI while a search is in progress, complete with tapping lands, tapping artifacts if Inspiring Statuary is in play, sacrificing Treasures, and so forth.
All of these individual cards add up to a large amount of work to support competitive formats.
#3: Replacement Effects
Replacement effects are abilities that change what happens when some event occurs. On the whole, the actual effects shouldn’t be too difficult to implement, but this is a place where splash damage comes into play in a big way. For any card with a replacement effect to work properly, the cards that cause that effect need to be coded in such a way as to allow their effects to be changed before they happen.
As a simple example, take Divination. The rules say that card draws are processed one at a time, so its code might boil down to something that looks like “drawCard(); drawCard();”, where drawCard is a function that does everything necessary to draw a card, including looking for replacement effects like Notion Thief or Laboratory Maniac. At least, it might have up until Commander 2017 was released, because that set contained Alms Collector and brought with it a change to the rules that allowed a block of multiple draws to be replaced before they’re split into individual draws. If the coding style had been to write out multiple draws in the style I mentioned, because that was how they worked in the rules, hundreds of cards would have had to be updated to account for Alms Collector.
To add on, the number of events that can be replaced by already-printed Magic cards is quite large. It includes common things like damage being dealt or cards being drawn, but it also includes searching libraries (Aven Mindcensor), losing the game (Exquisite Archangel), countering spells (Guile), flipping coins (Krark’s Thumb), and even beginning your turn (Time Vault).
#2: History of the Turn
The vast majority of Magic cards deal with the state of the game as it is at a particular moment, but a few of them base their effects on what happened prior. A simple example is Children of Korlis, which requires the game to understand how much life you’ve lost on the current turn.
This is difficult to implement because, by default, a Magic rules engine simply performs actions and then forgets about them. Anything that needs to be tracked over time has to have some storage set up to track it and then everything that causes that event to happen needs to properly update the tracking information.
The most complicated example of this type of effect is Sylvan Library, which requires you to return two cards drawn this turn to the top of your library. That means that every card in a player’s hand has to be annotated with whether it was drawn this turn. It also needs to be cleared properly, so that if you cast Brainstorm and then Anticipate, choosing one of the cards you put back, that card doesn’t count as a card drawn this turn.
But while some individual cards are tricky, the sheer number of things to be tracked is really the source of the problem. Examples of things that need to be tracked are the amount of life lost in a turn (Children of Korlis), the amount of life gained (Angelic Accord), whether a player has cast a spell (Angelic Arbiter), the number of Pirates that have dealt combat damage to each player (Admiral Beckett Brass), the number of permanents that went to a graveyard (Bitter Ordeal) and which ones (Grim Return), which players tapped a land for mana (Desolation), how many spells have been cast (storm) and which ones (Ricochet Trap), and which players searched their library (Archive Trap). There are many more, and every time one of these cards gets added, they need to ensure that every card that performs the action being tracked updates the tracking information properly.
#1: Controlling Other Players
Finally, I think the biggest single challenge to bringing older sets to Magic Arena is the ability to control other players, mainly via Mindslaver. While splash damage isn’t a major concern here, the UI issues are over the top. Accurately and clearly prompting the player with the options both they and their opponent have is incredibly difficult. The controlling player needs to be able to play cards out of their opponent’s hand, look at the top card of their library if a card like Experimental Frenzy is in play, look at any face-down cards that the controlled player could look at, and so forth. In effect, every piece of gameplay UI has to be replicated for the opponent’s half of the battlefield.
On top of this, the player needs to understand who is able to act when. Magic Online has an interface for controlling players, and people often find it quite difficult to determine who they’re acting for. The fact that it sometimes takes two priority passes to complete a phase, for instance, breaks the natural rhythm of playing the game. The difficulty is compounded by the fact that many players only have a vague understanding of how Magic’s priority system works, so you can’t rely on that knowledge to help them figure out what’s going on. Most people don’t immediately understand how their stops work on their opponent’s turn either. Arena will have to grapple with a similar set of problems, since each player normally would only get priority when they have a play, resulting in an inconsistent number of passes required to move between phases.
An extra complication is deciding how it interacts with Arena’s existing UI decisions. Does the “pass turn” toggle apply to only the player that currently has priority, or both players? Do you get double the turn time that you normally would, or do you have to play both players’ turns in the same amount of time you’d normally just play one?
All of these obstacles are obviously surmountable, as Magic Online’s existing implementation shows, but taken together, I think they represent many engineer-years worth of work. Even assuming the Arena team is willing to spend the time, I think it’s unlikely that we see support for Modern in the next three years, and support for eternal formats like Legacy, Vintage, Commander, and Pauper would likely take several additional years.