Cover image for World of Warcraft design study: PvP flagging (2015)

World of Warcraft design study: PvP flagging (2015)

christopheml profile image Christophe Michel ・8 min read

I wrote this piece in 2015, as I thought the current implementation of wow PvP back then was becoming more and more an annoyance and I really wanted Blizzard to act on it. They came up with their own solution which had the same core ideas, but more solid and more refined, War Mode.

This is slightly edited version of the original post, intended for people with basic knowledge of World of Warcraft gameplay.

Shifting the PvP mode from servers to players.

And make everybody happy in the process. Except server engineers. Maybe.

The problem

In World of Warcraft, world PvP is ruled by a mechanism called the PvP flag. If a character has their flag turned on, other characters with their flag on may attack them. The behavior of the PvP flag depends on the type of server the character resides on: flag turns on automatically in most zones on PvP servers and stays off by default in most zones on PvE servers.

While the server type model has been doing well for years, it’s not working for a growing fraction of the player base: players who are not on the server type that suits them, either players disliking world PvP on a PvP server or players loving world PvP on a PvE server.

There are many reasons for this discrepancy, some of them overlapping.

  • Wrong server choice

Choosing a server to play on is the first choice faced by a new player, and sometimes they get the choice wrong and it may take them a while to realize.

  • Going to a specific server for friends/guild

Sometimes your friends play on a server whose PvP type is not the one you want. While the expansion of cross-realm technology (allowing people from different servers to play together) has mitigated this issue, there is no cross-realm guild feature and things like Mythic raiding are sometimes not cross-realm.

  • Changing expectations

World of Warcraft is a 10 years old game. Over such a long period of time, players change and their expectations may shift. The server choice they made 8 years ago may not be relevant today.

There is currently one tool to deal with this issue: character transfers.

However, character transfers are mostly successful when the player is not part of a guild or another form of established server community. Moving several characters is expensive and moving a full guild is a daunting task.

Moreover, character transfers have the side effect of increasing faction imbalance on PvP servers, with players from the weaker factions leaving in greater numbers for a better server.


PvE-inclined players playing on PvP realms experience world PvP as an annoyance. Due to a lack of involvement in PvP, they are often out-geared and outplayed by more dedicated players and most of their PvP experience outdoors amounts to ganking.

PvP-inclined players playing on PvE realms struggle to find opponents outside of very specific zones (open-world arenas like the Gurubashi Arena or Halaa that were designed to draw players to fight against each other) and there has been a long history of PvP players trying to trick people on PvE servers into enabling their PvP flag to kill them.

Both population experience a frustration that is likely to wear them off and lead them to unsubscribe if character migration is not a realistic solution.

Design goals and constraints

Goal 1 : allow PvE outdoor gameplay on PvP servers

A player on a PvP server should be able to switch to a PvE-style gameplay if they do not want to take part in world PvP.

Goal 2 : allow PvP outdoor gameplay on PvE servers

A player on a PvE server should be able to switch to a PvP-style gameplay if they do not want to take part in world PvP. This means finding actual opponents to interact with.

Constraint 1 : must not break group play

Players must be able to group with guild mates, players they come across while playing, friends and Battle.net friends. The predefined group tool must work the same. Behavior should be consistent with current cross-realm implementation if possible.

Constraint 2 : should be built on existing tech

Since the problem does not affect the whole player base, the solution must not require any important architecture change and should use existing technology.

Constraint 3 : should be easy to understand

The concepts and UI involved in the solution should not confuse the players or trick them into a wrong choice. UI elements specific to the solution should not get in the way of unaffected players.

Constraint 4 : must be easy to transition to

The transition to the solution must involve as few steps as possible.
The solution must provide sensible defaults for unaffected players. Unaffected players should not have to perform any action to resume gameplay after deployment.

Constraint 5 : must be hard to exploit

The solution must not be grounds for new exploits or abusing other players. PvP flagging abuse has been a sensitive issue in the past and the solution should not introduce new exploitable boundaries. If so, consequences must be minimal.

Constraint 6 : must not break server identity

Server identity is defined by how unique the player experience is on a given server, including (and not limited to) outdoor PvP activity, guild activity, local scene (both PvE and PvP), population (size and balance).

Players get attached to their servers and what makes them unique, especially when they have been playing on them for long periods of time. Some local scenes, often driven by successful guilds or PvP teams are very popular.

The solution should not break existing server identities, especially in areas unrelated to outdoor PvP issues, and preserve the meaning of the server name displayed along the player name.

