“It’s SUPER EFFECTIVE!” - The Pokémon Damage Formula, Attack Mechanics & More Explained [All Gens]

Поделиться
HTML-код
  • Опубликовано: 1 июн 2024
  • UPDATE about the affection-based mechanics, read the pinned comment!
    In this video, I am going to cover everything you need to know about the damage formula, the attack and damage mechanics in all the Pokémon games. I will be going into all the math and computation involved in determining why your Pokémon hit hard, or why they don’t. Including hit and miss mechanics, as well as critical hit mechanics.
    00:00 Introduction
    00:58 Basics
    05:02 Note: Rounding
    06:08 Note: Modifiers and Ratios
    08:17 Hit / Miss mechanics
    12:18 Damage mechanics overview
    12:30 Damage: Base Power
    18:30 Damage: Attack & Defense
    19:13 Damage: The Damage Formula
    22:01 Damage: Final Modifiers
    22:53 Critical mechanics
    26:22 Special cases
    28:50 Conclusion
    I realize that many of the detailed charts disappear too quickly to catch them in casual viewing, which isn’t the intent. If you are interested in any particular part, I encourage you to pause at any moment or refer to the even more detailed sources. I also strongly recommend watching this video at a very high resolution because some of the charts are necessarily a bit small.
    The only way of getting damaged that I didn’t mention in this video is Status Effect Damage and other types of round-wise damage. There will be a follow-up video when I get around to it, with cards in the video and a link here in the description.
    Remarks:
    At 06:50, I implied that the modifier application with integer multiply and divide is due to hardware limitations, which isn’t exactly true. Starting with Game Boy Advance hardware, Pokémon games could (and do) utilize floating-point hardware, i.e. fast decimal arithmetic. Why exactly they kept the old method of multiplying and base 2 division is unknown. Float operations are equally as fast as integer operations in this hardware.
    Flooring rounding is an automatic side effect of integer division with remainder, as done in Red and Blue, for example. Only pokeRounding and normalRounding are a deliberate developer choice.
    I referred to all random events inside a computer being pseudo-random, however, this is not always the case. For purposes that rely on the unpredictability of some random numbers, computers will use physical events such as heat or voltage fluctuations which are truly random to initialize or “enhance” the PRNG processes. Also, some PRNG routines (like Mersenne Twister) are harder to predict than others (like linear congruential, which is what Pokémon uses).
    Sources:
    pokered: Full disassembly of Pokémon red and blue source code. www.github.com/pret/pokered Specifically: Damage calculation routine disassembly github.com/pret/pokered/blob/...
    DaWoblefet’s Damage Dissertation - A Complete Guide to the Damage Formula.
    www.trainertower.com/dawoblef... This is the main source used for research and contains all the details. It was written for Gen 7 and contains some 3DS-hardware-specific information, but nothing apart from that seems to have changed since then.
    A multitude of articles on the (ridiculously awesome) Bulbapedia Pokémon fan wiki. bulbapedia.bulbagarden.net/
    The critical hit research done by 卡璞波波: / 953477067495976960 , also this pastebin decompilation: pastebin.com/K0ZZHF35
    The lookup tables for Natural Gift and Fling can be found on their articles: bulbapedia.bulbagarden.net/wi...) and bulbapedia.bulbagarden.net/wi...)
    Pokémon USUM - How to Let Your Puppy Take Half a Million Damage and LIVE! • Pokémon USUM - How to ... by SadisticMystic.
    A shout out goes to the less-in-depth videos that have already covered the basic parts of the damage formula.
    #pokemon #damageformula #gameexplained
  • НаукаНаука

