1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

AoS Army Harmonizer

Discussion in 'Seraphon Discussion' started by samheim, Oct 24, 2019.

  1. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Well we see.
     
    Last edited: Oct 25, 2019
  2. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Thanks!
     
    Last edited: Oct 25, 2019
  3. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So first step is to chop up the Saurus Warscroll.

    Move 5, save 5, bravery 10, wounds 1

    We will say Celestite clubs to start with.

    Range 1, attacks 1, to hit 4+, to wound 3 +, rend 0, damage 1.

    So for now, I am not going to worry about any of the other things on the warscroll to begin with.

    So first I will try to add these together like this (inverting the save) Move 5, save 5, bravery 10, wounds 1 = 18 points.

    Range 1, attacks 1, to hit 4+, to wound 3 +, rend 0, damage 1 = 10 points

    Saurus total = 28 points.

    So this will be 2 separate categories.

    (Move 5, save 5, bravery 10, wounds 1) core stats

    (Range 1, attacks 1, to hit 4+, to wound 3 +, rend 0, damage 1) Attack stats.

    So this is where people can help out, Give me some points values for these

    Move 1 =

    Move 2 =

    Move 3 =

    Move 4 =

    Move 5 =

    Move 6 =

    Move 7 =

    Move 8 =

    Move 9 =

    Move 10 =

    Move 11 =

    Move 12 =

    Move 13 =

    Move 14 =

    Move 15 =

    attacks 1 =

    attacks 2 =

    attacks 3 =

    attacks 4 =

    attacks 5 =

    attacks 6 =

    Bravery 1 =

    Bravery 2 =

    Bravery 3 =

    Bravery 4 =

    Bravery 5 =

    Bravery 6 =

    Bravery 7 =

    Bravery 8 =

    Bravery 9 =

    Bravery 10 =

    wounds 1 =

    wounds 2 =

    wounds 3 =

    wounds 4 =

    wounds 5 =

    wounds 6 =

    wounds 7 =

    wounds 8 =

    wounds 9 =

    wounds 10 =

    At the moment we don't want to add any multipliers, that comes later on. We just want to establish some basic values.
     
  4. Lustrian Giant
    Chameleon Skink

    Lustrian Giant Well-Known Member

    Messages:
    176
    Likes Received:
    552
    Trophy Points:
    93
    If you are a "Programming God" could you link some of your work? I dont know programming at all, so I need to see examples in order to believe them.
    This is not me saying I don't believe you, but as this is not something I can call BS on (it's the internet, anyone can say anything), I would like to see your work.
     
    LizardWizard and Erta Wanderer like this.
  5. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    We are then going to price up the weapon stats.

    Range 1, attacks 1, to hit 4+, to wound 3 +, rend 0, damage 1.

    This will be linked to the core stats with a multiplier between them. We will then establish an equation for how much say a 5 damage weapon does for a model who has 6 wounds etc.

    We may then need to create further multipliers between the core stat's relationship. We are just going to work through it though. No jumping 300 miles ahead and saying what about invulnerable save on 5 up. We are building skyscraper and we need to worry about foundation first, not 96th floor.
     
  6. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So

    $attirbutes = [name = 'star drake shield', special = 'unmodified', value="-2"]

    Class Miniature ($coreStats, $attackStats, $name, $attirbutes) {

    public function calculateTotalPoints() {
    $this->calculateCoreStats();
    $this->calculateAttackStats();
    $this->calculateAttributes();
    }

    public function calculateAttributes() {

    foreach($this->attributes as $attirbute) {
    // get points value
    }

    }


    }


    Class Attributes {
    // This object will be responsible for totalling the points value of any additional attributes.
    private $points;
    public function isPoisionWeapon() {
    $this->points = $this->points * 2;
    }

    }


    Class Abilities {

    // get points for abilities.

    public function isInvunerable() {
    if($this->invunerable = true) {
    $this->points * 1.5;
    // will need to add multiplier for how high the invulnerable save attribute is 4 +, 5+ etc


    }
    }

    }
     
    Last edited: Oct 25, 2019
  7. Wilhelm Stürmer
    Ripperdactil

    Wilhelm Stürmer Well-Known Member

    Messages:
    465
    Likes Received:
    799
    Trophy Points:
    93
    Man, you and @Dan32234234234324 should collaborate on this idea. He also seems like he really knows things about stuff in the computer programmings.
    Screen Shot 2019-10-25 at 3.37.24 PM.png
     
    LizardWizard and samheim like this.
  8. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Thanks man
     
  9. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Yes, anyone who wants to jump in, and help out!

    The thing is to start, and then you can see where the problems start to appear. Nothing is as hard as not to do!
     
  10. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So this is all wrong at the moment obviously, but we can start to see how we can brake down the problem into small parts.

    We need to brake all the abilities a warscroll has down, and assign them a points value. We then will need to add multipliers to them as well.

    Its not hard maths, its just a lot of maths that will be like spaghetti central.

    So we will probably need a dedicated class that processes the values of what we have called coreStats and attackStats. We will then process these.

    And we will process these against the abilities as well. We establish a process for doing this, and then we apply it to everything. This will give us hopefully accurate pointing.

    Then the harmonisation process is pretty simple in comparison. The hard part is the accurate pointing.
     
  11. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    We model the spells in the same way we model the miniatures.

    Spells have a range, we apply a points cost to each inch of the range. We then add the multipliers for how much damage or other effects is does.

    It seems to make more sense to brake the coreStats down and have objects for each statistic. So a class for move, bravery, wounds, save.


    Then it would be possible to feed in the stardrake shield ability into the save object.

    Process that there. Makes sense.

    Abilities in general tend to alter the core stats. So that might be better way of doing it. Obviously some of the AoS abilties probably just won't be able to be processed, like the old bloods ability to stand to attention. The simple solution to abilities like that is to remove them!
     
  12. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So

    An army is made up of regiments. Regiments are made up of miniatures. Miniatures are made up of statistics.


    But an army can also have battalions!

    So this might be no good, $army->regiment->miniature->attacks;

    Maybe

    Class Army {

    public function hasBattalions() {
    foreach($this->battlions as $battlion) {
    // some further processing required.
    }
    }
    }
     
  13. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Class Game {
    public function __construct($tableSize, $armies);
    {
    // This way we can factor in the size of table vs the movement statistics of the miniatures. Maybe fast miniatures have bigger advantage on smaller table?
    }
    }
     
  14. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Class Game {
    public function __construct($tableSize, $players);
    {
    // if we change it to $players, it would then be possible to harmonise the armies further based on statistics of how good one player was compared to other, according to their win ratio etc.
    }
    }
     
  15. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So as you can see, all pretty straightforward stuff. I have basically worked out all the hard parts in what, half an hour?

    Tapping out all the multipliers and working out how to link them together, would be pretty time consuming. But its all easy as pie stuff really.

    The hard parts would be to model the things that do crazy things, but of course that can be modelled as well.

    For example we just make our $table object more detailed to handle the Old bloods snap to it ability.

    In fact our table object could keep track of all movement related stuff.

    We can now start to add graphics to our table object and begin building our game of AoS totalwar!

    If people would be interested in crowd funding me for a few million dollar's, I would totally be up for building an AoS video game for you. I promise to make Seraphons vs Bloodbound as the first factions.
     
  16. Killer Angel
    Slann

    Killer Angel Prophet of the Stars Staff Member

    Messages:
    15,021
    Likes Received:
    33,048
    Trophy Points:
    113

    After the reading of all the posts in the thread, I came back to the OP, because (unless i missed something in these three pages) this is where the real problem is:

    There, here we are. It won't work… and not because you are not able to accomplish the hoped result…. you could well be, I'm not saying that.
    But the rules for competitive tournaments are set by GW, and they are based on the real, unbalanced rule system AND official points system AND printed stats.

    no one is and will be going to follow the harmonizer, even if it was a perfect program.
    Certainly not GW, that doesn't like anyone messing with its product.
    Cartainly not players, who put their effort in writing ther lists, having in mind what they can and what they cannot do, with what percentage of success… and none of them will be ready to play with warscrolls different from the ones upon which they have built their army, only because the unofficial program of a random guy says that in that way the armies will be more balanced.
    It's a system that will be looked as a house rule at best, and house rules have no place in playing competitive tournaments, nor even in training for said tournaments.
     
    Sudsinabucket and samheim like this.
  17. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Yes agree with every point.

    Obvioulsy its impossible for the commercial reasons you say. Do I think the Army Harmoniser would work and make games better? yes.

    Do I think GW need to something like this to stop their game being so crap? yes again.

    Even if my software is the wrong way to go, and didn't work, GW definatly need something like it, if at least to constrain them within the rules of their own games.

    Here is the the basic first go design for the harmoniser. Its actually incredibly simple to make. I don't know why everyone was telling me it would be so hard to do?

    https://ibb.co/26dQMQ8
     
  18. GreenyRepublic
    Temple Guard

    GreenyRepublic Well-Known Member

    Messages:
    212
    Likes Received:
    992
    Trophy Points:
    93
    That's... an image, not a functional program. In fact that wouldn't even pass as a UML diagram (which is often considered the first stage of design for a lot of complex software), and you're telling us that this is your grand solution?
     
    Canas and Sudsinabucket like this.
  19. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    So I would say, from what I learned from doing this is. If you can establish very accuratel
    Yes your right. What I should have done, was ring up my bank manger and got a loan, so I could have a board meeting and assemble a team first.
    Then I could go into board room, and wave my hands in the air and say "Hey I have this amazing idea, it's value is $0, but GreenyRepublic expects me to present my idea in a enterprise fashion."

    First of all, its not complex software at all. Its very simple. As I said before its as easy as eating pie.

    To you it might seem complicated. I don't judge you for that.


    I could go ahead and develop this program just to prove how right I am, but I am not a petty man. As the other poster said, its pointless for commercial reasons.
     
  20. samheim
    Ripperdactil

    samheim Well-Known Member

    Messages:
    463
    Likes Received:
    355
    Trophy Points:
    63
    Now I think about it,

    when designing a complex game like AoS. Whats important is not really the points value of the movement compared to the saving throw. Whats important is that every army follows the same points scoring methods.

    This can't be true in AoS because they randomly create new rules. The whole point of a software system as I have created is this.

    You put the numbers in and you get the ponits value out. You can then call that ability what ever you like. As long as the points have been calculated by the software.

    You can't change how the software calculates things or you brake everything. You have to keep it the same for all armies.

    So you could say, I want a spell that has a range of 20 inchs, does 5 damage and causes fire damage. And it will give you the ponts value.

    You then go away and just make up a name for the spell.


    You can't say, I want a spell that has a range of 10 inch's and takes away 5 bravery, if you never factored in bravery modifiers to begin with.

    Yes you can expand your system. But the problem is this.

    All the armies you calculated the points for previously are missing any spells with abilities to debuff bravery. The more things like this you add the more everything will fall apart.

    This is why a software solution would be good, because it makes it possible for diffrent teams to get points values independently, they all follow the same system for generating their points values.

    This is why AoS is bad, they are probably doing it all manually and independently from each other. And then randomly creating new rules as they go along.
     

Share This Page