Page 1 of 3 1 2 3 LastLast
Results 1 to 10 of 26

Thread: [Confirmed] Dota 2 Lacks the "Averagizer" for the Attack Damages and Gold Bounties

  1. #1
    Basic Member
    Join Date
    Apr 2012
    Posts
    1,137

    [Confirmed] Dota 2 Lacks the "Averagizer" for the Attack Damages and Gold Bounties

    How could I not use that beautiful thread title, ThoAppelsin.

    DotA 1 uses a "dice" system to generate random damage over a damage range and to generate random bounties for killing units. Basically, base damage and damage from attributes is added to the result of rolling X number of Y-sided dice, or base bounty is added to such. When the X number of dice is set to more than one, the probability distribution trends towards the middle of the range. In layman's terms, several units are supposed to deal damage or award bounty closer to their average over their damage of bounty range.

    The units that this affects are listed in this Brainstorming thread (I can clean it up if requested). I checked over the multiple damage dice units once, and didn't double-check the multiple bounty dice units with DotA 1 (I got them from the PlayDotA unit stats page, so if someone specifically requests I double-check a unit I could). Other units not listed use a single die and are not bugged.

    Proof: I set a level 1 Chaos Knight (three dice, wide damage range) with three hyperstones attacking a level 1 Io (0 armor) stacked with Pipes of Insight and a Bloodstone, with a Witch Doctor providing Voodoo Restoration to the Io. I came back to collect the Combat Log every two minutes and collected 2159 samples.

    Here is a comparison between the distribution of the values I obtained and the expected frequencies of a hero with three damage dice:

    ckdmgdistro.png

    The red marks what should be happening, while the blue marks what actually happened. Notice that Chaos Knight, despite having an extremely wide damage range, should hit for approximately 64 damage more often than he should hit for 49 or 79. Dota 2 seems to simply use a standard random number generator to generate a number between AttackDamageMin and AttackDamageMax. I haven't tested bounties, however since bounties are listed the for units the same way as damage (BountyGoldMin and BountyGoldMax with no indication of number of dice) it's extremely probable that they work the same way.

    Before someone asks (someone's going to ask), this has nothing to do with pseudo-random distribution, only with damage from auto-attacks and bounties from most neutrals.

    Here's the results from my tests: ckdicetest.txt

    Thanks to Wyn-Ryder for the expected distribution and Excel help, and thanks to ThoAppelsin for...moral support...
    Last edited by imxtrabored; 04-25-2013 at 05:17 AM.

  2. #2
    Volunteer Moderator
    Join Date
    Mar 2012
    Location
    Australia
    Posts
    2,671
    One thing to note is that your theoretical and dota 2 sample sizes are different, and as such the distribution is a bit skewed, so it probably shouldn't be graphed on the same axes - but anyway it shows qualitatively that the distribution models are fundamentally different.

    For reference I put my VB code for excel below:

    It works for dice of sides of less than approximately 10000 (only due to int overflow) and up to 3 dice, with included error checking for using more than 3 dice, but none for negative values etc.

    Code:
    Sub Diceroll()
    
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim dice As Integer
        Dim sides As Integer
        dice = 3                                                            'Can't be bothered having a proper input for this, but easy to just edit the code - can now specify #dice & dice rolls
        sides = 11
        Dim answer() As Integer
        ReDim answer(dice To sides * dice)
        i = 1                                                               'Counter 1
        j = 1                                                               'Counter 2
        k = 1                                                               'Counter 3 - there should probably be a loop to set all values of "answer" to 0 somewhere here, but bad coding by me :P
        sides = 11
        If (dice > 3) Then
            Cells(1, 1).Value = "dice must be less than or equal to 3"
            GoTo Finish
        End If
        Do While (i <= sides)                                               'Die 1
            If (dice = 1) Then
                answer(i) = answer(i) + 1
            End If
            Do While (j <= sides And dice >= 2)                             'Die 2
                If (dice = 2) Then
                    answer(i + j) = answer(i + j) + 1
                End If
                Do While (k <= sides And dice >= 3)                         'Die 3
                    answer(i + j + k) = answer(i + j + k) + 1               'Counting all possible combination that make 3, 4, 5, 6 etc.
                    k = k + 1
                Loop
                j = j + 1
                k = 1
            Loop
            i = i + 1
            j = 1
            k = 1
        Loop
        i = 0
        Do While (i < (sides - 1) * dice + 1)                               'Just an output function for my excel :D
            Cells(i + 1, 1).Value = answer(dice + i)
            i = i + 1
        Loop
    Finish:
    End Sub
    Last edited by Wyn-Ryder; 04-25-2013 at 04:43 PM.

  3. #3
    Basic Member
    Join Date
    Apr 2012
    Posts
    1,137
    I adjusted for that. The Theoretical values I used in the chart are that array that goes 1, 3, 6, 10... (the relative frequency of each damage value) multiplied by (2159/1331).

  4. #4
    Volunteer Moderator
    Join Date
    Mar 2012
    Location
    Australia
    Posts
    2,671
    Ah. Nevermind me then :P I probably should've looked a bit harder.

  5. #5
    Basic Member
    Join Date
    Apr 2012
    Posts
    1,137
    If you could squint that hard at an Excel chart and figure that out immediately that would be pretty commendable. ;33

    It's totally fine, recommended even, to doubt things I say about statistical analysis. I've been getting steadily worse at math for a while now, and I don't think I was ever great at statistics.

    edit: that said ive totally done this bug thing right dont even question it
    Last edited by imxtrabored; 04-25-2013 at 05:11 AM.

  6. #6
    Basic Member
    Join Date
    Dec 2011
    Posts
    11,187
    added to sticky.
    Make sure to read the Forum Rules as well as the stickied Threads of the Forum Section you are posting in.

    Contributions i'd like to highlight:
    My Suggestion: Coaching System
    My Sticky: Intended Changes List
    My Challenge: Completely Fixed Hero Challenge: Skywrath Mage

  7. #7
    Basic Member LeadHead's Avatar
    Join Date
    Mar 2013
    Location
    Latvia
    Posts
    429
    Yes please. Really, this may sound stupid, but CK is stupidly random already and getting the "dice roll" system would be just good.

  8. #8
    Basic Member Rainer's Avatar
    Join Date
    Dec 2011
    Location
    Somewhere
    Posts
    725
    I think the lack of experience for Valve caused this and pseudo random distribution (And other like this things) to not apply to game from the beginning
    Maybe you could check for other numerical things in dota 2 that doesn't use good systems
    My English is not great and i know it

  9. #9
    Basic Member
    Join Date
    Apr 2012
    Posts
    1,137
    This is like one of those things where you could release the game for years and no one would ever notice the difference if they didn't actually look at wc3 map stuff :33
    Also Rainer I totally know what you mean and how you feel but that sort of makes sense and sort of doesn't and I chuckled anyways :33

  10. #10
    Basic Member
    Join Date
    Jun 2012
    Posts
    88
    I don't really understand the jargon here, but to be short and sweet, you're saying that ck no longer has the ridiculously large damage range from wc3 but however has a smaller damage range now? because I've noticed that ck's crit values don't fluctuate much and instead are at insanely high values considering he can crit around anywhere to 400 ~ 700 with no items at level 25

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •