Towards Pokémon Emulation
This is an ugly ugly draft, posting for WFS’ reference. I’ll clean this up later, in a separate post, just to present a more straightforward ruleset rather than whatever this is.
Simplifying In-Game Equations
The base equation for damage is:
Damage = (2/5 × Level + 2) × (Attack / Defense) × (Power / 50) + 2
We can simplify this equation in two steps. First, assume that the ratio between the attacker’s Attack value and the target’s Defense value is one. Then, assume that the power of a move is on average 50. This reduces the equation to:
Damage = 2/5 × Level + 4
The base equation for Hit Points is:
HP = ((2 × Species + Individual) × Level) / 100 + 10 + Level
We can simplify this equation by assuming an average Species value of 50, and an average Individual value of 15 [1]. This reduces the equation for Hit Points to:
HP = 130/100 × Level + 10 + Level
The fraction 130/100 only adds an additional 3 HP for every 10 levels [2], so we can just pretend it’s a one. This reduces the equation even further:
HP = 10 + Level × 2
Our two equations are now quite simple, and can be modified more easily:
HP = 10 + Level × 2
Damage = 4 + Level × 2/5
Making Numbers Go Down
Let’s map these to Excel. I only have space to show levels 1-80, rather than the full 100.
Note the percent-HP-lost column, which is the percentage of HP lost due to being attacked by a monster of equal ability. As level approaches infinity, the percentage approaches 20%; as level approaches zero, the percentage approaches 40%. Of course, at a range of 1-100, we actually have a maximum of 33% at level 1 and a minimum of 20% at level 100. On average over that range, we have 22%, and we start getting values close to that average around level 20. What this means is that, on average, a monster can take 4 hits from an equally powerful monster before being defeated, though we have variation from 3-5 over the whole range.
Note also that each level gives +2 to damage and to hit points. If you replaced 2 × Level with just Level in both equations, each level becomes half as valuable. This keeps numbers lower over the same range of 1-100, while preserving the relative potency of Hit Points and attacks.
HP = 10 + Level
Damage = 4 + Level / 5
You can even divide the constants for both equations, +4 and +10 respectively, to be less redundant. The math remains mostly the same, since we are approaching the same limits towards zero and infinity, and the constants are at the same ratio as before (4:10 = 2:5).
HP = 5 + Level
Damage = 2 + Level / 5
The biggest obstacle would probably have to be keeping track of levels from 1-100. The convenient thing is that the variable factor of damage is at one fifth that of Hit Points. So, if we multiply both by 5, we keep the same ratio. Since each level then becomes one-fifth as valuable, it’s a good excuse to reduce our range of possible levels from 1-100 to 1-20 (or even to 1-10, since we had already made levels half as valuable earlier). The math is all the same relatively; these are only justifications for using smaller numbers over smaller ranges of our choosing. See how level 16 here is equivalent to level 80 in the previous table. HP = 5 + Level × 5
Damage = 2 + Level
If you don’t believe me, we can keep the same constants and slopes as before and do the same thing. Level 16 here is equivalent to level 80 in the original table.
HP = 10 + Level × 10
Damage = 4 + Level × 2
This is where we’re really getting into the useful bits. Compare the last two equations for Hit Points to what you would expect from a D&D game where characters usually have 1 hit die per level. We can refer to this an HP factor, i.e. in D&D you have HP = Level × Factor. In Pokémon, on the other hand, you have HP = (Level + 1) × Factor. The equivalent would be every D&D character getting an extra hit die.
Into Something Useful
I am going to use the second-to-last set of formulas as a basis:
HP = 5 + Level × 5
Damage = 2 + Level
Although it might be disappointing that the range of levels is from 1-20 instead of 1-100, it keeps things a lot simpler. There’s no division. Only one non-addition operation is involved, and really all you’re doing is multiplying level + 1 times some other factor. Numbers stay small.
The first matter is setting a factor for HP, where we know certainly that HP = (Level + 1) × Factor. Letting each factor equal just 5 is fine, and it's 'accurate', but it might not feel as proper on a tabletop when we're so used to random factors for HP. Why not let it be d8? Then, at level 1, you'd start with 2d8 HP. We could also let it be d6, or just keep it a constant 5. That works.
We could also have the constant modifier be the ability score, and the level multiplier be the die roll; e.g., a level 4 character with a health score of 7 has 4d6 + 7 hit points. A typical level 1 character would probably have 1d6 + 6 hit points, an average of 10.
Moves
This is the complicated part.
Moves can have a base damage and an accuracy check number, which you must roll under or equal to successfully land an attack. Simple moves might have an accuracy of 20, and tend to give base damage from 1 to 10 (divide video game value by 10). Tackle is 20 accuracy and 4 base damage. No type. That's it. Maybe rolling equal to your accuracy lets you double damage.
Anything more complicated than that will either have to reduce accuracy or cost something like PP. You could have PP at the same rate as HP, with moves besides the most simplest costing 1-5 PP. I think it would make sense for 1 PP to be worth 2 points of accuracy, such that a balanced move can be created by summing up damage + PP + accuracy / 2 + misc. effects = 12.
Consider tackle: 4 damage + 0 PP + (20 accuracy / 2) = 12.
Ember, Vine Whip, and Water Gun all deal 4 damage and have total accuracy, i.e. 20. If we consider them having non-normal types as a boon, they might each cost 1 PP. Ember certainly costs something, since it has a 1/10 chance of causing the burn effect.
Confuse Ray has an accuracy of 20 and deals no damage. Maybe it costs 5 PP.
Hypnosis has an accuracy of 12 and deals no damage. Maybe it costs 1 PP?
Writing out a whole bunch of moves is beside the point of this post, which is just to show it's possible.
Ability Scores & Bonuses
This can't be as bad as all that.
Pokémon uses a scale convenient to itself, scoring different abilities according to species from 0-255 and individuals from 0-31 (i.e. the signed range of 8 bits or 5 bits, respectively). I've noticed, though, that top-level Pokémon tend to just have high scores around 100, and low-level Pokémon around 50.
The effect is we could probably get away with a simple 3-18 range for base ability scores. Individual variation could be handled by modifying base scores from -2 to +2, for an expanded range from 1 to 20. Then assign bonuses for damage the way one would in 5E (in addition to their level). You could, give or take, divide existing base stats by 5.
For physical attacks, add the attacker's Physical Attack bonus and subtract the defender's Physical Defense bonus. For special attacks, use special stats. When doing critical damage or doing multiple hits per move, just subtract the defender's Defense bonus after total damage has been summed up.
[1] It is worth acknowledging that other stats like Attack and Defense are calculated in a similar way to HP, but we can just abstract those and act like they’re given rather than calculated.
[2] The maximum possible value of the fraction is 604/100, which is an additional 6 HP each level. Nothing to scoff at, but nothing that can’t be accounted for in simpler ways.
[3] Even though the variable factors are at a ratio of 1:5 (20%), the constant factors ensure variation at up to twice that (since they are at the same ratio as the variable factors).
Havce you seen what this other OSR guy did with Pokemon and Basic D&D/Labryinth Lords?
ReplyDeleteI'm not sure if he used a true formual, rather than eyeballing it, but it's nice that two people had the same idea. Here he converted all the Pokemon up to X&Y to OSR.
https://lurkerablog.wordpress.com/2014/03/25/pokemon-conversion-notes-nothing-to-see-here-move-along/
i have not seen this before, thank you for sharing! :)
Deletelol you said "pp"
ReplyDelete