How would I go by this fast-paced combat?

So, I am currently making a game that is mainly focused about PVP and PVE combat, although, I would like it to have a special combat system, a very complex combat system,
Here is a gif that really inspired me to go towards this style:

I am not a beginner to scripting or combat systems, but I really don’t know where to start, is that an animation or an actual script?
Another game that inspired me was SoulShatter’s Test Place with the impressive and smooth combos and abilities.

Thank you for your time. :slight_smile:

Hmm, if you are looking to recreate what’s in the gif you might as well just start by examining the gif frame by frame and noticing what is happening although there’s a lot going on in that gif I’m not surprised that you are overwhelmed.

From what I believe DahNoobidiah uses procedural animation which sadly was already leaked by exploiters and made its way onto youtube. Here is an example with the Noob Bat from his script battles game which I played a lot and was really fun and unfortunately ran out of players due to lack of updates I presume :frowning:.

Local script code sample from the bat which does the animation and as you see thats a lot of CFrame C0’s being lerped.

for B = 1, 30 do
            swait()
            lerpz(RJ, "C0", RJC0 * cf(0, 0.8, 0) * ang(rd(-25), rd(0), rd(-50)), 0.1 + B / 80)
            lerpz(N, "C0", NC0 * cf(0, 0, 0) * ang(rd(-18), rd(0), rd(40)), 0.1 + B / 80)
            lerpz(RS, "C0", RSC0 * cf(0, 0, 0) * ang(rd(-30), rd(-5), rd(160)), 0.1 + B / 80)
            lerpz(RS, "C1", RSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.1 + B / 80)
            lerpz(LS, "C0", LSC0 * cf(-0.8, 0, -1) * ang(rd(-60), rd(-20), rd(-150)), 0.1 + B / 80)
            lerpz(LS, "C1", LSC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.1 + B / 80)
            lerpz(RH, "C0", RHC0 * cf(0, 0, 0) * ang(rd(-15), rd(-20), rd(-10)), 0.1 + B / 80)
            lerpz(RH, "C1", RHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.1 + B / 80)
            lerpz(LH, "C0", LHC0 * cf(0.5, 0, -0.4) * ang(rd(-5), rd(60), rd(-110)), 0.1 + B / 80)
            lerpz(LH, "C1", LHC1 * cf(0, 0, 0) * ang(rd(0), rd(0), rd(0)), 0.1 + B / 80)
            hnd.CFrame = hnd.CFrame:lerp(rarm.CFrame * ang(rd(-110), rd(0), rd(0)) * cf(0, 0, -1), 1)
          end

As you see that’s a lot of lerping and it definitely is similar to this community tutorial:

For the actual hit detection I believe you can research yourself it has been done before and I believe it’s a region3 hitbox system like most fighting games with a few physics stuff for the knockback.

Keep in mind that the only way to know what exactly is happening in that gif is to ask DaNoob yourself why not try contacting him? Plus there might be other better alternatives like animation blending which I’m not too experienced with.

5 Likes

DaNoob seems to be temporarily away from twitter.

Adding onto this, Black Magic II uses Roblox’s animation system, Animtracks and all that, combined with scripted effects. It also uses a region3 hitbox system as far as I know, though there are definitely alternatives. (such as this cool raycast hitbox system) You can remove the fade time for animations to make them feel more snappy, if you don’t feel like coding too much.

However, I would try to create your own blending function. For example,
PlayAnim(nextattack) would get the current C1 (I think Roblox animations transform C1? I might be wrong they might transform C0 instead.) of all the character’s Motor6Ds, then convert the animation you want to play into a keyframe sequence –This’ll probably work-- and then use TweenService to transform to the first keyframe of that. Since the function I linked earlier yields, it might be wise to do this once during loading and use that instead. I’ve been wanting to do this myself (and then post it on the devforum) but I am lazy.

5 Likes