Комментарии • 20

  • @kleinesfilmroellchen
    @kleinesfilmroellchen  3 года назад +4

    UPDATE: Several mechanics dependent on affection were just researched by SadisticMystic and added to the Bulbapedia page: bulbapedia.bulbagarden.net/w/index.php?title=Affection . The relevant new parts are as follows:
    At affection level 3 and higher, a Pokémon may endure attacks that could otherwise make it faint and survive with 1 HP (including confusion damage). This effect initially has a 10% chance to happen per hit, and can potentially happen for multiple hits. This chance increases to 15% at level 4, 20% with an affection stat of at least 200 (roughly halfway between level 4 and level 5), and finally 25% at level 5.
    At affection level 4 and higher, a Pokémon can sometimes:
    Avoid attacks, by subtracting 10% from their accuracy. Moves that normally have 100% accuracy are still subject to this reduction, but moves that cannot miss (such as Swift) are not.
    Shake off status conditions at the end of the turn, 20% of the time.
    I'd really love to have put that into the video, but oh well. Thanks to well-known mechanic researcher SadisticMystic for looking into this!

  • @SenialHobo
    @SenialHobo Год назад +4

    It's surprising how few videos actually explore this and you by far went into the most detail, very helpful for understanding some of their decisions for game development man. Great work!
    Now to listen to your music, didn't expect a channel with both those kinds of videos

  • @icedlemongamer
    @icedlemongamer 3 года назад +4

    THIS BIDEO IS SO GOOD I didn't even realize it had no views, it fits right into, and exceeds all the good videos I know in many ways :)

  • @Jorge-vn4ig
    @Jorge-vn4ig 3 года назад +9

    Hey, you are my hero. Now, a friend and I are so in creating a Pokémon fan game using Unity, as a challenge for us as a team but mostly for him in the design part and for me in the programming part. I want to replicate the Pokémon formula and mechanics, and your video shown up before when I was doing a random search. It turns out that not also your video, but also the resources you used, are so helpful to me, i mean, A LOT. You have made my life easier now and I know a lot more about how the system works, and I will use your video over and over to check how can I code this battle system. Also, your video is so well explained and I hope lots of people see it. Thank you very much and keep going like this, king. (also sorry because i'm not a native speaker so my english is probably bullshit hahashaudjashj

    • @kleinesfilmroellchen
      @kleinesfilmroellchen  3 года назад +4

      Thanks so much for the friendly reply. But take care: This video is OVERSIMPLIFYING A LOT (seems crazy, I know). Please look up DaWoblefet's article which is 99.99% correct and does not make simplifications. Also, if you need help with any details, please talk to the decompilation and datamining communities, which are far more knowledgeable than me. I've even noticed myself that my video is skipping over details without telling anyone to not make it a boring string of rule exceptions and computer science nerdery.

  • @criiptico
    @criiptico 9 месяцев назад +1

    This is such a good video.
    I'm making a little (I thought it was little, but now I guess it's a little piece of the jigsaw puzzle.) personal project where it outputs the best possible moves to use against two Pokemon. I've been researching dual type effectiveness for two days- and I had the hope to make this as accurate as I could lol. I guess I'm just surprised by how many damage variables there are!
    This gets me thinking, I wonder how long it took for Pokemon Showdown to get their battle system up and running. Just a thought.

  • @IRON-MAN._.827
    @IRON-MAN._.827 2 года назад +2

    you deserve more support for this amazing vid

  • @pannekook2000
    @pannekook2000 3 года назад +2

    Excellent video, you summed up (lol) a lot of math in a digestible format in a manner that conveys principles without getting bogged down in the details

  • @rollno.4958
    @rollno.4958 6 месяцев назад

    You're a life saver and this has to be one of the most well produced and informative videos ever. God's work indeed 💯

  • @GProgress
    @GProgress Год назад +1

    I am currently recreating gen1/gen2 in Python (pygame). This video has been extremely helpful in properly setting the formulas and checks. Than you for taking the time to make this!

  • @HollowIchigoBankai29
    @HollowIchigoBankai29 3 года назад +1

    I appreciate the effort and dedication this video required. Thank you for the video and information.

  • @yeet8036
    @yeet8036 2 года назад +1

    Just helping algorithms, good job dude!

  • @missintegra0
    @missintegra0 9 месяцев назад

    Gooood job men! Thank u so much, this was a lecture👏🏽

  • @vincepale
    @vincepale Месяц назад

    Apologies if I missed it, but have you published / shared your work anywhere, as far as these gorgeously formatted lists like at 17:51. I'm working on a RBY tabletop module for old school dnd, and something quick to reference like that could super neat. Amazing video. I've been looking for a video like this for a while.

  • @tomgeytenbeek2207
    @tomgeytenbeek2207 2 года назад +1

    With effort like this, you’re going places, man- good luck with the algorithm, but you’ve got at least one more subscriber in the meantime :)

  • @Relfar2
    @Relfar2 2 года назад +1

    Even though it's been a year I hope this video gets a ciritcal hit on the algorithm picking it up!

  • @gekkouga2828
    @gekkouga2828 3 года назад +2

    Magnificent video !!!!

  • @ronaldohu1015
    @ronaldohu1015 6 месяцев назад

    I am thinking of doing in my math IA on pokemon. Do you think it is a good idea to investigate in this topic?

  • @MrThaHip
    @MrThaHip Год назад +1

    I finally understand! 😂🙏

  • @ReligiousReasoning
    @ReligiousReasoning Год назад

    What about fling