The Achievement of Shipping Achievements

Allow me to introduce myself: I'm Ben Elliott, a software engineer on the Features team for MTG Arena. If you're anything like me, you're the kind of player who gets a little bored doing just one thing. You may prefer to hop between formats. You might mix things up by entering rotating events. You might build a deck specifically to … well, bully Sparky in increasingly creative ways.
In other words, you might be the kind of player who enjoys having many goals.
MTG Arena has long wanted to encourage exploration, and several of the game's systems are designed to do exactly that. The new-player experience is the first prominent example of this. MTG Arena attempts to ease you into the behemoth that is Magic: The Gathering, one color, one deck at a time, until you feel comfortable entering games against other human players. At this point, with a little more experience under your belt, we encourage you to explore via daily quests. You probably can't reliably complete daily quests with the same deck every day (though, again, if you're like me, you might enjoy the challenge of trying to make a single deck that can complete most daily quests by itself), so you find yourself reaching for techniques, strategies, and cards you may not have considered trying otherwise.
Of course, the new-player experience and daily quests can only do so much (and you probably know where this is going). For almost as long as MTG Arena has existed, players have been clamoring for a capital-A achievement system. A way to explore, try new things, get creative, and, at the end of the day, have a nice shiny badge that shows you did the thing. As it turns out, the designers and developers of MTG Arena have been thinking about achievements for just as long. Thinking about the benefits and pitfalls, the technical challenges, and, of course, dreaming up ideas for those glorious, difficult, exceedingly challenging one-off achievements. And with the release of Aetherdrift, we're happy for the achievements feature to have finally launched!
But getting there was a bit of a winding journey.
We thought you would like a small peek behind the curtain to see how we got there. So, without further ado, here's how it all happened …
Groundwork and Prototyping
While we've been thinking and talking about achievements for ages, the MTG Arena Features team began working on achievements in earnest in the spring of 2024.
Our team began with an initial design phase, laying out both the high-level objectives of a feature like achievements and creating an initial list of the achievements we'd want (fun fact: the list initially had 126 achievements). Some key facets of the design that emerged early on included:
- Engagement: Achievements should be fun to hunt down and drive players' Magic journey.
- Diversity: A variety of achievements should cater to different player types, spread across everything MTG Arena has to offer.
- Flexibility: The team wanted to be able to add, tweak, and remove achievements without disrupting unrelated ones and to ensure complete control to designers tasked with creating them.
Importantly, our designers were very careful about scope of the feature; if we bit off more than we could chew, the feature would hardly be achievable, wouldn't it?
While this was going on, we also began prototyping different ways we could present the achievements to players. We mocked up UI, discussed tradeoffs, and experimented with using our game client in ways it hadn't really been used before.
A case in point: Pop-up notifications must be shown any time you complete an achievement. We had to make sure these could appear on just about any screen without being too distracting but still letting players know when they'd done something great. UX designers prototyped several appearances for these notifications and, perhaps more importantly, had to decide where on the screen they would appear. (We landed on the top right of the screen, while never letting it animate there too long.)

It was during this prototyping that we decided to organize achievements into groups, so that they were thematic and easier to find in an ever-expanding list. This meant we also had to design how we were going to organize them. The appearance of these groups evolved multiple times over the course of prototyping and development, with each iteration improving on our early attempts. It was through this iterative process that we discussed showing a "favorite" achievement-in-progress in the homepage's daily quest tracker and agreed it would be a useful thing to have. It wasn't something we initially planned, but that's one of the benefits of going through multiple rounds of collaborative prototyping—it allowed us to discover things we didn't know we wanted and challenged us to find ways to implement new features within an already new feature without biting off more than we could chew.

The engineers also began thinking about ways to seamlessly weave achievements into our existing systems. We reused some techniques developed while improving the new-player experience to provide a uniform way for achievements to be created and added support for satisfying some of the new requirements some achievements would entail. We also wanted to make sure that the feature would work at scale—an oft forgotten restriction for games like MTG Arena, especially if you're used to working on smaller and/or independent projects. In a game with thousands upon thousands of players, engaging with your game across various devices and software, from all around the globe, what would the performance impact be when turning achievements on? It's one of those things we had to very carefully design around from the beginning to have as little negative impact on the servers and gameplay performance as possible.
Lastly, while the achievements effort was centered on the Features team, we knew we'd need some substantial cross-team collaboration. Most achievements happen within a game of Magic, and we wanted to make sure we could write achievements that care about the rules of Magic as much as the cards themselves do.
We began planning the architecture for these achievements with our Cardset team, as any gameplay-related achievements would have fundamentally unique technical requirements that other, out-of-match achievements wouldn't. We also partnered with our Content team to ensure that all the new achievements we were creating would be sustainable, including the new cosmetic type being paired with the feature (i.e., titles!). Anyone who's built an achievements system knows they touch every facet of a game. For MTG Arena, this means everything from in-match interactions, to opening booster packs, to building decks, to playing in different formats … the list goes on and on.
Software is easiest to create and maintain when all the complex pieces don't have to care about what the other complex pieces are doing. A feature like achievements laughs in the face of this ideal; it cares about everything.
This phase took us up until the summer of 2024, and by the end of it, we had several pieces of the puzzle working independently. We had a rudimentary achievements page (albeit using placeholders instead of real achievement data), some achievements implemented on the server (albeit not yet hooked up to display on the client), and lots of little works-in-progress and in-between pieces that would help bring it all together (such as a page to view and select titles).
A Midsummer Odyssey
In the beginning of the summer, most of the Features team took a bit of a break from working on achievements.
This may take a little explaining … or maybe it doesn't, depending on how well you remember last year; 2024 was a unique year for MTG Arena, with some high-complexity, high-profile sets like Modern Horizons 3. This afforded us some unique opportunities to build features that could pair with these kinds of sets. At the same time, we realized that some achievements work was blocked on figuring out how to effectively and sustainably develop in-match achievements (an inherently harder nut to crack than out-of-match achievements). Our solution was to:
- Take a subset of the team and have them hash out the Really Tricky Bits of in-match achievements, and
- Have the rest of the Features team spend time on non-achievement features.
The parts of the Features team that worked on things other than achievements managed to produce some nice features. We added the ability to sell preconstructed decks in the Store, and a certain emporium (née Psychic Frog's Horizon Hideaway) hit the scene. At any given time, about half the Features team is working on smaller features, quality-of-life improvements, and bug fixes. Rest assured; this cohort of the team was spending that time well!
Meanwhile, the implementation of in-match achievements really started to take shape. The team landed on in-match achievements being implemented in the actual language of Magic: The Gathering abilities. As a player enters a game, we check which achievements might be relevant in that game and tell the rules engine to load that achievement as something akin to an ability. (Note: it's not an actual ability to avoid achievements themselves interacting with other effects during a match that do care about abilities—yes, this is something we had to care about when implementing the system this way.) When the circumstances that'd trigger that achievement or achievement progress to occur, the game records that fact. The achievement's signal updates the player's achievement progress much like the metrics for daily quests do. To make it possible for designers to reuse the same achievement signals and author achievements more easily, we also added the ability for achievement triggers to take parameters: parts of the rules text that we could swap in or out as needed to templatize the trigger.
As one example, consider the achievement "Growth and Strength" that requires you to, "Cast 250 Elf or Hydra spells over any number of games." The rules text of this achievement's trigger reads as:
Whenever you cast a {SubtypeParameter 1} spell or {SubtypeParameter 2} spell, {UpdateAchievement}.
For our example, we replace the SubtypeParameters #s with the subtypes of Elf and Hydra, respectively. These hot new keywords, SubtypeParameter # and UpdateAchievement, aren't really part of the language of Magic: The Gathering, but what matters is that they exist as things the game engine understands. The game engine can now load these achievement triggers properly and check them along with all the other game triggers and states it usually does. A bonus of doing it this way is that the rules engine also counts triggers from cards that meet these parameters in rule-specific ways—for example, a Changeling can make progress toward the "Growth and Strength" achievement, because a Changeling is every creature type (which includes Elf and Hydra).
By the end of the summer, the tech for in-match achievements was in a good place, Modern Horizons 3 was out the door, and we were ready to resume achievements with gusto.
Approaching the Finish Line
During the late summer and autumn, we dove headlong into integrating our disparate pieces of the feature together, implementing the remaining achievements and polishing the UI/UX of the feature. We split our achievements into two achievement "sets": one for core achievements with a general focus and another for achievements associated with each of the Magic colors. We started getting final art, icons, and text in for all our many achievements. We ensured every screen worked for mobile devices and layouts. We added tools for QA to allow them to more easily test specific achievements. At the time, we were hoping to have the feature ready to ship with the launch of Magic: The Gathering Foundations, and, based purely on the amount of work we knew was left to do, it seemed achievable.
While the engineers were cautiously optimistic, we needed to know the feature would work well with a large number of concurrent players. So, we simulated it. We created a bunch of automated "players" that would act approximately like real players, turned achievements on, sat back, and watched the proceedings. And, thankfully, this went very well! The servers stood up as we expected.
Still, as time went on, through development and testing, we felt that something was missing. We got the sense that the feature was closer to "good enough" rather than "excellent." Just about every piece of the feature didn't simply want more polish, it yearned for it. We didn't want to cut some of the more creative achievements we had planned because they might not progress smoothly over the remaining rough edges of the system. We didn't want to launch the feature without the previously mentioned "track a favorite achievement in the quest tracker" component! It was such a good idea! And we continued to find bugs that, while not exactly show-stoppers, did make us wince a little inside. We wanted to make sure QA had enough time to test everything! And one of the most important values the MTG Arena team espouses loomed: no crunch.
As the deadline for Magic: The Gathering Foundations approached, we were faced with a go-or-no-go decision. Ultimately, although we agreed we could release the feature with Magic: The Gathering Foundations, we decided to give the feature the love it deserved, which meant releasing the feature later than originally planned. Given the approach of the holiday season and release schedule, we moved the feature to target a later major release: Aetherdrift. Luckily, we built the feature, like all of our features, to be easily moveable to a later release (always a wise thing to do in the software industry), and we performed the necessary incantations to shift it over.
In the following weeks, our confidence that we had made the right decision only grew. We continued to find bugs, edge cases, and awkward user experiences in the feature. Releasing achievements early would have technically worked, but it would not have risen to either our own standards or the standards of our players. The additional time meant we were able to iron out those bugs and add a bunch of much-needed polish. The achievements themselves in the client changed to become more readable and even got those cool flipping animations. We tricked out the achievement notifications to have more flair. The feature didn't just blossom, it bloomed, as the team expected it would.

Achievements Completed!
In the version of achievements that debuted with Aetherdrift, there are a total of 63 "core" achievements and 50 achievements associated with a color of Magic (ten for each color), for a total of 113. Yes, this is slightly less than our initial list of 126, but the team cut a few achievements mid-development because we felt that they may encourage troublesome player behavior or were just unfun to complete, not that we couldn't get them to work! A few others were reworked from their conceptual form, but almost all the achievements we initially planned made it through to the finished feature. We're happy with the number and variety of achievements. There's a wide variety of difficulty, color balance, and playstyle among them.
We also included heaps of rewards for the achievements: new avatars, emotes, card sleeves, and even the new cosmetic, titles—a new way to brag to your opponents that you're one tough cookie.

We're very proud of all the work that went into bringing achievements to you. As with all our work, the team took great effort to do it responsibly, sustainably, and mindfully. These aren't just your common run-of-the-mill checklists; these are hand-crafted, artisanal achievements brought to you with love!
As always, the MTG Arena team will be monitoring community feedback about the feature and sanding off any remaining rough edges as we find them. Don't hesitate to reach out if you have thoughts—we're all ears!
Thanks for reading, and happy hunting!