Announcement

Collapse
No announcement yet.

FORMULA DISCUSSION

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    I've been asked to explain a bit more about how the formulas work, what the constants are, etc. So here goes...

    APPROACH

    Think of the formulas as:
    (A) + (B)
    Where
    (A) = Ship-specific stuff
    (B) = Ship-neutral stuff

    (A) produces a score from $0 to $30
    (B) may allow the score to rise above $30

    This approach allows for scores between ships to be comparable, dependent on how (A) is tuned.


    FORMULAE

    The full formulae are:

    Terr
    MAX(0, MIN(30, ((1/(((IF(D = 0, 0.01, D))/TPMin)/0.15))*30)+(K/10) )) + (TeK*1) + IF(Win,1,0) + ((TFor/TTarget)*3)

    Shark
    MAX(0, MIN(30, (((RPD-2.2)/(3.1-2.2))*30)+((K-TK)/10) )) + (TeK*1) + IF(Win,1,0) + ((TFor/TTarget)*3)

    Spider
    MAX(0, MIN(30, ((K/TP)/4.8)*30 )) + (TeK*1) + IF(Win,1,0) + ((TFor/TTarget)*3)

    (B) for all ships is:

    + (TeK*1) + IF(Win,1,0) + ((TFor/TTarget)*3)

    (A) is therefore:

    Terr
    MAX(0, MIN(30, ((1/(((IF(D = 0, 0.01, D))/TPMin)/0.15))*30)+(K/10) ))

    Shark
    MAX(0, MIN(30, (((RPD-2.2)/(3.1-2.2))*30)+((K-TK)/10) ))

    Spider
    MAX(0, MIN(30, ((K/TP)/4.8)*30 ))

    I will remove the MIN and MAX to simplify and discuss (remember that those limits exist).


    DETAILS

    Each ship's (A) component should produce a number between $0 and $30.
    This is achieved by devising a fraction between 0.00 and 1.00 and multiplying $30 by it.


    Terr
    ((1/(((IF(D = 0, 0.01, D))/TPMin)/0.15))*30) +(K/10)

    The objective is to base most of the score on deaths-per-minute (dpm), with a small addition for kills.

    This part is just division-by-zero error protection: IF(D = 0, 0.01, D)
    If the player has zero deaths, a dpm of 0.01 is assumed, which is so low it produces the maximum score.
    I'll re-state the formula with this simplified out:

    ((1/((D/TPMin)/0.15))*30) +(K/10)

    This part calculates dpm: (D/TPMin), e.g. 1 death in a 10 minute game is 0.1 dpm.
    The constant 0.15 is a dpm target required to get the full $30.
    If the player has 0.1 dpm, then 0.1/0.15 = 0.67.
    If the player has 1 dpm, then 1/0.15 = 6.67.
    Dividing 1 by this number inverts it (as higher dpm is bad):
    1/0.67 = 1.49
    1/6.67 = 0.149
    Multiply that by $30 and you get a sensible number between $0 and $30. $30 is achievable but not too easy.

    This part represents a small bonus for kills at a rate of $1 per 10 kills: (K/10)
    E.g. a terr who gets 40 kills will get a $4 bonus.
    Note this is still part of (A), which is capped at $30, otherwise terr scores could theoretically be higher than spider or shark scores.


    Shark
    (((RPD-2.2)/(3.1-2.2))*30) +((K-TK)/10)

    The objective is to base most of the score on RPD, with a small addition for kills.

    The constant 2.2 represents an RPD which should produce $0.
    E.g. if your RPD is 2.2 then 2.2-2.2 = 0; 0*$30 = $0.

    The constant 3.1 represents and RPD which should produce $30.
    E.g. (3.1 - 2.2)/(3.1 - 2.2) = 1.0; 1.0*$30 = $30.

    The kill bonus is the same concept as for terr, but with TKs removed.


    Spider
    ((K/TP)/4.8)*30

    The objective is to base most of the score on kills-per-minute (kpm).

    This part represents kpm: (K/TP)
    E.g. 70 kills in a 15 minute game is: 70/15 = 4.67kpm
    E.g. 30 kills in a 15 minute game is: 30/15 = 2kpm

    The constant 4.8 represents the kpm which should yield $30.
    E.g. 4.8/4.8 = 1; 1*$30 = $30
    E.g. 4/4.8 = 0.83; 0.83*$30 = $25
    E.g. 3/4.8 = 0.625; 0.625*$30 = $19
    E.g. 2/4.8 = 0.42; 0.42*$30 = $13
    Last edited by Rab; 04-12-2018, 04:55 AM.

    Comment


    • #17
      VISUALISATION

      I noticed when writing my previous post that Shark has a lower bound (i.e. 2.2 RPD is considered shit, as opposed to 0.0), but there's no equivalent lower bound for Spider or Terr. So I decided to try and visualise a range of scores to see if the ships are balanced throughout the range.

      I put in a line called "Ideal" which is what I'm aiming for. In this scenario a terrible score gets $0 and a strong score gets $30.

      I have created 10 theoretical players for each ship, their name is like a rating, 10 = noob, 100 = vet. I have made up scores that represent what these players might achieve, and calculated the dollar values accordingly.

      I charted all of this so we can see how closely it tracks the ideal.

      Shark tracks very well, Terr and Spider less so.

      I think with a bit more tuning I can get it much closer. I'll attempt that next.


      VISUALISATION SPREADSHEET

      https://docs.google.com/spreadsheets...it?usp=sharing

      Comment


      • #18
        Observation

        K-TK for shark can result in the TKs being punished.

        E.g.
        10 kills and 0 TKs: (10-0)/10 = $1
        0 kills and 10 TKs: (0-10)/10 = -$1

        I haven't really formed an opinion on whether this matters yet, just pointing it out.

        Edit: Observation 2

        The shark numbers in the visualisation don't match the calculated dollar values.
        However, the outcome is the same.
        Last edited by Rab; 04-12-2018, 08:16 AM.

        Comment


        • #19
          CHANGES

          All ships:
          - Increased TeK bonus from $1 to $2
          - Increased Win bonus from $1 to $2

          Terr
          - Better way of calculating dpm based on visualisation chart.
          - New constant 0.6 represents dpm which should result in $0.
          - Changed kill bonus rate to $1 every 15 kills.

          Spider
          - Better way of calculating kpm based on visualisation chart.
          - New constant 1.35 represents a kpm which should result in $0.
          - New constant 5.10 represents a kpm which should result in $30.

          Shark
          - Changed lower const from 2.2 to 2.3.


          UPDATED FORMULAE

          Terr
          MAX(0, MIN(30, (((0.6-(D/TP))/0.6) *30)+(K/15) )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)

          Shark
          MAX(0, MIN(30, (((RPD-2.3)/(3.1-2.3)) *30)+((K-TK)/10) )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)

          Spider
          MAX(0, MIN(30, (((K/TP)-1.35)/(5.10-1.35)) *30 )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)


          UPDATED SPREADSHEET

          Added column to show the difference between the two dollar values.

          https://docs.google.com/spreadsheets...it?usp=sharing


          UPDATED VISUALISATION

          Adjusted some of the player stats to better reflect real games.

          https://docs.google.com/spreadsheets...it?usp=sharing

          Comment


          • #20
            Getting to the point where I'm changing things and making it worse, so I think it's time to stop.

            How does everyone feel about this as a final product?


            CHANGES

            Spider
            - Reverted change of constant from 5.1 back to 4.8.


            UPDATED FORMULAE

            Terr
            MAX(0, MIN(30, (((0.6-(D/TP))/0.6) *30)+(K/15) )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)

            Shark
            MAX(0, MIN(30, (((RPD-2.3)/(3.1-2.3)) *30)+((K-TK)/10) )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)

            Spider
            MAX(0, MIN(30, (((K/TP)-1.35)/(4.8-1.35)) *30 )) + (TeK*2) + IF(Win,2,0) + ((TFor/TTarget)*3)


            UPDATED SPREADSHEET

            https://docs.google.com/spreadsheets...it?usp=sharing


            UPDATED VISUALISATION

            https://docs.google.com/spreadsheets...it?usp=sharing

            Comment


            • #21
              This looks great. Agree 100%
              -Wirah (Method/Mefod)

              Comment

              Working...
              X