YesNoOk
avatar

RYU (Read 228334 times)

Started by JustNoPoint, April 04, 2014, 04:16:29 pm
Re: RYU
#341  June 03, 2014, 02:44:43 am
  • avatar
  • ******
Anything with state type air is affected by a permanent yaccel, so usually you just pick a yaccel that looks right for when your character is hit in the air (with hitvels at 0), and then for the jump, you adjust the starting vel depending on how high you want the character to go. The rest is physics : gravity is a permanent and constant downward acceleration (and it depends on your weight). With the jump vel (the force of the jump), those are the only two parameters there are. To get a floaty jump like Dhalsim, you use a low yaccel and a low jump vel : the yaccel is constantly applied while in the air, but since it's low, it's slow to be noticeable. A low jump vel will still take him high because the low gravity will take a while to reduce, then invert, the velocity.
If you can't get the jump to look right for some reason, the only alternative is to cheat by not giving your jump an air state type (or more accurately, a physics = N), and then adjust the vel manually depending on the position to make it float at the highest point before going down - essentially changing the effect of gravity depending on what point of the jump you are at. But it's a lot harder to make it look natural and I really don't think anyone does that.
If I struggled to the end of my determination, to the end of my way of life with my followers, if the result is ruin, then this ruin is inevitable. Grieve. Shed tears. But you cannot regret.
Re: RYU
#342  June 03, 2014, 03:59:58 am
  • ******
    • www.justnopoint.com/
I'm going to play with the manual adjusting method for my own purposes because at some point I still want to accurately make a DS game.

But for this game I am assuming that everyone would prefer just doing the jumps the typical way? Prioritizing making it feel similar by how long he stays in the air and the height.
Re: RYU
#343  June 03, 2014, 05:04:42 am
  • ******
    • www.justnopoint.com/
Updated constants.cns, sff, and air file. Timings on jumps, landing, stand to crouch, crouch to stand, and all basics (except angled jump attacks) are finished,
Re: RYU
#344  June 03, 2014, 05:18:04 am
  • ****
  • Busy, busy, busy
    • www.trinitymugen.net/forum/index.php
I thought I added corner push and a dampener?

-
http://www.Trinitymugen.net/Hosted/CFJ2/
-
thanks again Vans/Jesuszilla!
Re: RYU
#345  June 03, 2014, 05:21:17 am
  • ****
  • Busy, busy, busy
    • www.trinitymugen.net/forum/index.php
