Friday, November 25, 2011

Repost: Skill-Based Character Progression

I was about to write another post about skill-based character progression after reading about the announced Pathfinder MMO and, of course, discussing Skyrim. I then realized that I have already written everything about it before. Here's a repost.

Assume you are a doctor. Assume you live in capitalism and are rewarded for healing people. If they need healing they come to you on their own, so to make a lot of money all you need to do is make certain that they need healing. …

Now imagine you want to play a healer in a skill-based game. You are rewarded for healing people by skill gains. So to raise your skill, the only thing you need to do is make certain that they need healing. ...
For example by asking them to jump from rooftops or by not properly defending against a monster.

And just like in real life, this problem is a really difficult nut to crack. In one way you want to make certain that people gain skill by using their skill-related abilities. On the other hand, this creates an incentive.

The first problem
In general, all skill-based progression mechanics have this problem. There always is
  • the way the system reacts to the player and
  • the way the player reacts to the system.
And they clash all the time!

If you have a very immersive and common sense way that the system responds to the player, it will often encourage the player to behave in a way that is not immersive or common sense at all; like taking extra damage so that he can train his healing skill. Or searching for mobs that are especially hard to kill, so that he doesn't have to walk so much while training his sword skill. There's no end to examples and most of them are not only an immersion problem, but a real gameplay problem. They encourage players to do unfun and boring things.

The second problem
For a system, a good way to respond to player actions requires three steps
  1. the system needs to know what the player is doing
  2. the system needs to know how well the player performs
  3. the system needs to reward the player accordingly
(1) is manageable; (3) is easy. But (2) is extremely difficult.

You can see the problems outside of skill systems, too. Warhammer Online and Rift have 'public quests'. That means that players meet and fight together against an enemy without any communication being necessary. Afterwards, players are rewarded for their participation. But how?
Did the healer, who seemed afk 50% of the time, save mana to heal the group when necessary; or was he semi-afk? Or was healing not necessary, because other players performed really well? Is it reasonable to penalize the healer, because other players performed well?

Or look at WoW battlegrounds. Players participate in battlegrounds and are rewarded for what the group achieves. This makes sense as long as players actively participate. But once players realize that their influence is small, they start thinking about leeching. That is, they play semi-afk or even completely afk. In instanced content this is especially bad, because not only do the players behave in a way that is probably not even fun for themselves, let alone non-immersive. They also disrupt the fun experience of other players and possibly motivate them to do the same.

And in a skill-based system, how does the system know by how much which skill of the healer to increase? How does the system differentiate between really hard content that required a lot of healing and players that played deliberately bad to allow for a lot of healing?

What kind of solutions are there?

1) You can simply ignore the problem. Yeah – doesn't sound like much of a solution, but you would be surprised how many designers do this! They argue that players are stupid if they game the system, reduce their own fun and therefore shouldn't do it.
I don't consider this a valid argument, because it works with no game. With casual games it doesn't work, because players don't put as much thought into the game. And with hardcore games, like Darkfall, it doesn't work, because these games usually attract the most dedicated min/maxers. It may work with tabletop games; but even there it is a problem.

2) You can employ sophisticated methods to rate how well the player performs at doing what and reward him accordingly without offering ways to be gamed. That is the brute-force approach. And, I fear, it is going to fail with today's computer AI.

3a) You can make players actively help the system, by supplying it with information.
This is what Blizzard did with battlegrounds. Players can flag other players afk. Next, the flagged player needs to perform some actions you would assume only a human can. It is immersion-breaking for sure, but it's not like there were many alternatives.
Applying this to a skill-based system, other players could give you points for how well you performed at what.

3b) You can make the players passively help the system, by supplying it with information.
For example, the system can reward a trader with trade-related skills depending on how challenging a trade route is. To estimate the challenge level it can use statistics, like the ratio of player deaths between location A and B during the last two weeks and the value of the traded goods according to the regional average price.

4) You can make players have a stake in that other players play reasonably and give them a way to penalize them when they don't.
An example would be peer-pressure. For example, by forcing players to first form a group and then join an instanced battleground together, Blizzard tries to use other players to keep you from going afk or fighting half-heartedly.

5) Here, the basic idea is to reward players only for activities that the designer knows cannot be gamed – like successfully fighting an NPC mob or completing a quest. Or being subscribed (Eve Online).
The information as to what skills should be gained can be attained in different ways.

