Tell me more ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

This is a Pokémon simulator where you build a team of 6 pokémon and battle with someone. Unfortunately, some Pokémon are stronger than others and only a few of the hundredth species are practical. I'm trying to create a metagame where all of them are competitive. For this, I am tagging a Pokémon with a parameter (level) that changes it's strength and scales up/down depending on the it's performance. That is, if the system detects Mewtwo is overperforming, it should decrease it's level tag until Mewtwo is balanced.

The question is: how can I identify if a Pokémon is causing an unbalance? The data I have is the historic of the battles (player 1, player 2, pokémon list, winner). The most basic solution I can think of is victory/loss counting.

share|improve this question

2 Answers

up vote 3 down vote accepted

I've played Pokemon competitively in the past, and if your program is very much so inspired by Pokemon, an automatic system will be difficult.

With Pokemon, there are a few things to consider. Damage, Status Effects, Resistance, and just honest player skill. Testing for damage will work fine for Pokemon like Gallade, but not at all for Pokemon like Butterfree. Butterfree doesn't do alot of damage, but the status effects still make it a top choice.

I think the best way to implement a system would be to first rank your players. As Byte56 suggested, an Elo system will work. Then from your top 10% players (10% is just an arbitrary number), look at the frequency of Pokemon used. If you see that Mewtwo is being used in 90% of your top 10% player, you can guess there is a balance issue. From there I would do a break down of which moves tend to be most popular. In competitive Video Game Pokemon, there are tendencies for the top players to use specific builds. If you see that 90% your 10% top players use Mewtwo, and 80% of them use Psychic, then you can assume that Psychic is overpowered. So an automatic damage reduction might help balance.

But then there is the caveat of Psychic can also cause confusion in 10% of it's uses, so maybe a lowering of Psychic's confusion chance might be in order. This will just depend entirely on how complicated you want to make your game, because honestly, Pokemon is a seriously deep game.

With your level slider, I believe your system should work with rating the players, but always remember the case of the Lvl 1 Rattata that defeated the Lvl 100 Dragonite.

;tldr - Rank your players. Look at the top performers for trends. Adjust values accordingly.

share|improve this answer

You could implement something similar to the Elo rating system, which is used to calculate the relative skill levels of different players. Applying this to the pokémon instead of the players, would allow you to see how they compare to the pokémon to each other and adjust accordingly.

I don't have any idea how pokémon works, but you mention that the battles have a list so I guess there are multiple pokémon per battle? Without more information on how much time each of them played or some metric that tells you their involvement in the battle I guess you would just have to divide the wins/losses evenly among the pokémon in the list when calculating their score.

Do keep in mind that balancing is notoriously difficult. And you'll still need to find some way to factor the player's skills out of the equation.

share|improve this answer
Factoring player's skills out will be very difficult. But at least there is already a rating system that ranks players and it works formidably, so I have an index to begin with. A player can use up to 6 Pokémon in a battle; forgot to mention. – Dokkat Jun 28 '12 at 0:04

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.