Options

Let's Chat About Defender AI - Current state, behind the scenes, upcoming changes

1356789

Comments

  • Options
    Manup456Manup456 Posts: 887 ★★★★
    @DONZALOOG1234 They said dice but didn’t mention the part about them being loaded 😂
  • Options
    ElthanElthan Posts: 82 ★★
    Very nice of them to finally aknowledge something was off, but the only things I care they fix are:
    1. AI lightning reaction
    2. Can the AI stop holding block and their specials for 30 seconds or more ? Especially in AQ, AW and battlegrounds where time's limited

    Thank you !
  • Options
    Colinwhitworth69Colinwhitworth69 Posts: 7,185 ★★★★★
    Love this kind of info. Thanks.
  • Options
    TyphoonTyphoon Posts: 1,752 ★★★★★
    Cautiously optimistic...

    Change is good. Except in MCOC (based on history).
  • Options
    Suros_moonSuros_moon Posts: 455 ★★★
    edited October 2023
    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
  • Options
    Suros_moonSuros_moon Posts: 455 ★★★
    edited October 2023
    Kabam Jax said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means? This is what the post we are all responding to says is happening. If you set those by hand thats not random generation. YOU got confused and incorrectly tried to correct the comment you responded to by conflating sampling from the weights with setting the weights after assuming information that was not provided anywhere in this update.

    Furthermore you skipped around the question: if you think manually setting their biases is not the literal definition of AI manipulation, then what constitutes AI manipulation? You cannot describe a behavior short of literally having a kabam employee sitting down playing as the AI that doesnt fall under that umbrella. With how crudely you’re trying to define AI manipulation Kabam could literally make new champs become literal perfect opponents under the guise that “not every champ will have the same profile” and not be considered to have manipulated the AI
    Before this gets further out of hand: Bitter is right.

    Yes, it is a random dice roll to what action the attacker takes, but it is not an equal chance for every champion in every situation. It wouldn't make sense to create a defender that heavily relies on X to effectively defend, then not encourage them to use it.

    The important distinction to make is that the AI is not adapting to you, the attacker, but rather to their own kit and profile.

    The same way "fully predictable" would be bad, "absolute random" would also be bad.
    Jax, buddy, you have in the original post, that the weights themselves are “randomly generated”. Can you explain what that statement means if you are now implying that those weights are NOT in fact randomly generated? You can’t have it both ways. No one is contesting the dice roll aspect, you said the the weight of the dice is randomly assigned. Heres the screenshot in case you forgot:




    RANDOMLY weighted. Not deterministically based on whichever champion we have at hand. Ill ease this into an analogy: I hand you a die and tell you that the die is weighted randomly. In reality the one comes up 80% of the time ie P(D=1)=.8 and you can pick the other 5 weights as you please. Now, the outcome of the ROLL is a random process but those weights ARE FULLY DETERMINISTIC. The die should not have the same weights two times in a row if the weights themselves are random variables. Ill take it on good faith that this was a typo but these two things cannot be true at the same time
  • Options
    GroundedWisdomGroundedWisdom Posts: 36,265 ★★★★★
    Here we go with the die. @DNA3000 can you interject?
  • Options
    LuciferDevilLuciferDevil Posts: 11
    is the game server down at this very moment? can anyone please confirm?
  • Options
    AverageDesiAverageDesi Posts: 5,260 ★★★★★

    Which random action exists that allows to AI to wait out some debuffs (like a power sting) before launching a special but not when its a bleed?


    The random action of confirmation bias and survivorship bias
  • Options
    phillgreenphillgreen Posts: 3,706 ★★★★★

    Which random action exists that allows to AI to wait out some debuffs (like a power sting) before launching a special but not when its a bleed?


    The random action of confirmation bias and survivorship bias
    Haha.

    Most likely.
  • Options
    @Suros_moon

    Example, 100 basis points for RNG.
    Stipulated that Action-1 occupies spots 1-10.
    Action-2 is 11-35 (heavier weighted action, based on champion)
    Action-3 is 36-40 (a rarer occurrence action)
    Etc, etc.

    Now, the RNG generator choices an EXACTLY RANDOM number between 1 and 100. A 100-sided dice of exactly equal chance to generate any particular number between 1 and 100. And then the lookup is done to determine which action corresponds to that particular RNG roll.

    Note, this is basically how Feature Crystals work (higher chance at the Feature champ), or even those months when we have RIFT-Based Side Quests (odds of rolling the path with the higher level, more desired, item on it is lesser chance that others).
    But, in both those actual cases, it is still RANDOM RNG.
  • Options
    Yukzii_IIYukzii_II Posts: 89
    I don’t understand half of this, I’m a man in a giants world
  • Options
    Maat1985Maat1985 Posts: 2,237 ★★★★
    edited October 2023

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
  • Options
    Maat1985Maat1985 Posts: 2,237 ★★★★
    in short.
    you are confusing a champ sending different requests and data to the AI and then interpreting the results differently than another champ as "changing the AI"
    this is not changing the AI.
    the AI code and formulas stay unchanged for all.
    it is the data sent and the way the results are interpreted that vary.

    different interpretation does not mean changing.
    they both use the exact same AI just using different parameters.
  • Options
    Shadow_ShooterShadow_Shooter Posts: 270 ★★★
    I don’t care how AI works but they’re making conscious decision:

    - Can’t punish their heavies, even when the animation to hit them is complete after their heavy.
    - They will throw a special, the moment you dash at them
    - They will light intercept like very few people can
    - They will wait till power stings on them expire (if no taunt)
    - Even taunted, they may just ignore it if it suits them
    -…
  • Options
    Manup456Manup456 Posts: 887 ★★★★
    edited October 2023
    Kabam needs to stop the nonsense because they setup the champion profiles to be annoying and use the kits they have to do this and then they have some RNG dice select from all these terrible actions they add and this is why it’s so bad and few leaked files have already shown this to be what they do and makes perfect sense why we have the issues.

    They are also using different profiles for champs in different content because in BGs they don’t act the same as they do in Arena.
  • Options
    Suros_moonSuros_moon Posts: 455 ★★★
    edited October 2023
    Maat1985 said:

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
    If you don't think the weights should be random take that up with kabam. That’s what the post said is happening (I even showed a screen shot exactly where that text is). Heres the quote again since you’ve missed it twice now:

    “Our AI works on a years old system of *randomly weighted* actions”.

    AI interpretation. Cute. You made up a term to make it sound nicer. If thats the hill you choose to die on then sure. Ill call this “interpretation”.

    What you are describing is called inheritance and classes. If you change the weights you’ve changed the code and fundamentally altered how the champion works. Thats why its A NEW CLASS. It may call the same functions to “block” or “dash”, but what makes AI different is *when* it chooses to call certain functions. Of course you dont rewrite the literal “how to block” code. Its when the AI will do so, how frequently, under which circumstances that matters. Thats what you manipulate. It’s behavior is fundamentally different from the base class. Do you actually think that because their base is the same that makes everything you alter past that identical?? Furthermore the code in each individual champions kit IS part of the AI code, just their individual AI’s behavior.

    You are fundamentally confused. You have base AI and you have branches from that base for each champion each of which represents a unique AI (otherwise they would play the same). This is the first time, as far as I know, that kabam has ever openly stated they manipulate behavior at the individual champion level.

    You are correct that a fully random AI is bad. We know that the AI is not fully random. My point this whole time was that when Jax wrote that the AI was just a random set of weights and dice rolls the post was intentionally misleading and clearly could not map onto reality as evidenced by the rapid progression in the optimal behavior of the AI. He then came out with a supplement to walk back how “random” the word was supposed to imply. Randomness does not optimize. It is random. NOW after prodding, they have come out and started to actually open up starting with expressly stating that they are selecting for certain behaviors based on what champ is defending
  • Options
    AverageDesiAverageDesi Posts: 5,260 ★★★★★

    Maat1985 said:

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
    This is the first time, as far as I know, that kabam has ever openly stated they manipulate behavior at the individual champion level.

    Not exactly the same but when mordo was buffed it was written into his kit that he got defensive when he gets a power gain buff. It always existed but explicitly stated. More champions too have such lines in their kit iirc
  • Options
    Suros_moonSuros_moon Posts: 455 ★★★

    Maat1985 said:

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
    This is the first time, as far as I know, that kabam has ever openly stated they manipulate behavior at the individual champion level.

    Not exactly the same but when mordo was buffed it was written into his kit that he got defensive when he gets a power gain buff. It always existed but explicitly stated. More champions too have such lines in their kit iirc
    This is actually a really fair point. I would say that keyed us in but now we know that its standard practice
  • Options
    Maat1985Maat1985 Posts: 2,237 ★★★★
    edited October 2023

    Maat1985 said:

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
    If you don't think the weights should be random take that up with kabam. That’s what the post said is happening (I even showed a screen shot exactly where that text is). Heres the quote again since you’ve missed it twice now:

    “Our AI works on a years old system of *randomly weighted* actions”.

    AI interpretation. Cute. You made up a term to make it sound nicer. If thats the hill you choose to die on then sure. Ill call this “interpretation”.

    What you are describing is called inheritance and classes. If you change the weights you’ve changed the code and fundamentally altered how the champion works. Thats why its A NEW CLASS. It may call the same functions to “block” or “dash”, but what makes AI different is *when* it chooses to call certain functions. Of course you dont rewrite the literal “how to block” code. Its when the AI will do so, how frequently, under which circumstances that matters. Thats what you manipulate. It’s behavior is fundamentally different from the base class. Do you actually think that because their base is the same that makes everything you alter past that identical?? Furthermore the code in each individual champions kit IS part of the AI code, just their individual AI’s behavior.

    You are fundamentally confused. You have base AI and you have branches from that base for each champion each of which represents a unique AI (otherwise they would play the same). This is the first time, as far as I know, that kabam has ever openly stated they manipulate behavior at the individual champion level.

    You are correct that a fully random AI is bad. We know that the AI is not fully random. My point this whole time was that when Jax wrote that the AI was just a random set of weights and dice rolls the post was intentionally misleading and clearly could not map onto reality as evidenced by the rapid progression in the optimal behavior of the AI. He then came out with a supplement to walk back how “random” the word was supposed to imply. Randomness does not optimize. It is random. NOW after prodding, they have come out and started to actually open up starting with expressly stating that they are selecting for certain behaviors based on what champ is defending
    you do not need to be a rocket scientist to know and assume that every single champion would be coded to behave in a way that suits their kit.

    a champ with heavy as big part of kit, like doom will have a heavy bias,
    some champs will have a more defensive bias, some will have a bias toward a sp1 or a sp2 instead of the other, its just common sense to expect and understand this.
    i don't think kabam have ever needed top explicitly say this. it just makes sense.

    as far as kabam saying they never change the AI,
    well yeah they don't, if they write code for a new champ and give that a champ a particular bias, there is nothing changing the AI the AI remains the same for everyone.
    the only thing that changes is a new set of parameters added for a new champ to interpret the AI in a particular way.

    random does not mean fully random, random can mean random within a set of parameters.
    random with a particular bias.
    fully random = 1-100 with even chance
    random within a range - 30-100
    random with a weighting - 1 - 100 with a higher chance to be closer to 100
    a combination of both.
    random with a multiplier - 1-100 then x 1.3
    all those are random but will result in different behavior.
    call it "manipulation" all you want but its just standard. how else is a champ going to have a preference to do any action unless the "manipulate" the AI?
    if the champ does not "manipulate" the AI then all will be the same.

    also they have stated before that some champs have certain biases like doom with heavies and a few others.....
  • Options
    phillgreenphillgreen Posts: 3,706 ★★★★★
    New "random" ability I havent seen before.

    AI reparrying the second hit of a special after blocking the first.

  • Options
    HungaryHippoHungaryHippo Posts: 777 ★★★★
    edited October 2023
    It doesn’t really feel like the AI has changed and more that it’s reaction time has been set to zero.

    The reason it appears to chain specials is maybe because it realizes you’re not holding block after the forth hit an looks at “no block” options and fires it off without hesitation.

    AI doing full MLLLM combos tho is a bit odd.
  • Options
    CoMinowCoMinow Posts: 297
    I can’t believe so many people just swallow whatever nonsense they vomit out.. if the AI “rolled the dice” everytime to determine its next, it wouldn’t behave there way it does is such a predictable manner… can you predict the roll of just one 4 sided dice repeatedly? No. Can we all predict in certain game modes when the “AI” isn’t going to throw specials in bgs. How about dropping its block to special during your combo ( only when you have already hit your special button)

    It defies logic to refer to an rng engine as AI. There is no such thing as AI that doesn’t assign different values to actions when determining which to perform. The literal purpose of AI is to try to calculate the best action for a determined result

    None of this AI message says anything AT ALL about recovery time issues, or the “AI” exploiting mechanical issues. They claim the “AI” hasn’t been changed in years. Example: Mordo does not have a new kit. There’s no change to a fight between him and another unchanged champ. Yet mordo wont hold his block during powergain when you throw a heavy while he’s not against the wall… why would he only back up? If it’s a random action, then why doesn’t he punish your heavy by attacking? He can still perfom a light medium heavy special block or evade correct?

    Hows your parry working?
    Your champs still walk forward for no reason?
    I personally love standing there after a parry with my hands at my side when I’m trying to heavy 😂
    Or my new favorite… getting reparried on my first light attack when I’m supposed to hit the block. Peni or using hulkling after an intimidate, or the wonderful game nodes that require you to hit the block

    Hey Kabam why doesn’t the “AI” have the issues? I’d love to get parried and still be able to punish them after I’m stunned
  • Options
    Suros_moonSuros_moon Posts: 455 ★★★
    Maat1985 said:

    Maat1985 said:

    Maat1985 said:

    XSquad said:

    I’m sorry but I am calling BS in the randomness of it. You have champs like Chavez and Mysterio spamming heavies from across the screen and it just so happens to be a major part of their kits. Nick fury will throw sp1 into blocks but it takes forever to get him to throw his sp2. These are intended and not random.

    Different champs have different biases. But it’s still random. Chavez has a *chance* to throw a heavy, she sometimes doesn’t but often does. It’s just a higher chance compared to Spider Gwen for example. That doesn’t mean neither are random.

    You’re mixing up “random chance” with “the same chance”

    Kabam have never said that every champ has the same AI profile. They still all roll a dice, but some are rolling different ones.
    If you manually adjust the weights for certain AI thats literally AI manipulation (what else could that phrase even mean?).The post is claiming that hidden layers in the engine are affecting the AI which is markedly different
    If you can find where Kabam said every champ has the same AI profile you might have a point. Until then, unfortunately not so much
    BWHAHAHA. Do you know what “randomly generated weights” means?
    Do you?

    It doesn’t mean kabam decided oh let’s make this weight to block this random number and then stuck to it. It means that any given champion can have a chance to do something assigned to them.

    Trying to frame Kabam creating their game as AI manipulation is one of the takes of all time, I’ll give you that.
    yep its literally how coding works for anything.

    every champ has a fully random chance to throw a heavy.
    if champ rolls a dice to decide if to heavy or not.
    eg.
    lets say all chances use a d20 (20 sided dice)
    heavybias="1-10"
    where 1 means thy have a low chance to heavy, say 1 in 20 chance
    and 10 means they have a high chance, say 15-20


    what this means is that every champ has the set randomness in their profile, but has a bias set so that they play more inline with what their abilities are.
    call it "rigged" all you want, but its just a standard bias. and it makes sense that it would be used.

    they would do this without changing anything at all in the AI.
    the AI would do the exact same thing.
    particular biases would be set in the champs abilities.

    people are confusing "changing the AI"
    with champs having fight style preferences.

    the AI would have for example a set chance to heavy, every interaction where the AI could potentially throw a heavy a dice would be rolled to decide if it throws a heavy or not.
    base would be say 1, 6, 12, 18 = yes and the rest = no.
    a heavy bias would be set in the champ and say for mordo 2,3,8,9,13,19,17 also = yes.
    for example.
    or it could be
    rolla a d20
    if result is above 16 then heavy.
    mordo has a multipler of 2, which doubles his chance to heavy.
    so if the d20 returns an 8, mordos multiple comes in after that and acts as if it was a 16 therefore does a heavy.

    there is many ways to write this but would be biases set in the champ that controls the way the AI is run.
    not any change to the AI itself.
    people who understand coding will get this.
    those that don't well it shows they will not understand this.

    when i was coding in games take loading a train.
    there is a base loading speed that applies to every train, unless a value is specified in each train.
    so when you code a train it loads at a speed of say 10tonne per second.
    however if you add a line of code into the train
    loadingspeed=20 it will now load at 20tonne per second
    loadingspeed=5 it will now load at 5tonne per second
    nothing here changes the AI at all. it just adds something that makes a difference for the one vehicle.
    the base AI is still the same.

    it is doing things like this is how the champs can play a way that suits the champs.
    otherwise game would be too boring.
    every champ would be block, 5 hit combo, block 5 hit combo, where is the fun?
    it makes sense for mordo to have a heavy bias.
    and we wanna see a champ like hype have a sp1 bias.
    imagine if hype had a sp3 bias. that would suck.

    The problem in your code is that you are not RANDOMLY GENERATING the weights. You set the biases manually which means that you always have the exact same die. Mordo, for example, is ALWAYS rolling a dice with the faces you listed. Thats not a “randomly generated weight”.

    The corrected code would take in the number of actions given the current state (say of length k), then use np.random.rand(k) to produce a vector of weights. You would then normalize to make sure the summation goes to 1 and THOSE would be the weights where the i’th position corresponds to the i’th action’s chance of occuring. The die is then rolled according to those weights. Furthermore, this would need to occur at every instance of the dice roll because, if not, you would just end up rolling one die over and over and over again which is not random weight generation.

    “ people are confusing "changing the AI with champs having fight style preferences.”

    …. what? The AI IS the weight of its actions. Thats all it is. Its just a summation of weights over actions. Of course changing the weights means changing the AI! Do you think if I set the probability of block to 1 I would have the “same” AI?? What does changing the AI mean to you if not changing its weighted actions?

    To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization. This could lead to “AI profiles” of sorts but the problem is that NO WHERE in this post do they allude to, imply or confirm any of that. They implied in blanket terms that these weights are strictly random processes in the same way that if I handed you a die and said its “all random” then you would probably be expecting a fair die not one with 75:25 split or 80:20 or some other nonsense. Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!). Furthermore, these intentional changes to the structure of each distribution are BY DEFINITION AI MANIPULATION. They have come out saying they do not do this. Unless you can provide a definition of AI manipulation that doesnt involve intentionally manipulating the weights of their behaviors this is a contradiction.

    I am genuinely curious as to what definition you could supply that somehow does not include that. What else is there to manipulate??
    well firstly i just listed an example.
    and stated there are other ways
    secondly you do not want the champs to have a random weighting.
    that would not give them a bias at all.
    you want the weighting to be set per champ.
    so champ xxx is 50% more likely to throw a heavy than normal. so 50% more options result in a heavy.

    they do not allude to ai profiles becuase firstly there is no real true ai profile.
    there is champion preferences but they all call on the same AI, they just have weighting to interpret it slightly differently.
    secondly it is plainly obvious that different champs have weighting toward different fight styles as it suits their kits.
    this is the basis of creating a somewhat decent AI.
    a fully random AI where every champ is exact same and everything is fully random is not a good AI at all.

    coding is set like this.
    you have call backs.

    so you have
    AI
    you have
    CHAMPION
    each champion does not have its own ai. each champion uses the same ai. the ai is not changed for anyone. the champion code calls on the ai, the ai does its thing and the champion interprets it.
    so to make a champ have a heavy bias you do not touch the AI.
    you do not change the AI.
    you change the champion code.
    the AI code remains exactly the same

    you call it AI MANIPULATION, i call it AI INTEPRETATION.
    but as i said of course the champion interprets the AI to formulate a playstyle that suits its kit.
    otherwise the AI would suck
    If you don't think the weights should be random take that up with kabam. That’s what the post said is happening (I even showed a screen shot exactly where that text is). Heres the quote again since you’ve missed it twice now:

    “Our AI works on a years old system of *randomly weighted* actions”.

    AI interpretation. Cute. You made up a term to make it sound nicer. If thats the hill you choose to die on then sure. Ill call this “interpretation”.

    What you are describing is called inheritance and classes. If you change the weights you’ve changed the code and fundamentally altered how the champion works. Thats why its A NEW CLASS. It may call the same functions to “block” or “dash”, but what makes AI different is *when* it chooses to call certain functions. Of course you dont rewrite the literal “how to block” code. Its when the AI will do so, how frequently, under which circumstances that matters. Thats what you manipulate. It’s behavior is fundamentally different from the base class. Do you actually think that because their base is the same that makes everything you alter past that identical?? Furthermore the code in each individual champions kit IS part of the AI code, just their individual AI’s behavior.

    You are fundamentally confused. You have base AI and you have branches from that base for each champion each of which represents a unique AI (otherwise they would play the same). This is the first time, as far as I know, that kabam has ever openly stated they manipulate behavior at the individual champion level.

    You are correct that a fully random AI is bad. We know that the AI is not fully random. My point this whole time was that when Jax wrote that the AI was just a random set of weights and dice rolls the post was intentionally misleading and clearly could not map onto reality as evidenced by the rapid progression in the optimal behavior of the AI. He then came out with a supplement to walk back how “random” the word was supposed to imply. Randomness does not optimize. It is random. NOW after prodding, they have come out and started to actually open up starting with expressly stating that they are selecting for certain behaviors based on what champ is defending
    you do not need to be a rocket scientist to know and assume that every single champion would be coded to behave in a way that suits their kit.

    a champ with heavy as big part of kit, like doom will have a heavy bias,
    some champs will have a more defensive bias, some will have a bias toward a sp1 or a sp2 instead of the other, its just common sense to expect and understand this.
    i don't think kabam have ever needed top explicitly say this. it just makes sense.

    as far as kabam saying they never change the AI,
    well yeah they don't, if they write code for a new champ and give that a champ a particular bias, there is nothing changing the AI the AI remains the same for everyone.
    the only thing that changes is a new set of parameters added for a new champ to interpret the AI in a particular way.

    random does not mean fully random, random can mean random within a set of parameters.
    random with a particular bias.
    fully random = 1-100 with even chance
    random within a range - 30-100
    random with a weighting - 1 - 100 with a higher chance to be closer to 100
    a combination of both.
    random with a multiplier - 1-100 then x 1.3
    all those are random but will result in different behavior.
    call it "manipulation" all you want but its just standard. how else is a champ going to have a preference to do any action unless the "manipulate" the AI?
    if the champ does not "manipulate" the AI then all will be the same.

    also they have stated before that some champs have certain biases like doom with heavies and a few others.....
    Ok I genuinely don’t know how to get through to you. At this point you are just looping back to things I already addressed which puts you around four messages behind. You don’t need to be a rocket scientist to understand this (that’s why I used simulations instead of showing you the proof about the convergence in distribution) but my masters in statistics which includes a year spent working in a lab specifically concerned with reinforcement methods in bayesian contexts does help me a little bit.

    To the point about injecting randomness by adjusting parameters I have already said the following-

    “To introduce the kind of biases youre talking about while actually being consistent with what was written in this post you would need to adjust the parameters of the distribution that the weights were drawn from. For instance, you COULD let the the upper bound of each weight parameter be tied to a distinct set and, given they were drawn uniformly, you would end up with larger weights on avg for distributions whose upper bounds were larger even after normalization.”

    Im feeling nice so Ill even attach the code which accomplishes this at the end.

    Now, my issue with this post, AGAIN, was the following:

    “My point this whole time was that when the MCOC TEAM wrote that the AI was just a random set of weights and dice rolls the post was intentionally misleading and clearly could not map onto reality as evidenced by the rapid progression in the optimal behavior of the AI. He then came out with a supplement to walk back how “random” the word was supposed to imply. Randomness does not optimize. It is random. NOW after prodding, they have come out and started to actually open up starting with expressly stating that they are selecting for certain behaviors based on what champ is defending”

    Which is OBVIOUSLY a distinctly different type of randomness than the original post implied. I built upon that point when I then said:

    “Its disingenuous to lump deliberate changes to distributions under the term “random” and that much is plainly obvious unless you want to take the “Well TEEEEEECCHNICALLY they didn’t lie” stance (while simultaneously taking up the notion of transparency no less!)”

    Finally, the distinction you’re making between the base AI and the subclasses is still ridiculous. Once again you aren’t rewriting the functions which say “call this function when you want to block”. You’re rewriting the frequency and conditions under which it tends to call it. By changing its tendencies you are CHANGING the AI. What you seem to think constitutes changing means every individual branch has its own unique function that dictates this is HOW i block not WHEN I block. Changing the weights is EVERYTHING when we are talking about AI manipulation. Everything. I can’t even believe you’re trying to claim that manipulating the weights is not fundamentally changing the AI.

    With your logic I could literally set the the distributions of every ability except block to sample from [0,0] and the resulting AI would only ever stand still holding block. You would look at this and say: “well it’s actually the same AI because its using the same base blocking function so this AI is not distinct”. Ridiculous

    Code for biased random sampling:

    results_2 <- rep(0,6)

    for (i in 1:n) {
    dash_forward <- runif(1, 0, 50)
    block <- runif(1, 0, 50)
    heavy <- runif(1, 0, 100)
    dash_back <- runif(1, 0, 25)
    throw_special <- runif(1, 0, 60)
    idle <- runif(1, 0, 10)
    ai_weights <- c(dash_forward, block, heavy, dash_back, throw_special,
    idle)
    normalized_ai <- ai_weights/sum(ai_weights)
    rolls <- sample(1:6, size = n, replace = T, prob = normalized_ai)
    for (j in 1:6){
    results_2[j] <- results_2[j]+sum(rolls == j)
    }

    }

    ai_names <- c("Dash F", "Block", "Heavy", "Dash Back",
    "Throw Special", "Idle")
    barplot(results_2, names.arg = ai_names,
    main = "Case 4: Randomly Generated Weights From Biased Distributions",
    cex.names = .6)
Sign In or Register to comment.