This is a cross post from here: http://guilelessmonk.tumblr.com/
There are basically two kinds of counters in games, natural and artificial. Natural counters are things that naturally remove the advantages of another strategy. A good example of this is in the game League of Legends there is a character Ashe who is very good against another charter called Udyr.
She is good against him because she attacks from a fair range and has an ability that whomever she is hitting is slowed a considerable amount. Udyr is a melee champ that needs to run up to hit but does not have abilities to jump on her and get in melee range of her and so she can just slow him and kite him around all day.
Artificial Counters are things in games that counter things because the game told us that is how it works and you are just going to have to remember that. A good example of this system in action is Pokemon. Dragon type Pokemon are weak to Dragon and Ice type attacks, and this is just how it is.
They do a good job of piggybacking the weaknesses and strengths of types onto common understanding of these things in real life (Fire is weak to Water) but no amount of logic will help you remember how effective Steel type attacks are on Water Pokemon if you just don’t remember.
A game that uses both of these is Megaman. In Megaman X Spark Mandrill is weak to Megaman’s Shotgun Ice attack, it freezes him in place and you can just take pot shots at him until he is dead. It doesn’t have this effect on anything else, and there is no reason for you to really think of it, but it is very effective nonetheless(artificial counter).
Sting Chameleon is weak to Boomerang Cutter, and it is good against him first because it just does a bunch of damage to him (artificial counter) but also because the attack moves up and you can hit him while he is on the top half of the screen which you can’t really get at with other attacks(natural counter).
League of Legends currently 100+ champions (kits of abilities) but League of Legends can add new champs without a significant toll on the burden of knowledge. When a new champ comes out you just have to learn what they can do and then what he is good/bad against can be naturally and easily figured out from there if you ever need to fight them (5 things: 3 abilities, 1 passive, and 1 ult).
The next champ they add will have the same burden of knowledge. Pokemon has 17 types (not counting ‘???’) and if they added a new type you would have to memorize the offensive and defense effectiveness of it in terms of the 17 old types types and itself (35 new things), and the next type added would have even more to remember (37 new things).
Games have to balance depth of strategy with the burden of knowledge (they are not opposite things like positive and negative but burden of knowledge is a cost of complexity and complexity is the most common way to add strategies to a game). If a game has only 1 strategy it is boring, on the other hand if understanding the basics of how the pieces interact takes 50 years (and that is just understanding how they interact and not strategy on how to move them) then no one is going to play that game because there is a good chance you will be dead before you get a handle on how to take your turn.
Systems that use artificial counters need to group their elements (like into types) as to not incur this explosion in the burden of knowledge which effectively keeps the number of elements lower then a system that uses natural counters. Games that use a natural counter mechanism can add more mechanisms into a game then games that use artificial counters without feelings overwhelmingly complexity. The downside is making natural counters is harder to do.