Author Topic: Kof basic hitdef issues  (Read 2259 times)

Offline devilgenemugen

  • Soldier
  • **
  • Posts: 93
  • I WANT WIVES!
    • View Profile
Kof basic hitdef issues
« on: February 11, 2013, 08:40:24 AM »
Hi, these few weeks, I have been studying the cns file of a kof character in the hitdef section. So far, I have doubt about a few parameters when I was looking through, experimenting and modifying Vans's Iori_Wls cns file. Here are the lists of parameters that I have doubt with:

Damage, getpower, givepower:
For Damage, I notice that my character's attack value is different in each and every single hit. Like for Iori's Far light punch in kof2002 , I get these life value damage in every single attack for the first round in decreasing order:
102 -> 96 -> 91 -> 85 -> 79 -> 74 -> 68 -> 62 -> 56 -> 50 -> 44 -> 38 -> 32 -> 26 -> 20 -> 15 -> 10 -> 5
second round, I got:
102 -> 96 -> 90 -> 84 -> 78 -> 72 -> 66 -> 60 -> 56 -> 54 -> 48 -> 42 -> 37 -> 31 -> 25 -> 19 -> 14 -> 8 -> 3
third round, I got:
102 -> 96 -> 90 -> 84 -> 78 -> 72 -> 67 -> 61 -> 55 -> 50 -> 45 -> 40 -> 34 -> 31 -> 28 -> 22 -> 17 -> 12 -> 7 -> 2
and so on, this same goes for other basic attack and I am not sure how to calculate them since their damage value varies every rounds and matches.

For getpower and givepower, I manage to get the givepower value and unlike life damage, their value stay the same in every single attack for example air strong punch attack. Using air strong punch as an example, I use the formulae damagevalue/maxlife*1000, I substitute the values in, the value of the damage value is 1 and the max value is 64 so I evaluate: 1/64*1000 and I get 15.625, rounded off to the nearest whole number I get 16 which is correct I think  :-\ but for getpower, I get the value larger than Vans's Iori which is 7/64*1000 and I get 109 where Vans's Iori is 94. I am not sure how does he manage to get 94?



Sparkxy:
I have tried some ways to get the axis but I didn't get it correctly. This is how I do:
First, I capture a screenshot using far light punch as an example:



then I add the screenshot to the sff file, using the cross hair axis to measure and also using photoshop as well as using paint to measure the sparkx,y using the selection tool, I get 150, 136 in all the three ways:





I add the value in the far light punch's hitdef which is sparkxy = 150, 136 and the spark did not appear, it may have been shift further away:

I am not sure are there a correct way to extract the sparkxy data accurately from source game?

Priority:
I am not sure how to get this data from kof2002

Pausetime, guard.pausetime:
I manage to get the P2_shaketime's value but did not get the P1_pausetime's value. What I did to calculate the P1 pausetime is when my character attack his opponent before the spark appear, I start to count the tick by pressing shift+spacebar for example, I calculate Iori's far stand strong kick from King of Fighters 2002:





I start to count the tick from this screenshot onward:















After the next animation is played which is this screenshot:

I stop counting the ticks which is 16 ticks but in vans's Iori_WLS, his P1_pausetime is 12 instead of 16 which I have no ideal how did he calculate to get 12.

Guard.ctrltime:
I do not know what is the best way to get accurate ticks for this, I manage to get Iori's light attack Guard.ctrltime correct. what I did is I attack my opponent using the far light punch, I let my opponent to guard the far light punch attack and once the 1st guard spark appear, I start to count the ticks by pressing shift+space and pressing my opponent's basic attack key. For instance, I keep pressing the shift+space and my opponent's basic attack till he stop guarding and perform his basic attack which I get 17 ticks which is correct even when I assign macro to my opponent to perform his special move, I still get the same correct result. I also can get the hard attack which is 28 but sometimes, I get to 30 or 33 ticks for hard attacks so I am not sure which one is the correct way to calculate the guard.ctrltime?

Air.velocity:
I manage to calculate the y axis value which is -6.5 but for the first value, I got -4.4 and by right it is -4.5 which I look at Vans's Iori_WLS. I manage to get the crouching Hard Strong Kick correct which is -1.75 , -10.25341796875 but could not get -4.5 for the other basic attack air.velocity value.


Offline Vans

  • Walrus Force Leader
  • Administrator
  • Medic
  • *******
  • Posts: 1328
    • View Profile
Re: Kof basic hitdef issues
« Reply #1 on: February 11, 2013, 09:25:55 PM »
Basic move damage is random in KOF2002. Most of the time, it is a difference of 2 units of damage.

The only way to get fixed values is to check KOF2002UM.

Power, these calculations were made during the dark era of not having artmoney, lol. I measured the pixels and divided.

64 pixels / 6 pixel damage difference = 9.2857142857142857142857142857143, * 1000 = 93.75 which scales up to 94.

This is something I forgot to correct afterwards. Also, I do believe the maximum power value in KOF2002 is 66, and not 64 as stated in the table, this needs checking.

