• Welcome, Guest. Please login.
 
April 25, 2024, 07:45:55 PM

News:

Visit our IRC channel, #TrinityMUGEN on irc.sorcery.net!


Interactive KOF Character Tutorial

Started by KoopaKoot, February 07, 2013, 04:09:34 PM

Previous topic - Next topic

devilgenemugen

Quote from: Jesuszilla on August 15, 2013, 09:10:55 PM
Try using PCSX2 1.0 from the official site. It's more stable.
Hooray! It is working very well, but a bit slow especially kof2002um, could be the stage issue:
Testing PCSX2 emulator in my PC Part 1
Testing PCSX2 emulator in my PC Part 2
I used the SVN version, thanks for your help  ;)

Quote from: KoopaKoot on August 16, 2013, 01:17:50 PM
What Jesuszilla said. 1.0 is the very best when it comes to pcsx2. If you would like, I could explain how I would synch a table for the ps2 games.
Sure, I would be glad if you could explain it :) since winkawaks' method is quite different from pcsx2's method as I used your method to synch:


the value of the p1 vel X and p1 vel Y's value move a little, but it looks pretty wrong to me  :P

devilgenemugen

Hi, I was reading Sander 71113's tutorial about ripping sound, I have downloaded Neojuke but I do not know how to use Neojuke as there aren't any instruction in the readme file on setting up Neojuke yo use it. I have also managed to enable dip2-5 to see the sound code value. Are there any other ways to rip sound from kof98 using winkawaks?

Jesuszilla

I would suggest to use caname to rip from arcade rather than Kawaks.


Just try to keep things peaceful.

devilgenemugen

Seems like I can't get to load Caname as I can get the game selectable like this:

when I double click on the game, nothing happen, it still stay on that screen. I am not sure is it window compatible problem?
I download caname from here: http://mamespi.sourceforge.jp/

Jesuszilla



Just try to keep things peaceful.

devilgenemugen

it is also the same, nothing happen  :'(

devilgenemugen

It works in Window XP computer, luckily I still got my Window XP computer :iori: Now I will try ripping the sound and get use to the emulator, Thanks Jesuszilla for introducing the Caname emulator to me  :)

devilgenemugen

Quote from: KoopaKoot on April 04, 2013, 02:11:46 PM
I believe it's time to continue this tutorial. Unfortunately this is gonna be mostly theory as the character I was using for this tutorial isn't ready for this stage yet. But I'm sure if you've been following you'll be able to understand. :)

Part 3-1:  Coding. Constants and Overrides

This is common mugen info but lets go over it once more. You'll have to set the player variables for the character. For [Data] you may want to add "Power = 5000" if you feel like you need to. You may also want to lower airjuggle as you won't be needing it.

For [Size] change ground.back/front to 15 and air.back/front to 12. For head.pos and mid.pos, I would recommend using sprite 5010,0 to get these. My reasoning is that most moves that have the player bound to an opponent's head use this sprite. Also the head position is usually closer to the position the character's head is during their stance than any other get hit sprite. for head.pos try to make it so the position is the top of the players head. I recommend using Scal's Chris or Clark to check to see if  head.pos is correct (mid.pos is somewhat less important lol).

[Velocity] and [Movement] will be explained in the artmoney section of this tutorial.

Now for overrides. I don't really wanna explain each one of these, but I guess I have no choice.

State 0. Remove all that silly vel stuff. Having your character sliding around while neutral is unnecessary. Do they same for states 10 and 11

I'll explain the jump states in the artmoney section as well

For the run/back dash states, I would split those into 3 parts. Start, dash, and end. Here are some examples:

Quote;-----------------------------------------------------------------------
; DASH_FWD
[Statedef 100]
type    = S
physics = S
anim = 99+var(1)*30000
ctrl = 0
velset = 0
sprpriority = 1

[State 220,2]
type = ChangeState
trigger1 = AnimTime = 0
value = 101

[Statedef 101]
type    = S
physics = N
anim = 100+var(1)*30000
ctrl = 0
velset = 0
sprpriority = 1

[State -3, dash]
type = PlaySnd
trigger1 = time = 1
value = 2+(var(32)*10),8
loop = 1
channel = 27

[State 100, 1]
type = VelSet
trigger1 = 1
x = const(velocity.run.fwd.x)

[State 100, 2] ;Prevent run from canceling into walk
type = AssertSpecial
trigger1 = 1
flag = NoWalk

[State 100, 3] ;Prevent from turning
type = AssertSpecial
trigger1 = 1
flag = NoAutoTurn

[State 100, VarSet]
type = VarSet
trigger1 = !time && prevstateno != 102
var(26) = 0

[State 100, VarSet]
type = VarSet
trigger1 = time > 10
var(26) = 1

[State 220,2]
type = ChangeState
trigger1 = command = "holdup"
value = 40

[State 100, GoToCrouch]
type = ChangeState
trigger1 = Time > 9
trigger1 = Command = "holddown" && Command != "holdfwd"
value = 15

[State 101, 6]
type = ChangeState
trigger1 = Time > 9
trigger1 = command != "holdfwd"
value = 102

[Statedef 102]
type    = S
physics = S
anim = 101+var(1)*30000
ctrl = 0
velset = 0
sprpriority = 1

[State 102, 3]
type = StopSnd
trigger1 = time = 0
channel = 27

[State 100, 4]
type = ChangeState
triggerall = var(26)
trigger1 = command = "holdfwd"
value = 101

[State 220,2]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;RUN BACK
[Statedef 105]
type    = S
physics = S
ctrl = 0
anim = 105+var(1)*30000
sprpriority = 1

[State 105, 3]
type = ChangeState
trigger1 = animtime = 0
value = 106

;---------------------------------------------------------------------------
; RUN_BACK
[Statedef 106]
type    = A
physics = N
ctrl = 0
anim = 106+var(1)*30000
sprpriority = 1

[State 105, 1]
type = VelSet
trigger1 = 1
x = (const(velocity.run.back.x)*exp((const(velocity.airjump.back.x))*(time)))

[State 105, 1]
type = VelSet
trigger1 = !time
y = const(velocity.run.back.y)

[State 105, VelAdd]
type = VelAdd
trigger1 = time > 0
y = const(velocity.airjump.fwd.x)

[State -3, hop]
type = PlaySnd
trigger1 = !time
value = 2+(var(32)*10),12

[State 105, 3]
type = ChangeState
trigger1 = Vel Y + Pos Y >= 0
value = 107

; RUN_BACK2 (land)
[Statedef 107]
type    = S
physics = S
ctrl = 0
anim = 107+var(1)*30000

[State -3, land]
type = PlaySnd
trigger1 = !time
value =  2+(var(32)*10),2

[State 106, 1]
type = VelSet
trigger1 = Time = 0
x = 0
y = 0

[State 107, CtrlSet]
type = CtrlSet
trigger1 = time = 2
value = 1

[State 106, 2]
type = PosSet
trigger1 = Time = 0
y = 0

[State 106, 4]
type = ChangeState
trigger1 = animtime = 0
value = 0
ctrl = 1

If you are wondering what var(1)*30000 is, that's something I use when a character has alternate animations for moves (May Lee, Leona etc). State 15 is something Scal came up with and will be explained later.

For hop back, I need to find the friction for it which is this:
airjump.back = -2.55
but I am not sure how do you calculate the airjump.back Hop back's friction?

Jesuszilla

What exactly do you mean by "friction"?


Just try to keep things peaceful.

devilgenemugen

When I am looking at Koopakoot's Kyo Hop back's constant in KyoCNS.cns:
airjump.back = -0.06453852113757117167292391568399                ;Hop friction
I could not figure out how to get this value

Websta

That number is the Natural logarithm. Back dashes in KOF games usually work like this:

Character jumps back. They have a value pulling them downwards and another value that's applying friction, pushing them forward slightly.

Koopakoot is just making things look complicated by using MUGEN's hardcoded variables instead of just using the numbers like a normal person :P

devilgenemugen

December 04, 2013, 10:50:57 PM #41 Last Edit: December 05, 2013, 12:13:46 AM by devilgenemugen
So for Kyo's Hop back animation, when he start to hop back which is at the third tick like this:

there is a slight friction pushing him forward as he start hoping, just like frictional force. For downwards, is it after the tick where he reach the maximum height before he start handing on the ground? I am kind of confuse as my first time :P Is there any velocities I can use from the Hop Back animation to calculate this?

Websta

If you want to get the natural logarithm is:

-Divide the horizontal velocity on the 2nd tick by the horizontal velocity on the 1st tick.

-Then press the "ln" button on your calculator.

devilgenemugen