The solution must not break RP gameplay on RP servers.

Proposed solution

Design space

In terms of design space, the solution will likely be a modification of the existing PvP flag behavior. As stated before, this behavior is currently dictated by the server type: it is set at server level.

There are two other places where we can alter that behavior: at the account level or at the character level.

Pushing the change at the server level would mean designing new server types with the desired PvP flag behaviors or redefining existing server types. However it would be difficult to do so without changing the PvP experience for everybody, including people already satisfied with current implementation, which breaks constraint 4.

Doing it at the account level has the drawback of offering a very coarse granularity, especially for players that have characters on multiple servers with mixed types.

The last level is the character level. This is the finest possible granularity for most gameplay changes that are not balance or flavor related (those can happen at class, spec or item level), which means it is likely that players affected by the problem will be able to tweak their game experience as they see fit. The drawback is having to do the change for several characters, however we are bound to make them easy to comply with constraints 3 and 4.

Proposed solution

The proposed solution is to give all characters a "PvP preference".
This is a per-character setting that alters PvP flag behavior.

A player wishing to have a PvE server experience will set his or her character's PvP preference to PvE and a player wishing to have a PvP server experience will set them to PvP.

A character's PvP preference overrides the server type when it comes to PvP flag behavior.

(The "PvP preference" term has been chosen to avoid confusion with the PvP flag.)

Implementation core

The immediate consequences of the change is that servers will have PvE and PvP characters. However, this breaks the premise of those servers, where what happens in case of hostile actions is clearly defined. It leads to awkward situations in group play (breaks constraint 1) and hurts server identity on PvP servers with characters that can't be attacked on contested zones (breaks constraint 6).

A few years ago, it would have sounded like an impossible challenge to overcome, but World of Warcraft server technology has improved a lot and gave us new tools.

One of them is the cross-realm technology, that moves players from a server to another as groups form and disband. The best example of this is the "Looking for group" tool.

If we want to keep the outdoors on PvP servers full of PvP-inclined players (the same goes for PvE), we need a way to move away characters with a conflicting PvP preference to the right kind of server. But we want this to be temporary. Doesn't it sound like cross-realm technology ? It certainly does.

If a character has a PvP preference that's different from its server type, it gets transported automatically to an adequate server when outdoors, using the same cross-realm technology already in use for the premade group tool.

This solution satisfies several constraints totally or partially :

  • constraint 1 because the cross-realm technology is already working very well for group play.
  • constraint 2 because it's existing technology.
  • constraint 6 because it's not dramatically changing what players will see outdoors (no "PvP flag off" weirdness on PvP servers)

Implementation details


By default, characters have their PvP preference set to the server type they're on. This way, players that don't feel concerned by the change have nothing to do and won't notice any difference in behavior. This makes the transition painless for the majority of players.

This implementation detail fulfills constraint 4.

Group play

When playing in a group, the PvP preference of the group is set to the PvP preference of the character that created the group. Joining or leaving a group that would make a character change server will display the same warning that already exists for regular cross-realm groups.

If a player still has a PvP flag on and gets invited to a PvE preference group, the player won't change server until out of combat and its PvP flag wears off. This prevents abuse in outdoor PvP situations by joining a group with a PvE preference to get immunity (as per constraint 5).

Changing PvP preference on a character

The change is done at the character selection screen, with a small UI modification (button, menu) like the one that already exists for character boosts. This is also the place of a quick explanation of the change, the first time a users logs in after deployment (as per constraint 3).

In order to prevent abuse in the form of frequent preferences changes, a cooldown can be set.

Server affinity

In order to keep some consistency in the outdoor experience, all players from a given realm that get transported to another server due to PvP preference should land on the same server (through a « destination table » that links a PvE server to a PvP server and vice versa).

This helps consolidating server identity, with potential familiar faces, as per constraint 6.


This document introduces a change in the way World of Warcraft handles the PvP flag.

This change :

  1. introduces a character-level PvP flag setting : the PvP preference
  2. describes how existing cross-realm technology dynamically moves characters to a server that fits their PvP preference
  3. describes how to transition to the new system as smoothly as possible while avoiding exploits

Blizzard's solution, War Mode, ended up to be a character-centric solution too, with less constraints, no automatic crossrealm and rewards for playing with War Mode active.

Posted on by:

christopheml profile

Christophe Michel


Senior Java developer, although "Java gardener" is probably a more accurate description of my job. I do mostly backend, API stuff. I love all sorts of design works, especially UX and game design.


markdown guide