Engineer’s Workshop: Developing for Mobile and PC

As Shadowlands continues further into Beta, we wanted to provide an insider’s look at the development process of creating some of the great features that you’ll see in the expansion. In this Engineer’s Workshop, we’re focusing on developing a feature simultaneously for mobile and PC platforms with the new Adventures feature, our new offline progression system for Shadowlands. Adventures is a spiritual successor to Missions & Followers systems from previous expansions that allows you to send parties comprised of five adventurers to fight enemy encounters in an auto-battler format.

It Begins With System Design

Every feature begins in system design where our designers take a set of goals and hammer out the framework to create what’s known as a feature pitch, which then becomes a playable feature. For Adventures, we wanted to retain the things that worked well from previous Missions & Followers systems and iterate on the other aspects. Specifically, we liked that the system presented frequent rewards and goals to the player, allowed for progression while the player was logged out, and providing another avenue for storytelling while emphasizing the fantasy of the game. The major aspect we wanted to iterate on was to make the gameplay more engaging and the determination of mission success more fluid. Previous iterations of the Missions & Followers system were solved somewhat trivially, especially with the use of AddOns. On the other hand, Adventures is a system within a game, not a game on its own. New players should be able to jump in and be successful without having to read guides, but there should be enough depth to reward those that invest more time into it. In addition, we don’t want to create a system intended for offline progression that takes a significant piece of a player’s time while at their PC.

In this stage of development, the designers’ best friends are spreadsheets. Spreadsheets allow designers to bridge the gap between ideas and data. They can get a rough picture of whether or not an idea resonates well, apply different data curves for things like experience and attack power, and allow rapid iteration when it’s still inexpensive to try wild things.

In the end, we landed on an “auto-battler lite” model utilizing turn-based combat that is automatically resolved. Players place five adventurers on the board, strategizing ideal placement based on each adventurer’s abilities. As long as all enemies are defeated, you win and reap your rewards. However, through careful adventurer selection and placement, efficient players can minimize the amount of damage adventurers take during combat so that they can be sent on the next adventure without waiting as long to recover.

Mobile Challenges and Considerations

Adventures is a feature that is a natural fit for the WoW Companion App and developing the feature simultaneously for both mobile and PC platforms allowed a close cooperative working environment between systems and user interface (UI) design, as well as providing a singular UI vision for both platforms. One of our UI design pillars for the Adventures feature was to strive for parity between PC and mobile as closely as possible. However, the Companion App is a companion to the PC experience, so parity shouldn’t be enforced at the expense of the main game.

Mobile Graybox

Mobile Graybox

PC Graybox

PC Graybox

While PC faces complex challenges like rendering the 3D world on a wide variety of hardware and balancing live player concurrency, developing for mobile has a different problem set to work through.  Phones can be a wide variety of aspect ratios and sizes and the UI and user experience (UX) need to account for this. The app’s data footprint must be minimized so that we can support as many device models as possible. The biggest hurdle to overcome when developing features for the mobile platform is that the game was not originally built for mobile. If you think back to 2004 when World of Warcraft was originally released, the phone of choice was the Motorola Razr and the mobile game of choice was Snake. Needless to say, the frameworks being developed at the time didn’t have mobile compatibility in mind. Even the simplest features can require large amounts of PC framework to be implemented on the mobile platform first.

Engineering Design

Luckily for Adventures, much of the framework from previous iterations of Missions & Followers could be reused; at its core, players are picking followers from a collection and assigning them to a mission.  We chose to implement both mobile and PC platforms simultaneously rather than serially due to the tightly coupled nature of the design.  Developing both platforms from the ground up provided another boon in that we could write server messages to explicitly support both platforms. Until we could get the major UI elements in game, we used some prototyping software to get the adventures from a spreadsheet to a more interactive and iterative representation in game.

GUI Client
Client GUI

Look and Feel

One of the larger challenges to solve on both platforms involved the special effects (FX) used during combat replays. We discovered early on that the FX were critical to making the combat read clearly and pace well while providing a more immersive, visceral feel to the experience. However, this involved breaking new grounds in UI; both platforms had a piece of the pie. Although the PC platform had a robust library of existing FX, the existing tech to put these FX into UI frames was not quite sophisticated enough for combat animation. The mobile platform had a good animation framework, but the FX were not optimized for mobile use. In the end, both platforms decided to invest in developing their missing piece knowing that the framework would be reused in many features to come.

For the mobile platform, we already knew that app size was going to be a concern. Adding FX for a full suite of adventurers and encounters on top of our existing content was going to be a memory challenge.  On top of the visual portion of the FX, we also went from having just a handful of sounds app-wide to a set of sounds for each spell effect.  We were able to consult with both our WoW FX team as well as the Hearthstone FX team to see what lessons we could learn and incorporate into our workflow. We settled on an approach that chose the spell effect to play based on spell school and adventurer type and introduced some additional framework that we’ll discuss in another article to help break apart data.


Once an implementation is far enough along, it’s important to do playtesting sessions early and often.  Your game may be technical perfection, but if players don’t find it fun, it’s missing its mark. The current work from home situation provided an additional hurdle to overcome for the mobile team:  the traditional playtest is to put a build on several mobile devices and playtest together in a room. In the work from home world, we needed a way to reliably and securely distribute mobile builds to personal devices, and we only had a couple of weeks to do it before work-from-home began in earnest.  Due to the quick collaboration of multiple teams within Blizzard, we were able to get enough of a distribution framework in place to support mobile playtesting. This is another piece of framework that has already paid dividends in not only being able to coordinate playtests, but also in distributing app builds to other WoW team members and providing avenues for future features.

Looking Ahead

We’re not done developing the feature by any means and will continue to iterate and polish Adventures as we transition into the Shadowlands Beta and beyond. Hopefully, this peek behind the curtains provides some insight into the process, challenges, and solutions in developing features like Adventures for World of Warcraft. As critical as playtesting is, our testing forces are nothing compared to the number of players in our playerbase; if you have feedback for us that can help improve the Adventures experience, leave it on the Shadowlands beta forums. Thanks for joining us and see you in Shadowlands!