5a) You can assign players roles. For example by using a class system or by using the gear selection, see recent posts. If a player does anything the system considers meaningful, he gets better at the role. This means that e.g. a healer can become better at healing just by participating in a fight, during which he did not heal at all. But, since players have no incentive at all to assume roles that are not needed in a fight, the hope is that this doesn't happen often.
This can often feel a bit boring, as the player has no influence as to how his character improves, except for selecting his role. To make it more fun, these systems often allow the player some latitude in deciding how exactly he wants to get better at his role. This would be the classic experience-based solution.

This is an interesting approach as it solves the problem by turning it upside-down. It allows a potentially unimmersive system reaction to a player action, but provides an incentive to behave in an immersive way. The hope is that by focusing on the incentives, players won't gain benefits by doing something unimmersive, because they have no reason to do so, in the first place. Thus, the system can have a good guess as to what the player does and reward him.

5b) You can give out specific skill gains for tasks that are well known to the game designer and certain to not be gamed. An example would be giving skill increases only for completing specific quests.
Another example is any WoW-like crafting, as the system knows exactly what you do and how well you perform.

5c) You can allow players to choose rewards themselves.
Eve Online does it this way in combination with progress by simply being subscribed. I can't say I am especially fond of this. But, well, it solves the problem, deals with some other issues, and within the right background story it can even be immersive. But it is bad gameplay, in my opinion.
Also, it can be gamed by buying a second account you don't actively play. You use this one only to create your dream-character while playing another account, or not at all. For the developer this kind of 'exploit' has some advantages, obviously.

6) For specific skills you can design around the problem. For example, healing during a fight could be made impossible and irrelevant by declaring that anybody dies within a few hits that he doesn't deflect/block/evade. After combat everybody could heal by using a skill that is not subject to character progression.


  1. A comment on (3b):

    I don't know that this is actually any easier than option (2) from an AI perspective. One example you give is that a route could be considered more challenging if it has a higher rate of player deaths. It could easily be, though, that the most challenging routes actually have very low rates of player death because everyone has figured out hard. The population at large stays away from them, and a few very skilled players do them without much worry.

    That, of course, is just one example, but I think that interpreting statistics from players is just as hard as interpreting performance of players.

  2. I agree, Sthenno.
    The intend of the points 1-6 is to give an overview of all the possible types of solutions. But often none of these solutions is perfect; in these cases the designer has to go for a compromise.

  3. In my opinion there should be both pros and cons to actions, even progression itself should have tradeoffs to it leading to specialization rather a general increase in effectiveness.

    If you have a healer who progresses vertically purely by making more heals and at no cost, then of course that healer will want the group to be weak, weak enough so that heals can be made.

    On the other hand if the healer gets better, not through the improvement of stats, but through the actual experience gained from physically playing under a variety of situations, then that player progression isn't based directly on the shortcomings of the group. That player's progression is based on, in a very real sense, the player's experience.

    In my opinion there should always be tradeoffs to actions because tradeoffs make it so that an action is only appropriate in certain situations and could be damaging in others. For example an action like healing could cost the player health, making it so that healing isn't appropriate to do all the time and in excess, but if it makes sense to do so then it's an option (in this way actions are more about reallocating resources strategically than exploiting game-given ability).

  4. Skill based leveling is based on real life. Take hitting a baseball. In batting practice you hit a ball 'thrown' by a machine or someone that is much closer than the actual mound. You swing a bat with weights on it. Etc Etc.

    As for healing look at doctors. They go work in a ER to get faster experience. They work at inner-city hospitals to get more experience in dealing with gun shots. Etc Etc.

    The military builds their skill with bayonet drills against static dummies, playing war via laser tag Etc Etc.

    I can give you thousands of examples like this. So when you say that it doesn't seem right to do things that are not 'normal' to build up skills I counter that we as humans do this all the time.

  5. I'd like a class / skill tree system where instead of getting skills automatically and then tweaking them with a talent tree you chose the skills / spells you wanted from a tree directly.

    So the warrior tree would have sword, spear, dodge, block, feint, etc and as you levelled a fighter you could make a dodgy dual wielder or a heavy armour 2H parrier or a sword and board fighter or some other combination.

    The rogue tree would have a subset of the warrior tree (same skills) and the rogue tree.

    The cleric would have a subset of the warrior tree plus a general priest spell / skill tree and a perhaps a third spell / skill tree specific to their god.

    It would be easier to balance in some ways because a lot of the skills would be shared.

    Also you could make levelling open-ended. You might have level 50 in your mind as max level in terms of content but if players got one skill per level and there were more skills than 50 the players could simply keep levelling up.

    Even more so if you could multi-class (with some effort) and your initial class was simply a "free" first choice.