1. Hey Guest, looking for Virtua Fighter 5: Ultimate Showdown content? Rest assured that the game is identical to Virtua Fighter 5: Final Showdown so all current resources on here such as Command Lists with frame data, Combo Lists and the Wiki still apply. However, you can expect some VF5US specific changes to come soon!
    Dismiss Notice

VF Theory

Discussion in 'General' started by Namflow, Apr 29, 2003.

  1. Namflow

    Namflow Well-Known Member

    While in AI class, learning about herustic functions and min-max theory, I began thinking about it's application to VF.

    First, a heuristic function (scoring function) is a function that takes a game state and returns a value (such as an integer) representing how valuable that game state is.

    Min-Max is an AI algorithm for a two player turn based game. The algorithm builds a search three for all of the possible states of the game based on a heuristic function. Then it assumes that it (max) will always take the route to gain the maximum heuristic value at every choice, and that the opponet (min) will always choose the next state where Max has the lowest maximum choice available.

    So basically:
    Max assumes min always chooses the path where max has the smallest maximum choice.
    Min always assumes max will take the path where min will have the biggest minimum choice.

    In VF terms, what this means is: Suppose you are playing against Wolf and he blocks one of your throw counterable moves. Assuming your opponet can break two throws, Wolf will do this third most powerful throw, because he knows his opponet will always eliminate the two most powerful.

    But back to the heuristic function. Let's look at how we could use heuristic functions to find out which character is the best, what moves are the best, who has the best throwing game, etc.

    For attacks (by attack I mean non-throws) you'd have to take into consideration damage on normal hit and MC, execution time, frames on block, normal hit, and MC, as well as how dodgeable it is. Does it sebaki, does it dodge moves? You could also take into considerion how far a move will move an opponet either forward or backward, if a move will knock an opponet into a wall or out of the ring, etc...

    For a character's throwing game, you would have to take into consideration the number of different directions a character has throws in, if the character has low throws, maximum damage of a throw ending in each direction, etc. You could also take in to account how vulnurable a throw is if it is reversed. You'd also have to consider ring position - a surprise exchange becomes far more deadly than a splash mountain near the edge of a ring.

    You could also take into consideration how difficult a move is to execute. Does it require modification, guard cancelling, stance specific combos, distance specific combos, character specific combos, or anything else to guarantee it's maximum damage? If a move has 1 follow up for maximum damage for all characters/all stances, is that better than a combo that requires more work?

    So what player is, in theory, the strongest? You'd have to rate each characters moves, their throwing games, how much damage they take off of other character's moves (is character x at more of a disadvantage because they eat more damange off of this move?) So once you found a good heurstic for a character's attacking game, throwing game, how vulnurable their weight makes them, then you would need a heuristic for throwing them all together (what's more important, good throws or good attacks?)

    I'm sure I missed some stuff as to what one might say goes into making a move good, but this is just throwing some ideas out there. But with some work and study it could be possible to come up with a heurstic function for measuring attacks, throws, body weight, and anything else you can think of to determine who, if anyone, is "the best". Any thoughts?
     
  2. PhoenixDth

    PhoenixDth Well-Known Member

    you have waaaaay too much time /versus/images/graemlins/tongue.gif
     
  3. Pai_Garu

    Pai_Garu Well-Known Member

    Give it up, you simply can't equate this game into an equation... otherwise this game would be no fun.... Making this into a tic tac toe game means someone can always win out by following certain formula, which is totally not true in this game. You can't account for the differences of human reaction and thought process for each player, so this whole idea is pointless from that point onward. For example, someone who relies on luck to win will already invalidate this who "rating system"

    /versus/images/graemlins/laugh.gif
     
  4. Jacky_San

    Jacky_San Well-Known Member

    /versus/images/graemlins/confused.gif /versus/images/graemlins/frown.gif /versus/images/graemlins/confused.gif /versus/images/graemlins/frown.gif /versus/images/graemlins/crazy.gif

    Could you repeat the part about the uh...things?
     
  5. Llanfair

    Llanfair Well-Known Member

    [ QUOTE ]
    NinjinSan said:

    Give it up, you simply can't equate this game into an equation... otherwise this game would be no fun.... Making this into a tic tac toe game means someone can always win out by following certain formula, which is totally not true in this game. You can't account for the differences of human reaction and thought process for each player, so this whole idea is pointless from that point onward. For example, someone who relies on luck to win will already invalidate this who "rating system"

    /versus/images/graemlins/laugh.gif

    [/ QUOTE ]

    Yes, human reaction, luck etc, all are things that can render such an equation - not invalid - but too complex for even the most powerful computers to date. /versus/images/graemlins/smile.gif However, there is much fun in this even in its simplified form. I think that if we took a good crack at it, the results would be quite interesting.
     
  6. Namflow

    Namflow Well-Known Member

    [ QUOTE ]
    NinjinSan said:
    Give it up, you simply can't equate this game into an equation... otherwise this game would be no fun.... Making this into a tic tac toe game means someone can always win out by following certain formula, which is totally not true in this game. You can't account for the differences of human reaction and thought process for each player, so this whole idea is pointless from that point onward. For example, someone who relies on luck to win will already invalidate this who "rating system"
    /versus/images/graemlins/laugh.gif

    [/ QUOTE ]

    It would be really difficult, but in the thread about NA videos someone suggested that we take a look at if it would be satistically possible to determine which moves are better than others. Obviously two moves with the same damage potential, one with faster execution and better recovery on block, and no other differences, which one is better. How a player actually uses a character can't be determined, but if there was a way to quantify these things, then it might be possible to find out which character a player with good yomi will have the easiest time with.

    Questions like who has the best floater could be reduced, if one wanted, an oversimplified heuristic: "Which move (that floats) has the most damage potential, best recovery, best execution, and best relation between those 3 elements?" Now, every element of that equation is easily found besides how a relation between the other 3 elements should be. Surley if all elements were the same besides damage, then the most damage would win. But what is a good trade off between risk and reward? Between execution speed and reward? Between execution speed and risk? It would be possible to write a function that takes these values into account and spits out a number. How accurate that number would be, however, would be a different story...
     
  7. tzgorr1

    tzgorr1 Well-Known Member

    [ QUOTE ]
    PhoenixDth said:

    you have waaaaay too much time /versus/images/graemlins/tongue.gif

    [/ QUOTE ]


    Hhahah I was thinking the same thing.

    lol Namflow, you're making it more complicated than it really should be...

    but then again this game itself is complicated. What would I know anyhow? I'm a self-proclaimed beginner. /versus/images/graemlins/smile.gif
     
  8. kbcat

    kbcat Well-Known Member

    NinjinSan: I think you're missing the point. It's about determining and quanitifying the properties of each character. It's not meant to say that if player A is using character X and player B is using character Y then player A will be the winner because X > Y. You're right when you that it's impossible to quanify that. But, what Namflow wants to do is to determine the the strengths and weaknesses of each character so we can determine if Wolf's throwing game is better than Jeff's. Did Jeff's throwing game really get worse when EVO came out, etc.

    Namflow: I think it's a good idea. A useful and fun exercise. It would be nice if we had an app that can crunch the numbers for us. Then we could compare VF4 characters versus EVO, or EVOa versus EVOb.


    cheers,
    kbcat
     
  9. Pai_Garu

    Pai_Garu Well-Known Member

    Well, I understand what you guys are trying to get at, but I just think taking on a project like this would mislead people into thinking a character is inherently better than another character. Although that is arguably true and definitely somewhat proveable, it all just seems fairly unuseful to have just hard computed numbers to look at. If you guy really want to take on such an excercise, you can easily just quantify everything. Start with a base number like difficulty of move. For example, quantify the number of commands needed for input and add or subtract based on it's difficulty versus an average number of commands, such as [6][6][K] = 3 - 0(assuming 3 is the average number of commands for a move), [2_][4][6][P]= 6 ([3][3][4][6][P] = 5 - 2 (offset value of 2 from the average) for higher difficulty due to modifying, this is to offset the end result, we want higher the number = better the move. So a difficult move would yield a lower score). Then multiply that by a damage quantifier like divide the damage by 10. so 30dmg move you'd multiply the base by 3. From then on you can simply add or subtract the number of frames under each situation.

    For example if a theoretical move [6][6][K] takes 25 damage, -5 on block, +2 on hit, float on MC. You would do

    ( (3-0) * 2.5) - 5 + 2 + 5 (for float, debatable) = 9.5

    Tack on a bonus modifier for special properties like special mid, special high, knockdown on hit, stagger, etc. It shouldn't be too hard. Take some sort of average of the total at the end for a number. (To prevent characters having an advantage by having a larger movelist, like vanessa) That should give a good idea on how good a character is overall, although very very biased, but could be interesting nonetheless. Have fun /versus/images/graemlins/laugh.gif
     
  10. Chill

    Chill +40 DP Content Manager Shun Gold Supporter

    PSN:
    Chill58
    XBL:
    Chill PKG
    [ QUOTE ]
    But, what Namflow wants to do is to determine the the strengths and weaknesses of each character so we can determine if Wolf's throwing game is better than Jeff's. Did Jeff's throwing game really get worse when EVO came out, etc.

    [/ QUOTE ]

    I would have thought that even if you could include every possibilitiy, there would be two problems in determining something like Wolf vs. Jeff in throws:

    a) If it was determimed to find one outcome, such as who has the highest damage potential, then it's not too hard to find that, but it's practical use is not necessarily very useful if you want a throw that will produce a ring out. If you could determined all the various aspects such as: Ring out potential, damage potential, okizeme potential, how the throw will break the flow of the gameplay, and what effects that will have on winning etc., and then take all those aspects and get an average to say that Jeff > Wolf at throws, it would still be an average, and wouldn't mean that Jeff would be any better at getting a Ring Out with a throw because he has that better average.

    b) The other thing is actual use during a match, as it's fine if you could say that Jeff > Wolf at throws, but if the player of Jeffry can't get a throw in because of bad guessing games and tactics, it won't mean that the Jeffry player will get more throws/better throws than the Wolf player during a match.

    You can calculate something like that assuming that all things are even, but in a VF match they aren't.
     
  11. kbcat

    kbcat Well-Known Member

    [ QUOTE ]
    Have fun

    [/ QUOTE ]

    You hit the nail on the head. It's just a fun little diversion for people who are (used to be) math majors, comp sci, elec/comp eng, etc. -- people who like numbers, algorithms and heuristics.


    cheers,
    kbcat
     
  12. replicant

    replicant Well-Known Member

    It just seems that the sheer amount of variables attached to each move would make it nigh impossible to reasonably chart them. When you start figuring in MC, mC, BS, Wall Hit, Frame Advantage/Disadvantage, Circular, Semi-Circular, etc. and even potentially it's usefullness against each and every move within the game it's becomes such a monstrous undertaking that even with a sizeable team working full time we are looking at months to years for proper experimentation and even a rough draft of the analysis. I would love to help out with this, but the first thing that has to be defined to help create finite functions is to determine common variables that apply to all moves. Now we need a PC Emulated VF AI mode. /versus/images/graemlins/laugh.gif
     
  13. SummAh

    SummAh Well-Known Member

    [ QUOTE ]
    people who like numbers, algorithms and heuristics.



    [/ QUOTE ]


    No wonder I read it n go ' are?' huhuhu
    me n maths...no go~

    imo, this is kinda uhmmm...pointless...fun for u maths guys..but for peeps like me...it's like trying to describe human behaviour with an equation, which if it were possible, meaning..oh well...psychologists should just pack up..go home..attend a maths degree~
     
  14. Llanfair

    Llanfair Well-Known Member

    [ QUOTE ]
    <font color="orange"> It just seems that the sheer amount of variables attached to each move would make it nigh impossible to reasonably chart them. When you start figuring in MC, mC, BS, Wall Hit, Frame Advantage/Disadvantage, Circular, Semi-Circular, </font>

    [/ QUOTE ]

    Well, the whole idea of any effective scoring function is how well you simplify your variables to make the problem solvable. From the things you listed, some I wouldn't consider in how I would setup the system. Wall hits, for example, are not important imo. Nor would backstaggers - I assume that's what BS was.
    Coming up with these assumptions is what gets scoring functions flack. But this is to be expected. No scoring function is perfect, the assumptions to make it solvable inherently make it theoretically flawed. Based on this, it's pretty easy to see why engineers in particular like working with them - engineers are trained to make complicated systems simple enough to make reasonably good solvable designs.

    [ QUOTE ]
    <font color="orange">and even potentially it's usefullness against each and every move within the game it's becomes such a monstrous undertaking that even with a sizeable team working full time we are looking at months to years for proper experimentation and even a rough draft of the analysis. </font>

    [/ QUOTE ]

    I think you're missing the point a bit here. The function itself does not ever included a variable that considers 'usefulness'. The function is assigning all the moves a score - the score is the usefulness. It's the output of the function. You base your scoring on all the data that you've got (within reason) and generate a hierarchy of move scores to mathematically rank the character movelists. Usefulness is not factual - it's subjective and therefore has no place in a mathematical function.

    [ QUOTE ]
    <font color="orange">create finite functions is to determine common variables that apply to all moves </font>

    [/ QUOTE ]

    But we have this already /versus/images/graemlins/smile.gif These are the constants provided for us. Damage, Execution, Recovery, Attack Level, Range are just some of the numbers we can use. Weighting these variables is the trickiest part (and the part most open for debate of course).

    <font color="yellow">.cheers. </font>
     
  15. Namflow

    Namflow Well-Known Member

    I thought a good idea to weigh damage versus recovery would be the change in life if a move were to hit, versus if it were to be blocked and properly countered with the highest guarnateed damage.

    Of course, this would have to take into consideration each character. Like against Jacky, if the doublepalm is blocked jacky get's a free d/f+p,p,p -> pounce. Ouch! So you would take into consideration the damage jacky takes if the double palm hits, and the damage you take if the double palm is blocked, and go from there. Of course, another thing to take into account would be the double palm's speed and distance.

    But I do think building a function to score the moves would be really interesting. I'll throw something together maybe when I have more time
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice