Attack Speed is BROKEN... literally (Risk of Rain 2)

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024
  • Just when you thought the game was starting to make sense...
    Follow me on Twitch: / wooliegaming
    Join our Discord: / discord

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

  • @Woolie
    @Woolie  3 года назад +3152

    MOOOM! Woolie is making me learn again 😡😡😡

    • @tsudabyo
      @tsudabyo 3 года назад +30

      😡😡

    • @KristmusBare
      @KristmusBare 3 года назад +16

      😡😡😡😡😡

    • @leonedrejord787
      @leonedrejord787 3 года назад +16

      😡😡😡😡😡😡😡😡

    • @birduwu
      @birduwu 3 года назад +15

      😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡

    • @siegiusjr319
      @siegiusjr319 3 года назад +29

      Question: what is Huntress's alt primary cap, and does the double shots with crit affect that cap?

  • @ryankendall3716
    @ryankendall3716 3 года назад +6179

    So, I solved this mathematically. Here’s what’s going on.
    Attack speed decreases the animation time, but not the time between animations. This means that there is a constant that your formula isn’t accounting for. With your real-world testing data, we can solve for that constant.
    Commando has a constant of 3. This is because he keeps a constant 2 frames in between each double tap shot. This distorts the scaling and gives him a cap of 20 shots per second once he is able to fire in one frame. Two frames of cooldown, one to fire.
    Huntress’s constant is 2. This means she has the same issue, but with only one unchanging frame, giving her 30 shots per second.
    Mul-T has no animation between shots, so his constant is 1. This means he scales 1:1 and caps out at 60 shots per second (one per frame).
    Even if your game “runs” faster, I believe the animations always lock at 60fps so there’s no way to fix this.
    Side note: this is also the reason you keep getting slightly over the expected value (like 20.1 instead of 20.0). You are skipping the cooldown frames on the last shot and the firing animation frames on the first shot.

    • @Woolie
      @Woolie  3 года назад +1575

      Makes sense.
      Question is: why even have the cooldown period? The only reason I can think of is to preserve animation smoothness / integrity.
      I think most people wouldn't mind a wonky animation if it meant actually scaling intuitively

    • @MassisKharne
      @MassisKharne 3 года назад +350

      Bro how the hell you so smart, I feel dumb as bricks trying to figure this out myself. xD

    • @ryankendall3716
      @ryankendall3716 3 года назад +720

      @@Woolie it is indeed animation integrity. A lot of games have this issue; PUBG and fortnite guns would fire more slowly if your frame rate didn’t sync up with the gun’s animation.
      The cooldown animation exists so that you can’t overlap animations (like firing a phase round and a normal shot at the same time). It’s definitely necessary. The question is, why doesn’t it scale?
      Probably due to a bug. If all animations scaled on attack speed, it could cause problems with movement animations or projectile speed.
      Obviously only the devs can answer that question; we can only speculate. But now we know how to calculate and control for it.
      In the meantime, this makes Huntress’s alternate primary much better. The alt primary has a higher animation:cooldown ratio, meaning that it scales better on attack speed than the main huntress’s primary. We can probably find similar situations on other characters.

    • @kosmickalamity7071
      @kosmickalamity7071 3 года назад +179

      @@Woolie I think hopoo probably decided that you need such a stupidly high attack speed before you run into this problem, that it isn’t worth fixing. I’d agree tbh, I’ve never seen a run go long enough to have this much attack speed lol. But it is annoying that attack speed doesn’t really scale intuitively at all.

    • @ryankendall3716
      @ryankendall3716 3 года назад +236

      @@kosmickalamity7071 I mean, the caps don’t matter, but the difference between 8.6 and 10 shots per second is pretty big at 10 syringes.

  • @vale7610
    @vale7610 3 года назад +731

    So, I'm a modder (creator of Manipulator) and had an actual look into the code of things. The game doesn't calculate how many shots should be fired per second, but instead calculates what the duration between each shot should be. The game itself checks this duration with what is called FixedUpdate. It's something Unity (the engine Risk Of Rain 2 uses) has that activates at a fixed rate of time. In this case, FixedUpdate activates a total of 60 times per second. This means that it's impossible to go above 60 shots per second, because it can only fire a single shot per FixedUpdate.
    This is how it works for Double Tap; it figures out the duration (Base Duration / Attack Speed), fires the bullet, and waits the calculated duration before allowing you to fire another bullet (by starting the code all over again). I've only had a quick glance and am unsure why Double Tap caps out at 20 per second, but it may be some other thing in code that I didn't see, or some form of balance from the developers. The reason it fires 61 shots per 10 seconds is because if fires the bullet IMMEDIATELY and THEN starts calculating duration, so it manages to get an extra bullet in at first.
    Suppressive Fire works a little bit differently. It has a fixed 'minimum' duration, a duration between each shot (Duration Between Shots / Attack Speed), and the number of shots it needs to fire (base Bullet Count * Attack Speed) before it finishes. It fires the first bullet, and uses FixedUpdate to fire the rest. Within FixedUpdate, it checks if it has passed the 'Duration between shots' timer, and fires a bullet if it has. It then also checks if the 'age' (how long it has been since the ability started) of the ability is higher than the minimum duration AND if it has fired the correct number of shots. If both of those are true, the ability ends. Since there is a maximum rate at which bullets can fire (60 per second), this script will keep looping until you either interrupt it, or it has fired the target number of bullets.
    Coding things like this is easier for a computer to understand and calculate, but can sometimes end up with funky situations like the ones you've come across. People have been mentioning that animations may be the cause, but this isn't the case. Animation is purely visual, and triggered by the code - the code isn't affected by animation unless the code requests it. The code simply tells the character model 'play this animation' when it fires this bullet. If a new animation is started, it immediately overrides the old animation (and blends between the two to make it look nice). In the case of Commando, animation doesn't affect the code of skills at all.
    Fun little bonus fact for y'all: There's code inside Double Tap that allows for reloading. So perhaps, at one point, you had a fixed number of shots (one shot per stock) and had to reload for a short time before your stock was fully refunded. It seems they removed that to just allow you to fire constantly, so you could have more consistent DPS. It might've just felt bad to have to reload all the time.

    • @vale7610
      @vale7610 3 года назад +47

      All I talked about above was commando. Interestingly, Huntress actually DOES use animation information - however, it's not as influencial as you think. Within FixedUpdate, it effectively asks 'has the attack animation started'. If it does, it fires the arrow (which is not a projectile, it's some other weird thing called an Orb, but that's not relevant here). This would only really affect the very beginning of when you start attacking, not the time between attacks (or attack speed).
      Huntress also uses an 'arrow reload' system, where it has a fixed time to 'reload' the arrow between each attack ALONG with the normal duration stuff. This is probably the reason you cap at 30 per second for huntress, because it not only has the duration between each shot, it also has to reload between each shot.
      MUL-T (known affectionately as 'toolbot' in code) has some funky stuff relating to spinning up and spinning down the nailgun, but other than that, it effectively has 'wait x seconds, fire the nail, repeat' in FixedUpdate, which results in the hard limit of 60 per second.
      EDIT: please note, I'm not a professional programmer. I'm just doing this as a hobby and for fun. I'm more into design than coding, but I have to code if I want to make Manipulator (the survivor I'm creating) a thing.

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

      This is strange
      Fixed update is called by default 50 times per second, not 60. I dont see why someone would change that tbh, but it is possible
      Tho Comando having a cap at 20 is still strange, if it used double tap as "2 fire, 1 reload" frames, the cap would be 40, but its actually half of that

    • @mediumsurmoon6283
      @mediumsurmoon6283 2 года назад

      @@vale7610 yeah okay , but most importantly , will it blend ?

    • @user-hf3fu2xt2j
      @user-hf3fu2xt2j 2 года назад

      You can just change the fixed update rate by changing Time.fixedDeltaTime value

    • @Vysair
      @Vysair 2 года назад

      Thanks for the in-depth on the game design, it could be a good reference

  • @vi7ec189
    @vi7ec189 3 года назад +859

    Attack speed affects the attack animation, not the delay between attacks animation

    • @TheLegendsmith
      @TheLegendsmith 3 года назад +60

      Yeah that's right. The duration of the attack animation is modified by the attack speed value.
      Source: I've been looking at RoR2 source code since RoR2 modding was a thing.

    • @vi7ec189
      @vi7ec189 3 года назад +9

      @@TheLegendsmith I looked at the artificer's M2, and I noticed that the charging time is decreasing

    • @cowonavuwus8758
      @cowonavuwus8758 3 года назад +3

      An animation can be viewed as icing on a cake tho. An animation is played for you the player to understand that you are shooting, it usually has no ties to the actual fire rate. Its just feedback
      Thats why in some game a Tposing character can still be interactible and act normally even if it is not moving. Animation is meerly just feedback

    • @Jonjon13Jonjon13
      @Jonjon13Jonjon13 3 года назад +9

      You could read then as "casting time" vs "cooldown time". It's easier to grasp if you know about stutterstepping in MOBAs, where characters are static when attacking, but inbetween attacks you can move your character, and stop moving at the right moment to begin attacking again without any loss of dps if done perfectly... that techinque hinges on letting the attack animation (or casting time of the attack) go on while stationary, then moving while the attack is on cooldown, before it could start the animation again. If you move before the attack is shot (while still "casting") you cancel the attack and lose damage. If you take too long, the next attack has begun... Here in Risk of Rain it's much harder to see what the casting time and cooldown actually are because attacks are so fast AND you can attack while moving, so it's impossible to tell any difference... but we just found the way: Attack speed just reduces the cooldown, so the "casting" part is what limits the benefits of attack speed.
      Seeing as commando can have 20 shots per second, I guess his attack casting time is 50ms. (50x20= 1000ms, or one second)
      Huntress can have 30 shots per second, so her attack cast time must be 33.33ms
      And Multi having 60 shots per second, his attack casting should be around 16.66ms
      Considering most games measure the time in ms, I guess some modder can find those values on the files? the casting time might be tied to the fps the game runs at, too.

    • @a1b2c4d1
      @a1b2c4d1 3 года назад +13

      @@cowonavuwus8758 Not necessarily. In many games, yes the actions are completely disconnected from the animations. "Animation cancelling" is a peak example of that, with commands running through perfectly. However, it's up to the programmers to decide how to implement animations. Many modern developers choose to base actions ON the animation itself. For example, "When the last sprite in frame is the active sprite: do something" or in Risk of Rain's case, when the commando finishes lowering his gun, reset the attack flag back to ready.
      Animations are not merely just feedback, but can be used as triggers for flags in the code itself. This usually helps with clarity and aligns the player's perspective with the game's processing.

  • @caseymantle2097
    @caseymantle2097 3 года назад +455

    Not really knowing much about this kind of thing, I would guess it could be attack speed actually reducing a cooldown between attacks rather than "speed" of attack and at a certain point each survivor hits some kind of internal cooldown cap, much like how abilities have a global minimum cooldown between uses.

    • @DaInternetBear
      @DaInternetBear 3 года назад +18

      That actually seems logical, since similar things happen with other items like Alien Head always leave a cap on cooldowns at a threshold. The same could be applicative to attack speed once a threshold is met

    • @Woolie
      @Woolie  3 года назад +81

      right - question is: why is that minimum cooldown different between survivors?
      it'd make much more sense to just keep it the same across the board
      and, at that point, why not just make it work as everyone would expect (affecting the actual rate of fire?)

    • @that_tikosh
      @that_tikosh 3 года назад +26

      Maybe there is a cap how fast they can play the attack animation.
      Different animations -> different caps?

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

      This was the same thought I had. It might have to do with the animations.

    • @guilla5
      @guilla5 3 года назад +13

      @@nathanharris9093 It also makes sense that Mul-T is the fastest one as he basically fires a chaingun, while commando and huntress have to either actuate a trigger or fire an arrow, I think it lines up.

  • @PlasmaCore
    @PlasmaCore 3 года назад +141

    The short version is, it has to do with the EntityState manager shifting between the FirePistol2 state, and the Idle state between shots while you're holding m1
    Whereas, with nailgun and saw, for example, you stay in the same state, so it's only capped by the number of updates the game does in a second

    • @PlasmaCore
      @PlasmaCore 3 года назад +19

      As a modder, I have analyzed the code of the game to figure this out. I can say I at least *mostly* know what I'm talking about.

    • @gameridiotNOT
      @gameridiotNOT 3 года назад +8

      That explains why Mul-T is capped at 60 shots/s, because I saw somewhere else in this thread that no matter your framerate the game runs its logic at 60 fps, but what I wonder is why Huntress hits the same cap as Commando and then suddenly breaks through to meet her own cap

    • @PlasmaCore
      @PlasmaCore 3 года назад +8

      @@gameridiotNOT I've done so more looking into it, since I posted this comment, it's because at max attack speed commando actually enters an unused reload state
      This means that his fire cycle is 3 frames long
      FirePistol2->ReloadPistol->Idle->repeat
      Whereas with huntress, you just go between 2
      FireSeekingArrow->Idle->repeat
      The sudden jump is just a matter of rounding

    • @jeezuhskriste5759
      @jeezuhskriste5759 3 года назад +7

      @@gameridiotNOT The reason it looks like Huntress caps the same as Commando and then suddenly jumps is relatively simple. The game runs at 60 frames per second. Instead of thinking of it as jumping from 20 to 30 shots per second, think of it as a shot every 3 frames to every 2 frames. It jumps that much because you can’t shoot a projectile every 2.5 frames, it has to be a whole number.

  • @thilberton1337
    @thilberton1337 3 года назад +60

    You're counting from the frame you first had 1 stack of bleed, so if 10 seconds later you have 61 stacks, you've gained 60 stacks in 10 seconds and that's 6 shots per second. Similarly, the cap is 200 stacks in 10 secs, 20 stacks per second or one stack every 3 frames.

    • @Woolie
      @Woolie  3 года назад +5

      check out 2:35 in the vid again, my good sir

    • @thilberton1337
      @thilberton1337 3 года назад +28

      @@Woolie Your method for calculating attack speed was perfect, ya just forgot to subtract a 1 =P

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

      @@Woolie whoo, 60 stacks (after the first hit) in 9.986 seconds ≈ 6.00841 shots/s
      wiki LIED

    • @seangoad7412
      @seangoad7412 3 года назад +5

      Let's say you have a block of wood that's 6" long, and you measure it with a ruler. If you line up one end of the block with the 1" mark, the other end will line up with the 7" mark. This does not make the block 7" long. You started with 1 bleed at T=0.0, so you should expect, with 6 stacks per second for 10 seconds, 61 bleed stacks at T=10.0

    • @CandyBard
      @CandyBard 2 года назад +6

      @@seangoad7412 Your analogy doesn't work because we're measuring time, not distance. You have to start measuring from the first frame that bleed stack is available, because thats when the hit is registered by the game. the 61st stack also landed before the 10.0 seconds, so the measurement is still accurate.

  • @robertriley4759
    @robertriley4759 3 года назад +38

    I'd assume that every attack has 3 mini phases, one Pre-Fire animation, one actual phase where the protectile comes out, and one after animation phase (imagine like after you release the trigger for nailgun). I know this is how autos work in Smite for instance.
    I'd guess Huntress and Commando have these 3 phases which present a much greater restriction on their attack speed even as it increases whereas Multi is a single "trigger pull" with no need for more animations until you let go of the trigger.
    Essentially, Commando or Huntress would be more like Semi Auto (that feels like a full auto to us), whereas Multi Nailgun is the only true Automatic in the game.

    • @danlorett2184
      @danlorett2184 3 года назад +6

      It looks like it's purely based on the animations. MUL-T has the simplest and fastest animation for firing his nailgun (1 frame) while Commando's double tap is 3 frames. That's why you get 60 shots per second from MUL-T (60 fps / 1 frame per animation = 60 animations per second) vs 20 for Commando (60 fps / 3 frames = 20 animations). Huntress is 2 frames so she caps at 30.

  • @kyruken6740
    @kyruken6740 3 года назад +28

    As a comp sci major this kind of stuff is always fun to learn about! Thanks for going through the effort to drill down on this and make an informative video!

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

      @@emiliogallegosgarcia8573 to highlight my interest in the function of the coding behind the game that causes the game to perform like this.

  • @Fossilized_Nerd
    @Fossilized_Nerd 3 года назад +80

    Interesting video. If I had to guess the source, I can think of one actually: animations.
    Chances are, the reason there's a hard cap on DPS on these three characters is because the game has no workaround for when DPS would surpass the maximum speed the attack animation can play at. If you have a dissonance between the projectiles being shot and the animation it's going to start to shoot when the character isn't even in the correct position to do so, and as a result the game hard cuts-off at a certain value to ensure the rate of fire matches the shooting animation. Go any faster and the animations literally cannot keep up, which makes sense- eventually you go so fast it doesn't look right anymore lol
    If they had a unique animation that didn't consider elements like the Huntress drawing back her arrows or MUL-T's rotating gun or Commando's pistols moving up and down when he shoots, chances are this hard cap might not exist.
    Just a theory, of course, but it's the only one I can come up with that properly explains why there's a hard cap here without any holes in the logic.

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

      But that doesnt explain the scaling mismatch between the expected and actual values

    • @Richard-gq3pm
      @Richard-gq3pm 3 года назад

      Yeah, well it makes sense that you cannot have infinite attack speed, but the attack speed increase, should make sense and be linear, not completely random.

    • @tomwirant5543
      @tomwirant5543 3 года назад +3

      @@ShadowSlith789 like fossilized nerd and vi7ec have the answer when you combine them. There seems to be 2 animation components to attacks, where attack speed only affects one. If it affected both, the animations would get scrambled and look wonky with enough attack speed. Arrows might come out of huntresses bow without it even being pulled back.
      The devs must've done it this way to prioritize visuals over the attack speed stat being completely accurate. The attack speed increase isn't completely random, but only part of each 'attack' is being sped up. This would result in a still linear increase to the first animation, but diminishing returns come in when you stack too much attack speed, as the second part is not affected. As the first animation gets faster and faster, the attack speed stat actually affects attack speed less and less because the second animation is unaffected.
      This would explain it all, but like Fossilized nerd said, just a theory.

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

      The game doesn't rely on any animation at all to determine timing of things (this would lead to a lot of issues). When Commando uses Double Tap, it tells the character model 'play this animation' and continues on its way. The code gives commands to the animation controller, and the animation controller figures out the rest. It doesn't send anything back to the code.
      In other words, animation doesn't have any influence on the code of skills.
      I put up a comment explaining what I found (I'm a modder, creator of Manipulator) in more detail, but the reason there's a hard cap on attacks per second is because unity (the game engine) only checks things within skills at a fixed rate (60 times per second, using something called FixedUpdate). Since most skills have it so it's only one shot per fixed update, that puts a hard limit on the number of times you can fire per second.

  • @Moonlighter3
    @Moonlighter3 3 года назад +193

    Woolie tricked me into doing math homework, SMH.

  • @Alkixkix
    @Alkixkix 3 года назад +15

    Now that we have this information, we can generate an item build that most efficiently hits the attack speed cap.

  • @foxxbaker
    @foxxbaker 3 года назад +145

    Could you do armor next? I’m just curious on if it’s good in small amounts or large amounts, and if it’s good for short or long runs. Oh also how shattering justice works and what enemies have armor, also thanks for this video, now I know why my attempts at broken attack speed feel weird, oh also got a profile picture, it was commissioned

    • @hellfrozenphoenix13
      @hellfrozenphoenix13 3 года назад +14

      Armor gives you a % damage reduction, and scales Logarithmically. This means that its stronger at first and gets weaker and weaker over time, similar to teddy bears. Shattering justice, on most enemies who have no armor, equates to about 33% bonus damage taken. Armor reduction can go negatives, so it works on all enemies throughout the game.
      Those are what I know of armor at this time.

    • @Richard-gq3pm
      @Richard-gq3pm 3 года назад +2

      If I'm not mistaken, most normal enemies have 0 armor and only bosses have some armor, but not 100% sure.

    • @danielnemeth515
      @danielnemeth515 3 года назад +10

      @@hellfrozenphoenix13 Thats not exponential growth. You mean Logarithmic growth.

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

      So, the more repulsion plates I get, the less effective it gets, what’s a good number to go for?

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

      I think armor scales much more intuitively tho. This video is making me want to test it myself somehow, but I’m pretty sure armor follows a simple ish equation that the wiki editors have already figured out. It just scales logarithmically

  • @Z.L.R
    @Z.L.R 3 года назад +15

    Me who never played this game: Interesting....

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

    I don't think it can be overstated how important the mentality of "Do your own research" is. Super kudos for having it and acting on it. The world needs more of this.

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

    I don't think i saw anyone suggest something like this but it could be fixed like this: 1 (+1 per level) 'extra shot' points per shot (the next shot shoots (x/10=n) extra projectiles only when n is a whole number)
    At 1 stack, 2 projectiles are fired on the 10 shot
    2 stacks, 2 projectiles are fired on the 5th shot
    3 stacks, 2 projectiles are fired on the fourth shot, then on the third, then third, then fourth again, et cetera
    10 stacks, 2 every shot
    25 stacks, 3 every shot + 1 every second shot
    et cetera

  • @Boborian8
    @Boborian8 3 года назад +35

    Based on this, is there then a spreadsheet for the max attack speed of each survivor, and correspondingly some mix of items of how to get there?
    On a side note, I wish that you could keep scaling, but the game would handle it by just multiplying the damage by 2 or something if you had hit double cap, 3 if you hit triple, etc.

    • @KingCuba
      @KingCuba 3 года назад +3

      @Aegis you should post this idea somewhere where it can get some traction

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

    My gues is that just like minecraft risk of rain has a cooldown times between each attack.
    Because in minecraft the "instant break" that many people seek to mine out stone and other things is not truely instant IF you want to break more than 1 block.
    Bevause if you want to break a second block you need to wait (a certain miniscule amount) to start breaking the other one.
    This could be happening in risk of rain where you reach a point that your attack can be an "instant attack" and activiate as fast as it can but it needs to wait for the "cooldown timer" of an attack to attack again. Resulting in an atackspeed cap like you saw in your testing.

  • @Alex-it2fz
    @Alex-it2fz 3 года назад +8

    "Ladies and gentlemen, I give you: T H E N U M B E R S" Was probably the best bit I've seen all week lmao.

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

    What they could do in order to alleviate the issues of animation limits would be be to trigger an internal double damage trigger chance increasing with the increase in attack speed making it so that you can get above the animation cap limit and it would probably get closer to the expected values. It'd also be hard to spot without going frame by frame since the numbers flash so fast at that point that you'd be hard pressed to notice.

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

    FYI, "increases by 70%" and "multiplies by 1.7" are the same thing.
    When you increase by a percentage, you are multiplying. The text for tonic is correct.

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

      They are not the same if you have multiple sources of increased attack speed.
      If you already have some syringes, mochas, zerker pauldrons, etc active - their %s are all summed to make the total. +70% when you already have 250% is different than +70% when you have 100%.
      Tonic is different in that it is always increasing your total by 70%, regardless of your other increases, hence, a multiplicative increase.
      The issue is that both tonic and all other sources of attack speed are worded the exact same way - look at a game like Path of Exile, which solves this issue by using the word "more" for multiplicative increases and "increased" for additive

  • @MangaScrub
    @MangaScrub 3 года назад +6

    Risk of Math

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

    My guess as to why it's happening:
    character animations seem to be running at 60 fps and a single animation can't be under 1 frame and their length is, well, a whole ammout of frames, so some characters like commando have a maximum speed of 20 shots per second(probably has an animation for reading to attack, attacking and post-attack), some like huntress have a maximum of 30 shots per second(probably the post-attack animation is actually a part of the shooting animation), while MUL-T has only 1 animation between attacks(the attack animation) and the cap is 60.
    The reason for the incorrect scaling is probably because all the animations get their durations rounded up, which means you get 3 additional frames between your attacks. The huntres jumping from 20 to 30 is just one of her animations jumping from 2 frames to 1

  • @summar-ice
    @summar-ice 3 года назад +21

    This game is made in Unity, meaning shooting was probably made using animation events (Running a function on a specific animation's frame). The faster the animation, the faster the attack speed. So, why is there a hard cap? Most probably caused by Unity. The amount of animation frames that have to be done in a single frame might be too many for the game to handle, meaning it would crash/freeze/lag if there wasn't a cap. This explains it all. The devs had to cap the attack speed in order to make it possible for Unity to run the animations properly. So, why is the number different for every character? Simple: they have longer or shorter animations than the others.

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

    the reason you hit 61 stacks with base attack speed is because rate of fire is more accurately represented as the amount of delay between each shot as long as the trigger is being held. the one exception to this is that the first shot (in almost all cases, in almost all games) comes out as soon as you pull the trigger, with zero delay. therefor, if you click, you get 1 bullet in zero seconds, then you hold the m1 for 10 seconds, and get 6 bullets every second, totaling 61 bullets.

  • @Syngraphaeor
    @Syngraphaeor 3 года назад +3

    Now, despite having to _learn_ (ugh), this was actually a super cool video!!
    Now, I wonder what the original video idea was...?

  • @God0fCows
    @God0fCows 3 года назад +6

    Love that you continue to make content for this game.

  • @christopherwinqvist8149
    @christopherwinqvist8149 3 года назад +27

    Let’s take the time to appreciate how long this man has sat to just raw-test all these combinations. Well done mr. streamer 👍

  • @strikermodel
    @strikermodel 3 года назад

    This is extremely easy to explain. It's capped by the animations. The devs probably noticed this but left it as is for a number of reasons.
    1.stability. The game can already get demanding on your PC in long runs. Not having a speed cap could lead to crashes.
    2. If the run has gone long enough for you to get this many of the same item, you will instantly die for not having the others. Players who are good enough to get that far will know better than to fall into this pitfall (outside of for the sake of doing it).
    3. If you take the recyclers and printers out of the equation, you will not reach these numbers consistently.
    4. The game is clearly designed with soft break points in mind. All rewards fall into the "20 stages or less in a run" category.
    Pretty much all roguelikes have this same soft cap element.

  • @MassisKharne
    @MassisKharne 3 года назад +3

    Out of every video I could ever watch- League, Valorant, Path of Exile...
    I ALWAYS come back to watch more RoR2 videos from Woolie. Hopoo made me love their game development theory with RoR1 (the game that made me love them) and it always makes me smile, seeing people make content for this game; be it mods or informational videos. Much love Woolie, keep doin ya thang!

  • @aggammer3485
    @aggammer3485 3 года назад

    Alright ill use Warframe as an example for the comparison since im more familiar with it. In warframe we have mods (which are stat increases), adding +90% fire rate will just give the expected result (aka spawn bullet faster), however adding +90% reload speed will *not* give the expected result, this is because certain stuff are tied to animations, so the potential answer here is that RoR2 attacks are tied to animations, and potentially the cap is placed when an attack animation ends before the next tick starts, since commando's primary is a burst of 2 bullets (and as such a longer animation loop) that could explain why the cap is much lower than his suppresive fire
    TLDR: attack = animation, animaion = cooldown, cooldown ≥ tickrate

  • @Archangelkyllike
    @Archangelkyllike 2 года назад

    the stack tracer is a byte, value rolls gaining what they feel should be a diminishing return, then hard cap the value to the animation per fps.

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

    There are ways they could program the game to better scale with insane attack speed. That would eventually lead to you firing more than one bullet per frame, scaling upwards until you basically have a 60 shots per second phase blast on your primary. They likely didn't bother because only a small number of players would ever reach that ridiculous amount of speed and an even smaller number would notice any problems. But it would be cool.

  • @moshguruc3780
    @moshguruc3780 2 года назад

    I just did a run with the rail gunner where all I took was soldiers syringes and leech seeds, it worked well for a while but I eventually lost when the recoil got so bad I got launched out of the map and died before I could regain health with leech seed.

  • @timothye.2902
    @timothye.2902 2 года назад

    Interestingly this means that there's even more variation on how much a survivor benefits from attack speed. Obv for certain survivors attack speed just works differently (e.g. Artificer M2 charge time, or Captain narrowing his M1 spread faster) but for these 3 sustain fire survivors, Mult-T benefits more from AS than Huntress than Commando, by your numbers. This would extend through the synergistic value of attack speed increasing on-hit effect proc rates (when measured over time)

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

    Big shoutout to my boys Wipwip and Guragura for helping with the reasearch shown here!

  • @WindexDrinker-wj1xs
    @WindexDrinker-wj1xs 11 месяцев назад

    Nothing brings me more joy than using artifacts to get 40 syringes, 3 predatory instincts, 9 lens makers glasses, and the brilliant behemoth.

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

    Hey Woolie!
    My 6yo and I have been watching you a lot lately. We have 4 achievements left to unlock, and we've needed a lot of advice along the way. You're great! Good wholesome content without a bunch of cursing or inappropriate stuff. Thanks for doing what you're doing and keep it up!

  • @sophisticatedduck1807
    @sophisticatedduck1807 2 года назад

    i got 13 soldiers syringes on loader and it was basicly the "standing here i realize" meme against bosses

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

    I've watched a few of your videos... I used to have my hair like that. Props. All the videos have been good... then I saw this video..
    "...looks like I'm going to have to science the shit outta this..."
    Sub'd for going with the 'for science' mentality.
    10/10 on the video.

  • @existentialrowlet
    @existentialrowlet 3 года назад

    Obviously others have pointed out that this is most likely tied to animation speeds but I think it also comes down to the games processing speed too.
    Every attack with commando fires 1 bullet and 1 bullet only. That is a constant thing. Only things such as captains primary act differently. This would be the same for all other attacks as well.
    So logically since the game processes at a speed of 60fps this would put a hard cap of attack speed at 60/second for everything in the game.

  • @ThoughtBundle
    @ThoughtBundle 2 года назад

    Woolie gives off that metalhead super-nerd energy. Like did anyone else have that one extremely nice/cool metalhead nerd they knew in Highschool or college?

  • @user-iq9rj4le2f
    @user-iq9rj4le2f 3 года назад +2

    My brain fried when I saw numbers

  • @supersonicgamerguru
    @supersonicgamerguru 3 года назад

    Suppressive fire is obviously firing at max one shot per frame, maybe the others have frame breakpoints?
    Like you know how Mario moves one pixel on one frame and two on the next with a 1.5 pixel speed? Maybe the attack speed in ror2 just can't do that and only adheres to frame breakpoints, maybe even based on the character's shooting animation. Maybe it takes 6 frames to complete double tap's animation, resulting in 1 stack per 3 frames, but mul-t only takes 2 frames, so 1 stack per 2 frames?
    If also be interested to see the effects of very high attack speed on attacks with lower base rate, like the rebar, or engineer's grenades (since you can't hold on to the charge forever like captain).

  • @dancingimmortal448
    @dancingimmortal448 3 года назад

    I mean it kinda worked that way in 1 but that was because suppresing fire didnt scale its numbers of attacks so you would activate it only to shot six shots intantly and then just go back to double tap

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

    "And console boys, your time has ALMOST come for the Annivers-" And he was consumed anew in the one-run challenge's end-phase.

  • @fav843
    @fav843 3 года назад

    "Our favorite robot Mul-T"
    *SAD FLOWERBOT NOISES*

  • @GTS_LTS
    @GTS_LTS 2 года назад

    Paired warbanner, warhorn, and something that gives frenzy. You can turn this game into a bullet hell during bosses

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

    I'm just concerned about the amount of blood this poor twisted scavenger has lost

  • @Fracturite
    @Fracturite 3 года назад

    I would say that attack speed for base attacks are based on an inverse negative exponential (base attack speed*(-10^(-0.1*syringe number) +2))) that would explain the number ceiling and why the numbers don’t quite add up and look like they slow down.

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

    Alright loved the video, But need to watch the video in the morning... to exhausted to take it all in!

  • @BrotherZael
    @BrotherZael 2 года назад

    The devs knew you would come looking, and left a trail of crumbs for you to follow. But the crumbs lead nowhere except back to the ready-up button. They have laid a trap and you fell for it woolie.
    Now, like sisyphus, you are now bound to this fate. Forever on ye shall return to the start screen, never finding solace, never reaching the peak, never... escaping the rain.

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

    its prob an animation speed cap and to make it so animations dont break they have a limiter because broken animations can break or lag the game

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

    "Our favorite robot, Multi"
    Rex: Am I a joke to you?

  • @Ima9ineBreak3r
    @Ima9ineBreak3r 2 года назад

    Can we all just appreciate that the Huntress is looking like she is giving the camera "the hand" the whole time when firing stupidly fast?
    "Look, I'm busy, Ok? Just wait." -Huntress, probably

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

    Warframe has a similar issue where every weapon has an internal fire rate cap it isn't explained anywhere. Most of the reason is to prevent crashes with audio errors

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

    Thanks for continuing to make the best ROR2 content out there Woolie. Love it when i can catch your streams. Please keep giving us the OMEGA value all the time

  • @joshcarter11
    @joshcarter11 2 года назад

    Loving all your videos man. I started watching after buying RoR2 on PS4 and not really understanding how a lot of stuff works, your videos have helped a bunch 😁

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

    Now I am prepared for my final math exam on Thursday. Thank You!

  • @sai_darkbu11et61
    @sai_darkbu11et61 2 года назад

    i dont play risk of rain 2, only watched like 5 videos of it in my whole life from other content creators. BUT i actually understood what this man said for 11 mins and 28 seconds

  • @tdimensional6733
    @tdimensional6733 3 года назад +17

    Man, I hope those pistols are full auto.

  • @allinairhanson6886
    @allinairhanson6886 2 дня назад

    I still like frag grenades, feel goofy and fun to land
    Though that damage is disappointing when you look at railgunner

  • @bradjones7491
    @bradjones7491 3 года назад

    maybe whats actually happening is division of attack time instead of multiplication of attack rate. For instance you're firing 6 shots over the length of the animation so to get the real fire rate you'd need something like (animation time)/attack rate * attack speed increase. So the more syringes you have the faster the animation plays, but the animation can never play at zero because you can never make anything zero through division. Of course there still has to be some delays between animations to explain the random caps for each character. Just speculation of course.
    The potential solution for this could just be doubling projectiles beyond a specific attack speed threshold, IE if you have 200% attack speed then fire twice as many projectiles. But of course that doesn't work for melee only characters, whose attack speed would be capped at frame rate, for them you would have to create an extra damage hitbox or something similar.

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

    8:40 Have you considered that it's the delay between activations of double tap, similarly to how uh... Wake of the Vultures? The one that gives you max cooldown speed when you kill an elite can't bypass the minimum cooldown.
    Then it would make Mul-T's results make more sense as he was probably coded to just fire on every available frame where he doesn't have a cooldown since his is just fully automatic with no real special features or animations.

  • @dominikmagnus
    @dominikmagnus 3 года назад

    that sound of 606 syringes rapid fire is like some M61 vulcan

  • @IStareAtGames
    @IStareAtGames 4 месяца назад

    Woolie just explained how I was stupid in a million different ways

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

    Just watched a video about someone doing math about a game I never heard of. 10/10 would do it again

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

      Now go watch more videos about the game... And then go play it. It's amazing!

  • @luciferite
    @luciferite 3 года назад +25

    Thank you for the math lesson Mr. Streamer.

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

    no idea whats happening in this vid rn I just like seeing ror2 and hearing woolie talk

  • @justinherrgott
    @justinherrgott 3 года назад

    Well, what you've really taught me today was at what point I should stop collecting syringes when I'm bored playing with huntress with artifact of command on 🤣

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

    Just a detail but you had indeed 6 shots/s at base AS, because you started when the enemy was at one stack and 10seconds later he was at 61 stacks. It means that you added 60 stacks in 10 seconds so a fire rate of 6shots/s

    • @MazDance
      @MazDance 3 года назад

      Thank you, that was a problem I had as well.

  • @whiteglint466
    @whiteglint466 3 года назад

    It's like in WC3 when in some custom maps have similar attack speed as ranged and melee champs. Melee champs have much more actual AS then ranged cause the animation of the attacks.

  • @eliasvenaas1685
    @eliasvenaas1685 3 года назад

    I thought they meant that because of suppressive fire's cooldown, double tap fires more shots overall and therefore "Fires Faster". But as every other comment on this video states; It's animation delay.

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

    Bro, you're really overthinking this LMAO

  • @PartyMarty94
    @PartyMarty94 2 года назад

    That's is why I love commando with 40 syringes. You go lazer with r. So much fun.

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

    I wish the book examples were like this one

  • @norton_antivirus
    @norton_antivirus 3 года назад

    I personally think they were accounting for the cool-down for suppressive fire when saying double tap procs faster than double tap because with cool-down and base attack speed it is faster at procing

  • @monsoon1174
    @monsoon1174 3 года назад

    With a hard cap made for each survivor based on animation time, you can create caps of attack speed that decide the best total amount of attack speed for a build.
    Mul-T has the best scaling with attack speed and a far higher cap than other survivors at a total of 60 per second. That means his cap is 4.8 attack speed, 480% total. Knowing this, you can put him up to 375% bonus attack speed. With a tonic, that's caps lowered to 2.82 total attack speed, meaning you only need 180% extra attack speed with a tonic to cap the total.
    Commando caps at a measly 20 a second, making his scaling with attack speed stop at 3.33 and at 1.96 with a tonic.
    The Huntress caps at 30, meaning she caps at an enormous 15 attack speed and 8.8 with a tonic. That's mainly because her scaling is so poor with attack speed in general.
    This means the commando has good initial scaling with attack speed, but taps out at 1/3rd the dps and bleed potential of Mul-T. Ouch. You won't really hit that limit in most games, but with a tonic, that's not that difficult a limit to reach, actually warhorn and predatory instincts caps it out. Mul-T's scaling is otherwordly, as I expected from personal experience. I can calculate the other caps for this kind of thing if someone hands me the raw numbers like this video has.
    My numbers could be slightly off as well.

  • @AkJakolantern
    @AkJakolantern 3 года назад

    NGL I was shit face while watching this, and all the math was completely over my head, but I believe you.

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

    So the result is, there is a hard cap on number of shots per round, that varies per character, and suppressive fire is better than double tap. I wonder if the hard cap is preventing number of projectiles on screen, to keep the frame rate high.
    It looks like PlasmaCore1219 actually kind of answers this talking about it is a bit about animation, but a bit about frame rate cap. Find that thread, currently 5th from top for me, got it.

  • @themilkman2833
    @themilkman2833 3 года назад

    if i had to guess theres an internal cooldown for each proc meaning you can only proc a certain item once every x amount of time there could also be a cap for attack speed on each survivor try counting each number from the primary for 10 seconds and see if it matches up with the amount of bleed stacks

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

    the reason why mathimatical formulas dont perfectly reflect games is because of game coding. Animation speeds tic speeds and processing speeds of bullets in games will technically affect how you time its travel speed

  • @davidtremblay9903
    @davidtremblay9903 2 года назад

    That wooohoo foreshadowing got me, take my subscribe!

  • @lodapow173
    @lodapow173 3 года назад

    That perfect cut at "Foreshadowing OOO" is the best

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

    I don't even play this game yet this video is still interesting

  • @syrenet
    @syrenet 2 года назад

    never seen this fella alive so long time, only now realized that the "buttons" on it's crotch is actually eyes.

  • @sebastianalancliffordthomp4114
    @sebastianalancliffordthomp4114 3 года назад

    Preemptive guess as to what’s going on as soon as I heard attackspeed is fully functioning on a move that scales shot count but not for its normal function, I’m guessing part if the animation/timing or double tap isn’t registering attackspeed, some sort of input cooldown or similar, so the AS is less effective and the gap will grow exponentially as AS rises

    • @sebastianalancliffordthomp4114
      @sebastianalancliffordthomp4114 3 года назад

      I was right! Someone else did he maths based on his results and found the flat gaps in terms of frames XD

  • @LordAziki
    @LordAziki 3 года назад

    I managed to get to the point I could mostly use suppressive fire constantly through normal gameplay. It was only after killing an elite, but I had brainstalks and could kill another elite by spamming suppressive fire before the buff ended. Funny enough, I also tried just using double tap since the information on the wiki seemed weird. I couldn't kill elites fast enough to renew brainstalks with double tap, but I could with suppressive fire. Both have a proc coefficient of 1 and are stated in game to do 100% damage per shot, so the only reason simply reducing cooldowns to half a second would let me kill faster with suppressive fire is the fire rate being higher than double tap's.

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

    I love how it cuts out at the end, poor console Andy’s though

  • @SuperFountainboy
    @SuperFountainboy 3 года назад

    I noticed that huntress when using the flurry primary will start shooting less arrows than usual with a high enough attack speed. It is supposed to be 3 arrows a shot (without crit) but eventually be 2 and even one with a high enough attack speed

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

    I'd never be able to express how entertaining your videos are. Thanks

  • @Rena_Soar
    @Rena_Soar 3 года назад

    Alway gotta take a dig at frag nades whenever possible

  • @GameMa5Ter2O01
    @GameMa5Ter2O01 2 года назад

    wish they buff frag grenade to explode on hit, it'll make it alot better but it's still worse then suppresive fire

  • @Cr0de5_
    @Cr0de5_ 3 года назад

    Something worth noting that I didn't see in the video is that bleed works for counting hits despite the 3 second length of effect due to the fact that the bleed timer resets upon getting another stack of bleed
    It confused me so I figured I'd share with the class

  • @chrisnotaperson8127
    @chrisnotaperson8127 3 года назад

    I don't know if you read comments on old videos so I'm dropping this here. I've never seen you mention the synergy between Artifact of sacrifice and the stages where the game clock doesn't advance. The void fields, the gilded coast and Bulwark's Ambry present areas where you can technically get unlimited items without advancing the difficulty of your run, at least if I understand everything correctly. I've been running without command and found it more fun to see how the build develops but I will drop into Bulwark's on command at my first loop to fill out my build with things I've missed just to give my runs better chances.

  • @darkhummy
    @darkhummy 3 года назад

    They have to implement attack speed caps in games because sooner or later the animation quality will degrade in that it won't reflect the attacks well at a certain attack speed/play too quickly etc.

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

    Wouldn't it be because attack speed is multiplying an animation, not just a "fire rate" like a gun.
    Mul-T is firing a gun where the animation is so quick that it doesn't add to the "delay" for missing shots.

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

    Love the woolie vids!! Just started playing risk of rain again

  • @Vikushu
    @Vikushu 3 года назад

    Congratulations Woolie. You proved that wiki's aren't always reliable.
    Beside that, like others have mentioned, this appears to be an animation issue. The reason Mul-T's line up so well is because they have less frames of animation than Commando & Huntress. The only real way to solve this is to create new attack animations.
    At the limits of Risk of Rain's sped up animations, Commando fires on the 3rd frame. Huntress fires on the 2nd, and Mul-T (because they have none) fire on the 1st. Because it's a 60 FPS game, it lines up with the shots / second.

  • @TheStarForge
    @TheStarForge 3 года назад

    I feel like Woolie is the type of guy that would research why some boxes of Lucky Charms have more marshmallows than others. Or why Lay's chips have so much air in them... these are mysterious that I would like cracked.