Iirc, the usual yaccel in Alpha 3 was like .325 or .375? Some had bigger drops. After frame skip calculation, its .5(some don't follow this like Dhalsim). The normal y vel can be found with artmoney, but iirc, you add 2(subtract 2 lol) to it. Iirc, its frame skip related

-
http://www.Trinitymugen.net/Hosted/CFJ2/
-
thanks again Vans/Jesuszilla!
Re: RYU
#346  June 04, 2014, 01:27:27 am
  • ******
    • www.justnopoint.com/
What I did was overlay a shot of CVS2 Ryu at the peak of his jump over mugen Ryu at the peak of his jump (comparing 2nd player Ryu's feet on the floor). And I made sure that he stayed in the air the same number of ticks as in CVS2.

Updated the air file. Timings on everything should be accurate now. Also tweaked several CLSNs after more extensive testing was done to see how/where the CLSN1's hit in source. They last much longer and are much larger than SFA3 and SF3.

Next goal is to tweak all the hit stuns, slide times, make sure all the sparks are aligned correctly and that the moves are set for the correct hit attributes/call the correct hit animations.
Re: RYU
#347  June 04, 2014, 06:10:15 am
  • ****
  • Busy, busy, busy
    • www.trinitymugen.net/forum/index.php
Do you have that training mode character? It makes checking advantages much easier

-
http://www.Trinitymugen.net/Hosted/CFJ2/
-
thanks again Vans/Jesuszilla!
Re: RYU
#348  June 04, 2014, 04:47:37 pm
  • ******
    • www.justnopoint.com/
Yes I sure do. Though it won't be very useful in this case IMO
Right now I'm taking the data straight from the source. Obviously there is implications of slightly faulty timings due to the turbo frame skipping, but they should be quite accurate.

However, Training will be packaged with the beta versions of the game/characters. After everything is finished is when things like that will be important so we can adjust and fine tune as feedback comes in.

In other words: I have enough variable things to look at while trying to fix the properties of the moves correctly. I sure don't want to try and guess if a +4 adv is going to break the character over a +2 right now =p
Re: RYU
#349  June 04, 2014, 07:49:23 pm
  • ******
    • www.justnopoint.com/
I'll slap myself when I see the simplicity in this. But help me out here.
Spoiler, click to toggle visibilty

I need to have this not carry over to a second hit. Basically I need this to stop working after AnimElemTime = 12 or AnimElem =5

I have tried adding triggers to do this with !AnimElem = 5 and !AnimElemTime(13) >=0 but to no avail.

If you want to see the full coded move.
Spoiler, click to toggle visibilty
Re: RYU
#350  June 04, 2014, 08:03:59 pm
  • ****
  • Busy, busy, busy
    • www.trinitymugen.net/forum/index.php
You want the animation to change to avoid a second hit? Why not just add a !movereversed && !movecontact trigger for the second hit? It won't hit.

-
http://www.Trinitymugen.net/Hosted/CFJ2/
-
thanks again Vans/Jesuszilla!
Re: RYU
#351  June 04, 2014, 08:05:40 pm
  • ******
    • www.justnopoint.com/
No, what's happening is that when the second hit connects it makes the move go back to animelem = 4. It's applying the hit override state to both hits.
Re: RYU
#352  June 04, 2014, 08:11:20 pm
  • ****
  • Busy, busy, busy
    • www.trinitymugen.net/forum/index.php
Set var(2) to a value that won't trigger it after whatever frame?

-
http://www.Trinitymugen.net/Hosted/CFJ2/
-
thanks again Vans/Jesuszilla!
Re: RYU
#353  June 04, 2014, 09:31:17 pm
  • ******
    • www.justnopoint.com/
Re: RYU
#354  June 04, 2014, 09:36:56 pm
  • avatar
  • ******
Without going in and testing it, I'm getting quite confused at what you want and what you get.
triggerall = AnimElemTime(2) >= 0 && AnimElemTime(7) <= 0
change to
triggerall = AnimElemNo(0) = [3,4]
does that help ? There's no reason this should allow the changeanim to happen when on the animation element of the second hit, if that is what you're trying to do.
or just AnimElemNo(0) = 3 since it looks like that would loop when on the 4th elem.
If I struggled to the end of my determination, to the end of my way of life with my followers, if the result is ruin, then this ruin is inevitable. Grieve. Shed tears. But you cannot regret.
Last Edit: June 04, 2014, 09:42:48 pm by DKDC
Re: RYU
#355  June 04, 2014, 11:01:20 pm
  • ******
    • www.justnopoint.com/
That actually works! I wonder if JZ just didn't think about it of if there was a particular reason he went with the more complicated AnimElemTime method.

To be sure it was working properly I increased the 1st attack frame to 22 and had the opponent land on it. It still only played the 1st frame for 22 ticks then went onto the pause time for the 2nd frame like it should. I'm going to go back and simplify the others like this as well.

Thank you!
Re: RYU
#356  June 04, 2014, 11:10:28 pm
  • avatar
  • ******
It's probably a matter of preference and what you find easier to read, but now that I look more closely at what you have and what Jesuszilla posted in the tips section --
triggerall = AnimElemTime(2) >= 0 && AnimElemTime(7) <= 0
This trigger when the current animation element is between 2 and 7, and that includes 5, 6, 7. You mixed that up with just plain time, I assume you were trying to trigger it between the second and seventh tick because the second element lasted 5 ticks or something.

The different AnimSomething triggers can be confusing at first, they seem close but you easily miss the nuances (especially in the format they can use, like how you can write "AnimElem = 2, >= 57" but you can do that for the others). You can either try to study them all very closely before trying to copy-paste-tweak something you don't fully get, or just pick one and learn how to use it for everything. I like AnimElemNo(0) the best myself to know the current element, it's the one you can use in most situations with cancels and whatnot (since they often depend on the frame currently displayed and not how many ticks have passed). When you're learning, it's easier than trying to first figure out which one you want and then you still have to figure out how to use it.
If I struggled to the end of my determination, to the end of my way of life with my followers, if the result is ruin, then this ruin is inevitable. Grieve. Shed tears. But you cannot regret.
Re: RYU
#357  June 04, 2014, 11:25:57 pm
  • ******
    • www.justnopoint.com/
You are absolutely correct. And I see where I got mixed up.
Quote
So, let's use Kyosuke as an example:


You see the circled 3 ticks? Fighter Factory displays this. What it's saying is, "3 ticks will have passed after this frame ends." The current frame lasts 2 ticks, so 2 ticks AND ONLY 2 ticks of that frame need to play, regardless of any pause. That's why we have the time offset variable.

Now, that's AnimElem 2, and we want it to skip to the next AnimElem, which is 3, and then pause there. The time you use for pausetime is the EXACT pausetime you define in the HitDef.
Since, as you said, I didn't fully grasp this trigger I mistook what was being said in the quote above as my time and not frames. I was thinking that the >= 0 was referring to the time starting from tick 2 or something. It made "wrong" sense in my head at the time at least.

Correcting that made JZ's coding work too. He was never wrong (I should have never doubted you JZ)

Looking a fool aside at least now I fully understand AnimElemNo -_-
Re: RYU
#358  June 05, 2014, 03:56:54 pm
  • ******
    • www.justnopoint.com/
I tried working on this from around 9PM to 1 AM and never could figure this out.

The issue I'm having now is that I need the ignorehitpause to be active for 2 whole frames instead of just 1.

In Ryu's far standing SP the animation plays through 2 frames before pausing on the 3rd.

Code:
    [State 220, Time Offset]
    type = VarSet
    trigger1 = moveContact = 1
    var(2) = Time
    ignorehitpause = 1
    persistent = 0

    [State 220, Play Anim1]
    type = ChangeAnim
    triggerall = AnimElemTime(4) >= 0 && AnimElemTime(5) <= 0
    trigger1 = hitPauseTime = [1,0 - (8 - Var(2))]
    value = anim
    elem = 5
    ignorehitpause = 1

    [State 220, Play Anim2]
    type = ChangeAnim
    triggerall = AnimElemTime(5) >= 0 && AnimElemTime(6) <= 0
    trigger1 = hitPauseTime = [1,6 - (11 - Var(2))]
    value = anim
    elem = 6
    ignorehitpause = 1
I tried several other methods to code it last night but the above is what I suspect is closest to how it should work. However the 0 in Play Anim1's hitpausetime does not work. The 1st hit causes hitpause, elem5 then plays correctly then elem 6 has no hitpause either. What should I do to make the hitpause not activate for Play Anim1?

EDIT: Well crap. I guess I wasn't awake last night. Fresh eyes saw the issue after I posted it.

Code:
        [State 220, Time Offset]
        type = VarSet
        trigger1 = moveContact = 1
        var(2) = Time
        ignorehitpause = 1
        persistent = 0
     
        [State 220, Play Anim1]
        type = ChangeAnim
        triggerall = AnimElemTime(4) >= 0 && AnimElemTime(5) <= 0
        trigger1 = hitPauseTime = [1,11 - (8 - Var(2))]
        value = anim
        elem = 5
        ignorehitpause = 1
     
        [State 220, Play Anim2]
        type = ChangeAnim
        triggerall = AnimElemTime(5) >= 0 && AnimElemTime(6) <= 0
        trigger1 = hitPauseTime = [1,11 - (11 - Var(2))]
        value = anim
        elem = 6
        ignorehitpause = 1

I needed to keep the hitpause being the appropriate number. The trigger looks to see if the hitpause is = to 11. Last night I was thinking it told the code what the hit pause of the move should be overwriting the old one.

Note there is one difference in this method. The last frame should be stuck for 10 ticks. In the other instances I needed to figure in the # of ticks the move had and subtract from the pause time. But in this one I had to add 1 tick to the total pausetime making it 11 for a pausetime of 10

Not sure why that is, but it worked.

EDIT2:
Woot! It looks like we may have a bit of a standard with hittime, slidetime, and ground.velocity for light, medium, and strong attacks!!! That will speed things up nicely!
Last Edit: June 05, 2014, 04:33:02 pm by Just No Point
Re: RYU
#359  June 05, 2014, 08:09:39 pm
  • ******
    • www.justnopoint.com/
I still have to get the data from getting hit in the air and the guard time hit properties. But all normal hit properties are finished!

I have updated basics, constants, air, and command

The distance between a close attack coming out and a far attack is accurate to the pixel. Thank you artmoney!
Here is a video comparing the source with MUGEN. Pretty close. Keep in mind the PS2 emulator tends to run somewhere between 59-60FPS so that accounts for the slight delay.
http://justnopoint.com/mugen/Ryu/Ryu%20Basics.avi

Video is about 24MB
You'll notice the crouching SP that misses in this video when it should not have. I fixed that already. I also fixed all the idle states for each attack after the video (many were off since I started). I don't think the idle stuff causes an issue in the comparison though. Let me know if you see anything offhand in the comparison I should tweak.

EDIT: Updated basics and specials.cns had a var issue causing special attacks to not hit properly =p
Last Edit: June 05, 2014, 09:05:32 pm by Just No Point
Re: RYU
#360  June 06, 2014, 11:29:47 am
  • ******
I'm updating the .sff and the .air files for the new frame I made for the Standing Medium Kick.

Done.
---
I forgot to crop the sprites.
Last Edit: June 06, 2014, 11:34:48 am by Alex Sinigaglia