sparkxy

There's no reliable way of getting sparkxy that I know of. I usually try to get the y position of the spark relative to P2, and run with that.

Other times, I align it by eye (I am a very lazy person when it comes to this). Keep in mind that the x-parameter depends on P2.

Pausetimes, keep in mind pausetime is the number of ticks the character will be frozen for.

In Iori's example, his standing D lasts for 4-frames. If this attack hits, Iori is frozen in this frame for 16 ticks.

This means that the pausetime is the difference between these two values, 16-4 = 12. 12 ticks of pausetime.

Keep in mind that if the mugenversion is 1.0, these become 11 for the attacker.

Calculating guard pausetimes uses the same principle.

Priority. Impossible, there is no "priority" concept in KOF, everything is decided via CLSN.

The only reason we all keep using these priority parameters is because they were standards set by previous KOF creators (CCIronmugen, OrochiKOF97 among others).

We keep them in order to maintain whatever sense of balance we managed to achieve. But technically, priority should be the same for every single move.

Guard.ctrltime

This value starts counting from pausetime onwards. To calculate, hit an opponent. As soon as they enter the blocking animation, start counting down.

For Iori's close HP you can clearly see it lasts for 28 ticks.

Air.velocity. KOF uses exponential friction for several air gethits, it has only been recently that we've started adding these via custom states.

The values you see in Iori_WLS are merely approximations to replicate the same velocity structure using MUGEN's calculations.

The only way around this is making everything a custom state, but by doing that you are violating a fellow author's gameplay standards. This (in my case) should be avoided as much as possible, and due to this, I've decided to use approximations for these values in order to preserve my opponent's states.



« Last Edit: February 11, 2013, 09:28:00 PM by Vans »


Offline devilgenemugen

  • Soldier
  • **
  • Posts: 93
  • I WANT WIVES!
    • View Profile
Re: Kof basic hitdef issues
« Reply #2 on: February 13, 2013, 08:54:48 PM »
Quote
Basic move damage is random in KOF2002. Most of the time, it is a difference of 2 units of damage.
The only way to get fixed values is to check KOF2002UM.

In that case I need to upgrade my PC so that it can run PS2 emulator :S I also check for the other kof series, they are pretty much the same too but most of the value is always the difference of 5 units damage unlike kof2002. I wonder is it practical to use the damage difference value that appear the most number of time of the damage value? because I was thinking that before kof2002um was released, kof creators may rely on other kof game that have random damage, so how do they add the damage value in?

Quote
Power, these calculations were made during the dark era of not having artmoney, lol. I measured the pixels and

divided.
64 pixels / 6 pixel damage difference = 9.2857142857142857142857142857143, * 1000 = 93.75 which scales up to 94.
This is something I forgot to correct afterwards. Also, I do believe the maximum power value in KOF2002 is 66, and

not 64 as stated in the table, this needs checking.

It is indeed 66 pixel:

but when I calculate the air strong attack by pixel, it is 7 pixel, so 7/66*1000 = 106 which the value is incorrect and is pretty confusing :/

btw, how did you get 9.2857142857142857142857142857143?

Quote
Pausetimes, keep in mind pausetime is the number of ticks the character will be frozen for.
In Iori's example, his standing D lasts for 4-frames. If this attack hits, Iori is frozen in this frame for 16

ticks.
This means that the pausetime is the difference between these two values, 16-4 = 12. 12 ticks of pausetime.
Keep in mind that if the mugenversion is 1.0, these become 11 for the attacker.
Calculating guard pausetimes uses the same principle.

Where do I calculate his standing D that is lasts for 4 frames, at the beginning of the animation before he hit his opponent or after he hit his opponent?

Quote
Priority. Impossible, there is no "priority" concept in KOF, everything is decided via CLSN.
The only reason we all keep using these priority parameters is because they were standards set by previous KOF

creators (CCIronmugen, OrochiKOF97 among others).
We keep them in order to maintain whatever sense of balance we managed to achieve. But technically, priority should

be the same for every single move.

I just checked your Iori and orochikof97's clark, all of them have the same priority, light attack = 6, hit, strong attack = 5, hit etc. Hope you don't mind if I may use these values for my character?


Quote
Air.velocity. KOF uses exponential friction for several air gethits, it has only been recently that we've started adding these via custom states.
The values you see in Iori_WLS are merely approximations to replicate the same velocity structure using MUGEN's

calculations.
The only way around this is making everything a custom state, but by doing that you are violating a fellow author's  gameplay standards. This (in my case) should be avoided as much as possible, and due to this, I've decided to use approximations for these values in order to preserve my opponent's states.

I see, but the crouching hard kick is pretty accurate even if it is merely approximations :p :

X vel Int: 1
X vel Float: 49152
Y vel Int: 10
Y vel Float: 16608
X vel = 1.75
Y vek = 10.25341796875

but for your Iori_lb, it is very different, air.velocity = -5.5,-8.5 maybe I'll check it if I can manage to run kof2002um in my pc.