I’m making a Pokémon-like game called Beasts of Iatu. The problem I’m having is creating a chart for the attack and defense changes between types. There are fourteen types in Beasts of Iatu, though only twelve are relevant here (The Time and Soul types are neutral, taking no extra damage but dealing no extra damage as well). The twelve standard types

  • Fire
  • Earth
  • Water
  • Air
  • Void
  • Light
  • Metal
  • Plants
  • Ice
  • Sound
  • Lightning
  • Dust

Each type should deal heightened damage to two others, and deal lessened damage to two others. EDIT: Upon reflection, I realized there were too many types. I have removed Darkness, Gravity, and Cloud as a result.

  • \$\begingroup\$ Are you looking for a solution how to match those types to each other so that it all makes sense (ie. intuitive rules) or a method to make sure the types are alike so that each of them deals and takes damage equally from other types (ie. ensuring that gameplay is balanced and you don't accidentally make one type stronger or weaker than others)? \$\endgroup\$ Aug 31 at 18:16
  • \$\begingroup\$ @JaniMiettinen I want the element comparisons to make sense. Since each type is strong against two and weak against two, I feel that the gameplay should be balanced, at least in that field. The rest will have to do with monster stats and abilities. \$\endgroup\$
    – Jobah619
    Aug 31 at 18:18
  • \$\begingroup\$ One more question: do you want the types function so that if A deals heightened damage to B, then B deals lessened damage to A? Or, should this be avoided? Or, can you mix them so that some type pairs work like that and others don't? Or, should the interactions form longer chains: A > B > C > D > A (where > means the type on the left deals heightened damage to type on the right)? (I hope this question makes sense) \$\endgroup\$ Aug 31 at 18:30
  • \$\begingroup\$ So in short, you're asking us how to make the whole chart in your stead. That's a lot, just choosing the first one has 14+13+12+11=50 combinations ^^". Can you cut the task into smaller, more manageable portions (e.g.: how can I explain that void beats sound?)? Understand this site is not here to write your whole game design bible for you :). \$\endgroup\$
    – Tortliena
    Aug 31 at 18:59
  • \$\begingroup\$ Also, do you care about mirrored matchups? For example, Light seems like it should do bonus damage to Darkness, but I could see an argument for Darkness also doing bonus damage to light. Also, could you give a description of each of the elements and how they're reflected in the beasts? I'm not sure how I'd make Void meaningfully distinct from Darkness, or Cloud distinct from Dust (or from Air). \$\endgroup\$
    – Aos Sidhe
    Aug 31 at 19:07

3 Answers 3


A cute trick I like to use to investigate this kind of type advantage system to simulate how players might use those types when competing with each other.

Even if your game is purely PvE or doesn't have this type of random matchmaking, it can be useful to imagine it did - what would all my NPC trainers and gym leaders be choosing, if they had free will and were actually trying to win against each other?

If, given a variety of opponents, you're statistically less likely to win if you field a Water type, then players would tend to avoid that type, and as a developer you get less gameplay bang-for-buck out of the resources you've invested into making cool Water-type monsters. So imagining this competitive landscape can help us spot such issues, even if we haven't yet planned out the final parties of all the opponents in the game.

Here's what such a model could look like, using just the first five of your elements to keep things simple for a demo:

Spreadsheet with graph of type popularity over time

The basic idea is this: at any moment, the population of competing players has certain preferences for one type vs another. Maybe Fire is hot right now, and folks think Air is underpowered, so you don't see many players fielding Air monsters. That describes the current state of the game's "meta" - a probability distribution over the possible strategies you're likely to see from an opponent in a random match.

Based on that distribution, you can calculate how advantageous it would be to field a monster of each type. If not a lot of players are playing Air, then you're less likely to get your 2x damage bonus if you use Void, so Void becomes less likely to have an advantage in that mix.

Then we iterate. Based on which types were advantageous vs the meta in the previous time step, we simulate some portion of the players (controlled by the "Mobility" parameter) changing their strategies - moving away from types at a disadvantage in the current meta, and toward types that currently have an advantage. This gives us a new meta, with slightly different preferences for types, and we iterate again.

That's what this spreadsheet is doing. From an initially random set of preferences (maybe day 1 players choose monsters purely based on looks), each row simulates one state of the meta and how attractive each type is in that state, then the next row is the state after a portion of the players change their strategies.

You can see that with the perfectly symmetrical pattern of advantages and disadvantages, from any random starting state, the lines converge to approximately equal ratios (what would be a "mixed strategy Nash equilibrium"). In this simulation, there's still some oscillation around the true equilibrium point of 20% chance to encounter each type, because our fixed mobility percentage means our simulated players tend to over-correct for imbalances when they're small. But in practice, players have imperfect information and their strategic responses lag, so it's not unusual to find most players in "donkey space" like this. 😉

So far, this seems like a lot of math to just graph what you already knew: if everything has 2 advantages, things balance out!

Well, almost. Here's another scheme where each type is strong against two other types, but I broke the symmetry so they no longer form a neat loop of mutual counters. I've left Earth with no strong counter at all:

Broken Symmetry - Earth Dominates

Here, the lack of a cyclic counter allows Earth to climb up to nearly 80% dominance, with barely anyone daring to field a Water or Air monster (who would be weak to Earth).

So it's not just the number of strengths/weaknesses that matter, but also how they're arranged.

Symmetric arrangements (like Philipp's "place them in a circle" strategy) are consistently stable. But by playing with this kind of model you can find reasonably-stable arrangements even with non-symmetrical patterns of advantage.

This can help if you want to break the symmetry for the sake of gameplay variety and to create a more complex problem space for players to learn and master (e.g. Pokémon's type chart is famously chaotic).

But it can also help you plan for the case where asymmetries creep in via your monster design or other second-order effects. Maybe it's true that the type advantages are balanced assuming monsters within those types are otherwise interchangeable, but if Earth monsters tend to have more HP or higher Defense stats in addition to their type advantage, then the net effect might be more like...

Lopsided advantage table and uneven equilibrium

Here I lowered all the numbers in the Attacks vs Earth Defender column by 10% to simulate this extra edge from toughness in the monster design. You can see Earth type does now get more popular because it's statistically better... but it doesn't completely dominate. Less than 30% of monsters fielded are Earth in the equilibrium - higher than 20% perfect balance, but not so lopsided as to sap all variety from the game.

This is the effect of the "Perfect Imbalance" Philipp described. Because Earth still has strong counters - monsters that do better when players get too greedy in fielding Earth monsters - even a fairly substantial "balancing error" in the monster design doesn't cause the meta to collapse into one type completely dominating or completely not worth playing.

Checking for robustness against deviations like this is useful, because in practice it's actually quite difficult to get two different monsters that have exactly equal odds of winning, without balancing them to bland sameness. So even those white "1x / no advantage" boxes will usually end up being something more like 1.05 or 0.8, just due to emergent interactions of your combat mechanics. Watch out for this with your Time and Soul types - relying on exactly equal balance without counters to catch emergent biases is fragile!

It's also interesting to see that one of Earth's counters, Air, stays more popular than the other, Water, because Water is weak to Air in this scheme. So this sim can be useful for seeing what second-order effects and emergent dynamics come out of different degrees of imbalance.


First of all, are you sure you need that many different types? Just because they are thematically appropriate does not necessarily mean they are useful from a game design perspective. When you are already struggling with how to balance them, then it might be easier to start out with fewer types (probably by merging some of them into one), prototype the game, look for design problems that become apparent during playtesting, and introduce additional types if those might help to fix those design problems.

The first step of the design process should be to start simple and then add additional complexity. In case of a damage-type mechanic like here, that would be a standard rock-paper-scissors setup where each type has as many other types it counters as there are types it is countered by. The simplest way to solve this is by arranging all the types in a circle. Every types counters those types to its left and is countered by the types to its right. You might have to experiment a bit with the order to make sure that all those weaknesses and vulnerabilities make thematic sense, and if you can't then that probably means that you might have to rethink your selection of types.

Assuming all other properties of the monsters being balanced against each other as well, this gives you a "perfect balance". No types is clearly dominant, and who wins depends on the matchup.

But while a perfect balance setup can be a simple and easy way to achieve balanced gameplay, it can also get a bit boring. There is no real strategy when all choices are equally viable by design. To spice things up, you can go for a design principle called "perfect imbalance". Perfect imbalance means that some choices are clearly superior to others, but are kept in line by having explicit counters. Those counters are otherwise inferior, but excel at countering the superior choices. For example, you could have a "dark" character who is ridiculously overpowered against everything except "light". And then counter that one with a "light" character who is overpowered against "dark" but underpowered against everything else.


Coming up with what beats what is not the kind of thing we do here. It is your game, your design, your rules.

With that said, we can still help you tackle the problem.

I believe the easier way to approach this is to use loops.

In the minimum case we have rock-paper-scissors, where each "element" beats the next. While the loops of three elements are the most common (for example cavalry-infantry-archery, water-plant-fire), bigger loops are also used.

Since you want each element to be weak to other two, and strong to other two, it means you want each element to belong to two loops.

Therefore, the minimum number of loops you need to create is: 2. In which case both loops use all the elements. Yet, you could create more loops, each one of them being smaller.

Thus, methodology:

Start by picking some element, come up with what element beats it, and then come up with some element that beats that one until you make a loop (you made it back to the first element).

Repeat that with the elements you didn't use, until there are no elements left.

Note that there is a failure mode here: you might end up leaving some element left alone and thus unable to make a loop with it, in which case you will have to go back and edit some of the loops you created to include it. A similar case is when you have two elements left, which I'm not sure if it is desirable, but that is for you to decide.

At this point every element belongs to a loop (each is weak against one other element, and strong against one other element). So do the process again but without repeating what you picked, that way element will belong to two loops (each will be weak against two other element, and strong against two other element).

Et voilà. You can, of course, review and iterate on top of it if you want to.

Of course, you might find some advantage hard to explain. Which, although it is more of a writing problem than a design problem... Conveying the design is important!

At some point you got to explain or otherwise allow the player to discover these advantages as part of the game.

I'm sure you can come up with story justifications. However what I'm getting to is this: if you can, be open to the possibility that changing some elements might better for the story - or better to convey their advantages as part of the story. You never know when ideas will come, and sometimes the constraints of a system inform creativity.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .