User:Loser
OK guys, Time to say goodbye. From September I start studying on university, so I will have to put Oni aside before I will make myself familiar with whole new life. Even now I do things I should done before (like find accomodation in that city where university is) so forgive me I am not contributing.
- I did my part of TRAM work, another part is up to user:ONIrules. I did it so only attack parts and vulnerability/invulnerability were modified, so it should cause no crashes. Ideal as basic combat system framework for Edition (then you can add wall collisions, modified throws etc.).
- But before I go, I want to share my ideas with this community. There is one person called Skrylar who has a bit higher chance to obtain IP rights for ONI than we had back in the past. If he suceeds, I think we should make fight system a bit deeper. I mean: we have punches/kicks and throws. That is all. It IS enough, but in case we want to impress outside world, we should redo it a bit.
- Following paragraph is just my babbling, so in case you have any comments for it, write them into my discussion, but please DO NOT write comments like "yea, and how would you like to make new animations?" or "OK, now tell me how would you want to import this into ONI?". Following paragraph is just combat system as I thought it out over last 2 years, which can be coded for ANY game that should have h2h fighting. And into ONI too, if we could. Also, bear in mind that it can have factical mistakes in it (basically some nonsense I overlooked). Point them out, it will help me.
- Or some good programmers (Neo, Pierre) can try out some ideas from it, if they are interested.
Loser's attempt for working combat system
1.) General
- controls are classic ONI + block button (can be any button, for example side button on mouse or "c")
- Human model is (in terms of this combat system) divided into 5 zones. See picture:
- File:Body1.PNG
- REASON: head and body are classic. Pelvis is here because when attack aims crotch (common in martial arts) it is quite low part of body and body block animation looks weird. Upper/lower legs - read further to find why there is not only one legs part.
- Each attacks bring with itself info similar to TRAM + some extending info. As you read this article you will see which extra info.
- High/low attack flags are gone. Read combat section to see my attempt to solve blocking.
- Engine detects which bodypart caused collision. I mean, if some attack animation can damage with both right leg and arm, engine registers which one caused collision first. Read further to see why.
2.) Regular combat - kicks, punches, headbutts, knees, blocks etc
- block
- to do standard block do nothing, step away or hold block button. No difference between results (no "better/worse" block) if you use some of these methods.
- attack animation does NOT carry info about high/low attack. Zone where collision happened determines.
- When standing, defender can block all zones EXCEPT for lower legs zone.
- When crouching, defender can block lower legs, higher legs and pelvis zone. Body and head are vulnerable and are not guarded.
- NOTE: I know, crouching is a bit problematic as all those zones "fold" one into another when character crouches. But I think if lower legs zone expands a bit as character crouches, it could cover bottom 1/2 of crouched body which is our goal - to guard shins and feet. If you are hit in head or body while crouched, you get hit.
- When defender is blocking and some attack collides with some zone, engine checks if that zone can be blocked in current stance of defender. If yes, engine picks correct block animation (block/heavy block/stagger) of selected zone and applies it. Due to this, pelvis and higher legs zone exist. To make it look more cool.
- NOTE: That is all for block, it is just rough concept, I know. Goal is to make blocking dynamic, so when you fight on uneven ground (common thing in game like ONI) you have to guard not PRE-selected part of body, but you have to guard those parts where attack actually collides. So if someone is higher than defender and executes leg sweep attack, he hit defender's head. In ONI you have to crouch, otherwise it is taken as unguarded attack (and you play feet knockdown animaton even tough you were hit in the head). By using this system, you have to block such an attack in stand. Engine pick head or body animation (depends on height differenciation). If you crouch and attack still hits you (height differ is not that great), and it hits you in head or in body, you eat it.
- attack
- here it is simple. Sucessful hit generates corresponding hit animation. Hit animations are dffered by zones, so if high kick causes knockdown and it hits lower legs (attacker is lower than defender), it causes lower legs knockdown. Maybe not 100% realistic, I know, but simple and looks like it should work.
3.) Throws
- Start of throw should be same as in ONI, just be close and press forward + some attack. I thought about other ways, but this suits beat'em up gameplay the best.
- ground throws are present in this system, altough only a few classes can use them (tankers). These are performed by pressing low punch near grounded enemy. Only low punch, not kick. Why? Escapeability, read below.
- no mounted position (vale tudo). Doesn't fit fast paced open combat of beat'em up.
- only front and back throws are present in this idea, side (like in Tekken) would be too much.
- chain throws are present, each one has it own anim type (throw_comb_1, throw_comb_2 etc). Max chain is 4 (starter + 3 other throws),it can be broken by defender after EACH one (to add to fast pace combat, not like in Tekken where defender has only two moments to break away).
- apart from ONI, throws are escapeable in this system.
- throw sequence - has additional link to broken throw sequence (animation attacker transits to if defender escapes)
and frame of throw animation when this transition should happen.
- thrown sequence - has additional link to broken thrown sequence, has encoded command needed for escape (some keypreses), has specified number of frames for how long defender can input escape command, has specified frame when it should transit to broken thrown sequence if escape was sucesful.
- REASON: I take it that we cannot make some "close to reality" physics. We are fans. So this is best solution in that case. From the beginning to some point of the throw defender can input escape command. If he succedes, both animation continue (mayber write a message on screen "escape sucessful"?) up to their respective frame, then they transit to their respective broken animations. This way we can set up nicely looking escapes (fluently transiting) while we can limit time for input command (because in case of some moves there should be so big time gap between start and frame of transition that it would be impossible to sucesfully perform that throw)
4.) Parries/reversals
- Now this is something completely missing from ONI and I understand why. Make it easy to use and everybody will turtle (defense/reverse), make it hard to use and it will be "for video only" or "hups? it worked?" This is why I set up block button.
- Only parry can be done from stand, reversal is extension of parry
- There are 4 parries so chance of abuse is reduced a bit
- to do a stand parry, just stand and press block + kick for stand kick parry ||||| block + punch for stand punch parry.
- For low parries, either you are in crouch stance and perform same as above or (if you stand) you do block + crouch + kick or punch.
- For special parries (headbutts, body slams etc)press block + both attacks or crouch + block + both attacks (low spec parry).
- Stand parry works on head/body/pelvis zone impacts, crouch parry works on higher/lower legs zone impacts
- Using parry makes you completely unguarded except for specified attack in specified zones as was written above.
- Unsucessful parry does not have extensively long retreating animation to "punish user", but it lasts long enough to let the enemy take advantage if he is fast in thinking.
- How to execute suceessful parry: make it just before enemy's attack lands and make it so impact zone attack collides into is correct for this parry (see above). Here comes engine deciding what to do.
- Punch parry works for colliding attack bone being fist, wrist, arm. Left or right, that is decided later for another purpose.
- Kick parry works for colliding attack bone being foot, calf, thigh.
- Special parry works for colliding attack bone being head, neck, chest, mid, pelvis (butt attack ? ^_^)
- In case of sucessful parry, attack deals no damage and enemy is forced into state parried and play proper animation while defender changes state from parry_attempt to parry animation. Parried lasts a bit longer than parry, so defender can turn into attacker. While in parried animation, attacks/throws/movement is forbidden, but parried character can defend (block) and crouch. This further reduces usefullnes of parry, making it rather combo stopper than thing which should be used on its own.
- Sucessful parry cannot be escaped, once parried, you have to defend otherwise defender (who took initiative) will land some blows on you.
- In order to make things look good, engine checks which bones collided, so possible sucessful parry animations are:
- stand left punch parry / stand right punch parry
- stand left kick parry / stand right kick parry
- crouch left punch parry / crouch right punch parry
- crouch left kick parry / crouch right kick parry
- special stand parry / special crouch parry
- NOTE: In order to make this work correctly, stand/crouch parries of selected bones must be almost identical. I mean: stand left punch parry and crouch left punch parry both swing opponent's hand in a same manner, but other than that those two animations can vary. That is because if there is uneven ground, it can happen that you do high punch parry and you sucess on enemy's low punch because he is higher. Now you play "stand right punch parry" while he plays "crouch right punch parried". If you make those two too different, it won't look good. If you make them similar, it will look OK.
- Which type of "parried" and "parry" animation to play is determined by:
- limb (lt/rt; kick/punch) which made contact
- stance (stand; crouch) of each one separately
- Reversal is basically throw, which is called from state "parry", so it has to be pressed immediately after sucessful parry (animations of parries are meant to be short for sake of fast paced combat and in order to make it harder to pull of a reversal). Being just a special sort of throw, it can be escaped as a throw. Advantage is that you can use punch or kick one, disadvantage is that if defender manages to break away, you are again under pressure (thrown_broken is meant to be a bit shorter than "throw_broken" in case of reversals, so the one who was thrown can take advantage.)
PHEW. That is all. It is rough concept, just ideas without any proof in form of some code. Sorry. But I think that this way it can be fast, variable, fun and thrill. Lots of possibilities, ability to counter those possibilities. Timing grows more crucial. In this form, special spamming would be lessen because they could have been parried then punished if they are abused. --Loser 13:47, 13 August 2008 (CEST)