Friday, January 15, 2021

Splunking Game Data - Darkfire Heroes

(Part 2 Link)

So there is somewhat of an eclectic mix of drivers going into this post. As I talk with individual Splunk users, Splunk administrative teams, and larger teams that have access to Splunk (security, operations, etc) I sometimes come across a subset of folks who have a tough time trying to figure out how to take advantage of the data they have access to. In some cases it is because they lack imagination, vision, or strategy relative to what they are trying to accomplish. Sometimes it is being so heads down in the daily grind they have trouble 'looking up' so to speak and collecting their thoughts. More often than not though they are wearing multiple hats and could use a hand getting over the Splunk language learning curve. This post is designed to help a bit - some Splunk Processing Language (SPL) exposure mixed with a bit of dialogue on why I made the dashboard/dashboard panels the way I did.

To start with I need data. Turns out I've started playing a mobile game called Darkfire Heroes. It isn't quite in a beta state but isn't available globally quite yet. The other day, Dec 8 & 9 to be exact, they had a 2 day Player vs Player (PvP) contest. Individual match wins were tracked as well as aggregate win total if you belonged to a group within the game; a clan. As a total side note it is interesting to see people's gaming pedigree based on descriptions they use. Are some of the bad guys/monsters you fight creeps, mobs, trash, etc and are you a part of a clan, guild, or alliance? Outside of this mini event there is a clan rewards chest that also gives varying level of rewards based on aggregate PvP wins over a week. PvP matches won during this 2 day event will count towards that reward chest. 

There are any number of business related questions the game company might want to ask of game data that could range from who to give individual rewards to all the way to game performance: how many players participated, who are the top winners, did the event cause an increase in game play, did the system respond well to the increased load or were there issues, was there increased spending via in game purchases during this time and if so what items, etc etc. 

Since I don't have access to the backend system I had to manually collect data. The first bit of collected data is for the top 150 clans I captured aggregate clan results and the number of players in that clan; clans can have a max of 50 members. The second bit was for clans currently in spots 1, 2, 3, 10, 20, 30, 40, 50, & 60th place I captured individual contributions. I should mention that since the event data would be wiped after it ended and I wanted to get to sleep at a sane time, when I collected the data there was still about 4hrs left to go. So while the clan placement and individual contribution data is generally accurate (as in directionally correct) it isn't 100% precise. To be fair this data isn't very complex and based on volume you could do lots of this analysis in Excel or something else. Where Splunk really shines is if we had access to the hundreds of thousands of data points that would be available to the game developers in the same way that Splunk shines for InfoSec, IT Ops, and BI teams when the data volume might range from thousands to billions of events or transactions per day. 

So with that out of the way here are the visualizations I created. Mentally I'm somewhat putting myself in the shoes of the game design team and trying to get an overview of the event. Below the dashboard screenshots I will walk through each of the panels and the query used. In some cases I didn't use a more expedient query method to give a bit more range in my examples. Ultimately I will post the data in case you want to play with it!




The first three panels are about giving high level summary snapshots of activity

1 - Total Clan Wins

While I only captured aggregate numbers for the top 150 clans I did note how many clans participated. There are probably individuals not in clans who had wins but that data is beyond the scope of what I have access to or care about. I used the makeresults command to generate 1 event, created a field to hold the number of clans who participated, and since Splunk is a time based engine and makeresults creates an event with a timestamp I removed that field. Obviously this is the single value visualization

|  makeresults 
|  eval foo = 236 
|  fields - _time

2 - Total Matches Played

A good high level metric is how many PvP matches were played. The only real data I have here though is the number of wins by the top 150 clans. This starts to be a bit of a fermi problem in that a player could face a human or a bot so it isn't a zero sum game where one person has to lose. Some players are better than others and might only win a percentage of their games. To make things simple I'm just going to assume a 50% win rate when you average across the player base. The data I've captured was in csv format so I've uploaded that into Splunk as a lookup. So I'm going to pull that csv up, add up the wins, and then multiply that number by 2. 

| inputlookup clan_leaderboard.csv 
| stats sum(wins) as wins
| eval games = wins * 2

3 - Clan Chests Filled

If we go back to that concept of filling the weekly clan reward chest you might wonder how many clans had enough wins to fill that up over the span of the event? This is more of a fun little metric but also points toward participation at a broader scale. We will explore the clan chest filling bit in a bit more granularity in a later panel. To max out the clan chest you need like 1,186 wins. Because I've captured the data 4 hrs before the event ended I want to give folks the benefit of the doubt. I bring in the leaderboard csv, filter results to clans who have more than 1k wins, and count the number of results. 

| inputlookup clan_leaderboard.csv 
| where wins > 1000 
| stats count

4 - Who Likes Pie?

The next question you'd likely want to know is the leaderboard - which clans finished 1, 2, 3 etc. There are a lot of ways to display that data. In this case I did a pie graph because some people like the visual element. TBH I'm not a big pie graph fan - there are generally too many data dimensions not captured in it. Anyway, that's why it has this goofy title. The query is simple enough. Bring in the leaderboard, get rid of fields that are not needed (alternatively I could have explicitly kept the fields I wanted to keep), and just to cover my bases sort the results. Not in this case but often sorting results in Splunk that are being displayed in a pie graph make the visualization a bit more organized. 

| inputlookup clan_leaderboard.csv 
| fields - members finish_position 
| sort -wins

5 - Clan Wins and Percent of Total Battles

So when you mouse over pie graphs in Splunk the UI will automagically show you percentages to the total for that wedge. In this case I wanted to display that in a statistical view. There are a couple different ways to do this. In this case I wanted to highlight the eventstats command. When you use a stats command it is 'destructive' in that the only fields that will persist are the ones you use in that command. Alternatively you can use an eval command to do mathematical things but they are constrained to each row. In this case I need to calculate the total number of wins across all rows and compare each clan's (each row's) wins against the total. To that end eventstats is like stats and eval had a baby. For my query I'm going to bring in the leaderboard once again, add up the total number of wins and create a new field called "totalWins", get the percentage of each clan's wins to totalWins and then just display the fields I want

| inputlookup clan_leaderboard.csv 
| eventstats sum(wins) as totalWins 
| eval percOfTotalWins = round((wins/totalWins)*100) 
| table clan wins percOfTotalWins

6 - Contributors Relative to Wins

This was one of my more favorite panels and made me wish I had more data! I wanted to get a feel for how active folks were over the event and what participation actually looked like. I also find it curious that most clans are full of people even if they are inactive (why clans don't kick inactive people is beyond me). Now I only captured individual contributions from 9 clans; places 1, 2, 3, 10, 20, 30, 40, 50, 60. Like a goof though I didn't actually write down the clan name that was in 60th place which is why there are only 8 dots on the graph. This query uses a join (green) to bring both datasets together. Generally speaking you don't need to do joins with data in Splunk but if you need to use them the tool is there. So the green bits are getting the number of people in each of the tracked clans (9) who actually contributed. The join type is left because otherwise the only data displayed would be that where the linking field is a match (clan in this case). Then it is just a simple matter of displaying the fields in the order I want. 

| inputlookup clan_leaderboard.csv 
| join type=left clan
    [| inputlookup clan_efforts.csv 
    | search wins > 0 
    | stats count as contributors by clan
]
| table clan contributors wins members

I'm also using 2 Y axis on this visualization by leveraging a chart overlay. The contributors and members fields leverage the Y axis on the right side of the graph.



7 - Clan Chest Filled / 8 - Chan Chest Filled

The queries behind these two panels are the same. What I wanted to show here is a couple different visualization options. Some people are more drawn to one vs another. Sometimes it is worthwhile to use different visualizations simply from a visual interest perspective. Anyway, while 6 clans would have totally maxed out their weekly reward chest we know that any wins would have contributed in some measure. We could figure out what that percentage is for each of the 150 but how do you display that in some meaningful way without taking up a ton of screen real estate? One answer is to figure out that percentage and then lump those results into various size buckets. This is an easy process to do in Splunk of course. I'm going to go with buckets of 10% sizes so for any given clan the data would say 0-10, 40-50, 80-90 as applicable. Unfortunately because of the data there is also going to be a bucket with 100-110 that we need to take care of. The query starts out simple enough - bring up the data, create a field with the number of wins to max out the chest (I used the actual number here for some reason), line 3 creates a new field that gets the fill percentage. At line 4 I introduce an IF statement because the top clans have several folks who played a bunch of games. If the percentage field is over 100 then just make that value 100, otherwise just round the percentage field to clean it up a bit. That isn't really needed but shows you how to include different functions. At this point we are going to 'bucketize' that perc_field field with buckets that are 10 points wide. Now it is simply a matter of counting the number of clans by each of the buckets with the stats command followed by fixing the 100-110 issue in eval that follows it.

| inputlookup clan_leaderboard.csv 
| eval full_chest = 1186 
| eval perc_filled = (wins/full_chest)*100 
| eval perc_filled = if(perc_filled>=100, 100, round(perc_filled) ) 
| bin perc_filled span=10 
| stats count as clans by perc_filled 
| eval perc_filled = if(perc_filled LIKE "100%", 100, perc_filled) 
| sort perc_filled

9 - Member Participation

This panel starts to display some of the more granular data from panel 6 though it is constrained to the 9 clans I captured individual contributions for. What I'd like to start to tease out of the data is how quickly does participation drop off relative to clan membership. To that end I want to display clan name, the order they finished (at least position they were in 4hrs before the finish), the clan win count, number of participating members, and finally the average number of wins per member. For this I start with the csv that has the granular info and then get the math out of the way; the eval statement that follows cleans up that average number. Now we want to add the context from the overall clan leaderboard results what position these clans were in. That's a simple lookup and comparison off the 'clan' field. The final eval is because I didn't capture the clan names past the 50th position. I know Valhalla was the 60th at the time of data capture so I'm manually inserting that in the blank field for the finish_position column.

| inputlookup clan_efforts.csv 
| search wins > 0 
| stats sum(wins) as clan_wins dc(clan_member) as contributing_members avg(wins) as avgMemberWins by clan 
| eval avgMemberWins = round(avgMemberWins) 
| sort -clan_wins
| lookup clan_leaderboard.csv clan 
| table clan finish_position clan_wins contributing_members avgMemberWins 
| eval finish_position = if(isnull(finish_position), 60, finish_position)

10 - Top 10 Hitters

Pretty standard "who got the most wins regardless of clan" visualization. For this I need to bring in the individual efforts sheet, sort it by wins in descending order, grab the top 10 lines. That by itself would be your top 10 folks and what clan they were in. Since I have the data I figured might as well show clan representation in that top 10 so used eventstats again. I've often used this sort of approach as an incident responder to display multiple dimensions of data in one spot. Imagine a report for failed authentication that has username, source IP, and failed auth counts. Using eventstats would let you also display how many unique users have tried and failed to log in from that IP and how many unique IPs that username tried to log in from. The challenge I've found is labeling those fields so that folks understand what those 2 additional columns mean.

| inputlookup clan_efforts.csv 
| sort -wins 
| head 10 
| eventstats dc(clan_member) as "clan participants in top 10" by clan
| table clan clan_member "clan participants in top 10" wins
| rename clan_member as player

So hopefully that was useful or at least somewhat interesting to folks. I'll now go ahead and paste the raw data in case you want to play around.

Individual Clan Efforts

clan,"clan_member",wins

Diablo2,"Diablo2_1",504

Diablo2,"Diablo2_2",500

Diablo2,"Diablo2_3",349

Diablo2,"Diablo2_4",335

Diablo2,"Diablo2_5",222

Diablo2,"Diablo2_6",209

Diablo2,"Diablo2_7",177

Diablo2,"Diablo2_8",152

Diablo2,"Diablo2_9",137

Diablo2,"Diablo2_10",129

Diablo2,"Diablo2_11",124

Diablo2,"Diablo2_12",118

Diablo2,"Diablo2_13",116

Diablo2,"Diablo2_14",102

Diablo2,"Diablo2_15",85

Diablo2,"Diablo2_16",78

Diablo2,"Diablo2_17",75

Diablo2,"Diablo2_18",74

Diablo2,"Diablo2_19",67

Diablo2,"Diablo2_20",59

Diablo2,"Diablo2_21",56

Diablo2,"Diablo2_22",56

Diablo2,"Diablo2_23",56

Diablo2,"Diablo2_24",52

Diablo2,"Diablo2_25",51

Diablo2,"Diablo2_26",51

Diablo2,"Diablo2_27",49

Diablo2,"Diablo2_28",43

Diablo2,"Diablo2_29",41

Diablo2,"Diablo2_30",39

Diablo2,"Diablo2_31",34

Diablo2,"Diablo2_32",31

Diablo2,"Diablo2_33",28

Diablo2,"Diablo2_34",24

Diablo2,"Diablo2_35",24

Diablo2,"Diablo2_36",18

Diablo2,"Diablo2_37",17

Diablo2,"Diablo2_38",16

Diablo2,"Diablo2_39",14

Diablo2,"Diablo2_40",9

Diablo2,"Diablo2_41",8

Diablo2,"Diablo2_42",5

Diablo2,"Diablo2_43",5

Diablo2,"Diablo2_44",3

Diablo2,"Diablo2_45",1

SpawnsofDiablo,"SpawnsofDiablo_1",488

SpawnsofDiablo,"SpawnsofDiablo_2",307

SpawnsofDiablo,"SpawnsofDiablo_3",272

SpawnsofDiablo,"SpawnsofDiablo_4",266

SpawnsofDiablo,"SpawnsofDiablo_5",199

SpawnsofDiablo,"SpawnsofDiablo_6",171

SpawnsofDiablo,"SpawnsofDiablo_7",166

SpawnsofDiablo,"SpawnsofDiablo_8",161

SpawnsofDiablo,"SpawnsofDiablo_9",151

SpawnsofDiablo,"SpawnsofDiablo_10",138

SpawnsofDiablo,"SpawnsofDiablo_11",130

SpawnsofDiablo,"SpawnsofDiablo_12",120

SpawnsofDiablo,"SpawnsofDiablo_13",110

SpawnsofDiablo,"SpawnsofDiablo_14",103

SpawnsofDiablo,"SpawnsofDiablo_15",98

SpawnsofDiablo,"SpawnsofDiablo_16",80

SpawnsofDiablo,"SpawnsofDiablo_17",78

SpawnsofDiablo,"SpawnsofDiablo_18",72

SpawnsofDiablo,"SpawnsofDiablo_19",62

SpawnsofDiablo,"SpawnsofDiablo_20",53

SpawnsofDiablo,"SpawnsofDiablo_21",51

SpawnsofDiablo,"SpawnsofDiablo_22",49

SpawnsofDiablo,"SpawnsofDiablo_23",49

SpawnsofDiablo,"SpawnsofDiablo_24",48

SpawnsofDiablo,"SpawnsofDiablo_25",44

SpawnsofDiablo,"SpawnsofDiablo_26",38

SpawnsofDiablo,"SpawnsofDiablo_27",32

SpawnsofDiablo,"SpawnsofDiablo_28",32

SpawnsofDiablo,"SpawnsofDiablo_29",27

SpawnsofDiablo,"SpawnsofDiablo_30",27

SpawnsofDiablo,"SpawnsofDiablo_31",26

SpawnsofDiablo,"SpawnsofDiablo_32",24

SpawnsofDiablo,"SpawnsofDiablo_33",23

SpawnsofDiablo,"SpawnsofDiablo_34",23

SpawnsofDiablo,"SpawnsofDiablo_35",22

SpawnsofDiablo,"SpawnsofDiablo_36",21

SpawnsofDiablo,"SpawnsofDiablo_37",17

SpawnsofDiablo,"SpawnsofDiablo_38",13

SpawnsofDiablo,"SpawnsofDiablo_39",13

SpawnsofDiablo,"SpawnsofDiablo_40",11

SpawnsofDiablo,"SpawnsofDiablo_41",11

SpawnsofDiablo,"SpawnsofDiablo_42",11

SpawnsofDiablo,"SpawnsofDiablo_43",9

SpawnsofDiablo,"SpawnsofDiablo_44",9

SpawnsofDiablo,"SpawnsofDiablo_45",8

SpawnsofDiablo,"SpawnsofDiablo_46",5

SpawnsofDiablo,"SpawnsofDiablo_47",3

SpawnsofDiablo,"SpawnsofDiablo_48",2

SpawnsofDiablo,"SpawnsofDiablo_49",0

LegendsOnly,"LegendsOnly_1",560

LegendsOnly,"LegendsOnly_2",399

LegendsOnly,"LegendsOnly_3",190

LegendsOnly,"LegendsOnly_4",147

LegendsOnly,"LegendsOnly_5",131

LegendsOnly,"LegendsOnly_6",102

LegendsOnly,"LegendsOnly_7",89

LegendsOnly,"LegendsOnly_8",77

LegendsOnly,"LegendsOnly_9",53

LegendsOnly,"LegendsOnly_10",52

LegendsOnly,"LegendsOnly_11",49

LegendsOnly,"LegendsOnly_12",48

LegendsOnly,"LegendsOnly_13",43

LegendsOnly,"LegendsOnly_14",40

LegendsOnly,"LegendsOnly_15",38

LegendsOnly,"LegendsOnly_16",37

LegendsOnly,"LegendsOnly_17",37

LegendsOnly,"LegendsOnly_18",30

LegendsOnly,"LegendsOnly_19",27

LegendsOnly,"LegendsOnly_20",22

LegendsOnly,"LegendsOnly_21",19

LegendsOnly,"LegendsOnly_22",18

LegendsOnly,"LegendsOnly_23",17

LegendsOnly,"LegendsOnly_24",17

LegendsOnly,"LegendsOnly_25",16

LegendsOnly,"LegendsOnly_26",16

LegendsOnly,"LegendsOnly_27",16

LegendsOnly,"LegendsOnly_28",15

LegendsOnly,"LegendsOnly_29",15

LegendsOnly,"LegendsOnly_30",14

LegendsOnly,"LegendsOnly_31",14

LegendsOnly,"LegendsOnly_32",14

LegendsOnly,"LegendsOnly_33",12

LegendsOnly,"LegendsOnly_34",11

LegendsOnly,"LegendsOnly_35",9

LegendsOnly,"LegendsOnly_36",9

LegendsOnly,"LegendsOnly_37",9

LegendsOnly,"LegendsOnly_38",9

LegendsOnly,"LegendsOnly_39",8

LegendsOnly,"LegendsOnly_40",7

LegendsOnly,"LegendsOnly_41",7

LegendsOnly,"LegendsOnly_42",7

LegendsOnly,"LegendsOnly_43",7

LegendsOnly,"LegendsOnly_44",7

LegendsOnly,"LegendsOnly_45",4

LegendsOnly,"LegendsOnly_46",4

LegendsOnly,"LegendsOnly_47",4

LegendsOnly,"LegendsOnly_48",3

LegendsOnly,"LegendsOnly_49",3

LegendsOnly,"LegendsOnly_50",0

Worldwarriors,"Worldwarriors_1",167

Worldwarriors,"Worldwarriors_2",66

Worldwarriors,"Worldwarriors_3",58

Worldwarriors,"Worldwarriors_4",50

Worldwarriors,"Worldwarriors_5",33

Worldwarriors,"Worldwarriors_6",29

Worldwarriors,"Worldwarriors_7",27

Worldwarriors,"Worldwarriors_8",24

Worldwarriors,"Worldwarriors_9",21

Worldwarriors,"Worldwarriors_10",21

Worldwarriors,"Worldwarriors_11",19

Worldwarriors,"Worldwarriors_12",16

Worldwarriors,"Worldwarriors_13",15

Worldwarriors,"Worldwarriors_14",13

Worldwarriors,"Worldwarriors_15",12

Worldwarriors,"Worldwarriors_16",12

Worldwarriors,"Worldwarriors_17",11

Worldwarriors,"Worldwarriors_18",11

Worldwarriors,"Worldwarriors_19",11

Worldwarriors,"Worldwarriors_20",10

Worldwarriors,"Worldwarriors_21",10

Worldwarriors,"Worldwarriors_22",8

Worldwarriors,"Worldwarriors_23",7

Worldwarriors,"Worldwarriors_24",7

Worldwarriors,"Worldwarriors_25",6

Worldwarriors,"Worldwarriors_26",6

Worldwarriors,"Worldwarriors_27",6

Worldwarriors,"Worldwarriors_28",6

Worldwarriors,"Worldwarriors_29",5

Worldwarriors,"Worldwarriors_30",5

Worldwarriors,"Worldwarriors_31",5

Worldwarriors,"Worldwarriors_32",4

Worldwarriors,"Worldwarriors_33",3

Worldwarriors,"Worldwarriors_34",3

Worldwarriors,"Worldwarriors_35",2

Worldwarriors,"Worldwarriors_36",2

Worldwarriors,"Worldwarriors_37",2

Worldwarriors,"Worldwarriors_38",2

Worldwarriors,"Worldwarriors_39",1

Worldwarriors,"Worldwarriors_40",1

Worldwarriors,"Worldwarriors_41",0

Worldwarriors,"Worldwarriors_42",0

Worldwarriors,"Worldwarriors_43",0

Worldwarriors,"Worldwarriors_44",0

Worldwarriors,"Worldwarriors_45",0

Worldwarriors,"Worldwarriors_46",0

Worldwarriors,"Worldwarriors_47",0

Worldwarriors,"Worldwarriors_48",0

Worldwarriors,"Worldwarriors_49",0

Worldwarriors,"Worldwarriors_50",0

ColoradoCasual,"ColoradoCasual_1",23

ColoradoCasual,"ColoradoCasual_2",21

ColoradoCasual,"ColoradoCasual_3",21

ColoradoCasual,"ColoradoCasual_4",20

ColoradoCasual,"ColoradoCasual_5",19

ColoradoCasual,"ColoradoCasual_6",17

ColoradoCasual,"ColoradoCasual_7",16

ColoradoCasual,"ColoradoCasual_8",12

ColoradoCasual,"ColoradoCasual_9",11

ColoradoCasual,"ColoradoCasual_10",10

ColoradoCasual,"ColoradoCasual_11",10

ColoradoCasual,"ColoradoCasual_12",9

ColoradoCasual,"ColoradoCasual_13",9

ColoradoCasual,"ColoradoCasual_14",8

ColoradoCasual,"ColoradoCasual_15",8

ColoradoCasual,"ColoradoCasual_16",7

ColoradoCasual,"ColoradoCasual_17",7

ColoradoCasual,"ColoradoCasual_18",7

ColoradoCasual,"ColoradoCasual_19",7

ColoradoCasual,"ColoradoCasual_20",7

ColoradoCasual,"ColoradoCasual_21",6

ColoradoCasual,"ColoradoCasual_22",5

ColoradoCasual,"ColoradoCasual_23",5

ColoradoCasual,"ColoradoCasual_24",5

ColoradoCasual,"ColoradoCasual_25",4

ColoradoCasual,"ColoradoCasual_26",4

ColoradoCasual,"ColoradoCasual_27",3

ColoradoCasual,"ColoradoCasual_28",1

ColoradoCasual,"ColoradoCasual_29",1

ColoradoCasual,"ColoradoCasual_30",0

ColoradoCasual,"ColoradoCasual_31",0

ColoradoCasual,"ColoradoCasual_32",0

ColoradoCasual,"ColoradoCasual_33",0

ColoradoCasual,"ColoradoCasual_34",0

ColoradoCasual,"ColoradoCasual_35",0

ColoradoCasual,"ColoradoCasual_36",0

ColoradoCasual,"ColoradoCasual_37",0

ColoradoCasual,"ColoradoCasual_38",0

ColoradoCasual,"ColoradoCasual_39",0

ColoradoCasual,"ColoradoCasual_40",0

ColoradoCasual,"ColoradoCasual_41",0

ColoradoCasual,"ColoradoCasual_42",0

ColoradoCasual,"ColoradoCasual_43",0

ColoradoCasual,"ColoradoCasual_44",0

ColoradoCasual,"ColoradoCasual_45",0

ColoradoCasual,"ColoradoCasual_46",0

ColoradoCasual,"ColoradoCasual_47",0

ColoradoCasual,"ColoradoCasual_48",0

ColoradoCasual,"ColoradoCasual_49",0

ColoradoCasual,"ColoradoCasual_50",0

Armyofall,"Armyofall_1",34

Armyofall,"Armyofall_2",30

Armyofall,"Armyofall_3",25

Armyofall,"Armyofall_4",14

Armyofall,"Armyofall_5",13

Armyofall,"Armyofall_6",11

Armyofall,"Armyofall_7",11

Armyofall,"Armyofall_8",8

Armyofall,"Armyofall_9",7

Armyofall,"Armyofall_10",5

Armyofall,"Armyofall_11",4

Armyofall,"Armyofall_12",3

Armyofall,"Armyofall_13",2

Armyofall,"Armyofall_14",2

Armyofall,"Armyofall_15",2

Armyofall,"Armyofall_16",2

Armyofall,"Armyofall_17",2

Armyofall,"Armyofall_18",2

Armyofall,"Armyofall_19",1

Armyofall,"Armyofall_20",1

Armyofall,"Armyofall_21",1

Armyofall,"Armyofall_22",0

Armyofall,"Armyofall_23",0

Armyofall,"Armyofall_24",0

Armyofall,"Armyofall_25",0

Armyofall,"Armyofall_26",0

Armyofall,"Armyofall_27",0

Armyofall,"Armyofall_28",0

Armyofall,"Armyofall_29",0

Armyofall,"Armyofall_30",0

Armyofall,"Armyofall_31",0

Armyofall,"Armyofall_32",0

Armyofall,"Armyofall_33",0

Armyofall,"Armyofall_34",0

Armyofall,"Armyofall_35",0

Armyofall,"Armyofall_36",0

Armyofall,"Armyofall_37",0

Armyofall,"Armyofall_38",0

Armyofall,"Armyofall_39",0

Armyofall,"Armyofall_40",0

Armyofall,"Armyofall_41",0

Armyofall,"Armyofall_42",0

Armyofall,"Armyofall_43",0

Armyofall,"Armyofall_44",0

Armyofall,"Armyofall_45",0

Armyofall,"Armyofall_46",0

Armyofall,"Armyofall_47",0

Armyofall,"Armyofall_48",0

Armyofall,"Armyofall_49",0

Armyofall,"Armyofall_50",0

HordeSmashers,"HordSmashers_1",17

HordeSmashers,"HordSmashers_2",16

HordeSmashers,"HordSmashers_3",14

HordeSmashers,"HordSmashers_4",11

HordeSmashers,"HordSmashers_5",10

HordeSmashers,"HordSmashers_6",7

HordeSmashers,"HordSmashers_7",7

HordeSmashers,"HordSmashers_8",3

HordeSmashers,"HordSmashers_9",3

HordeSmashers,"HordSmashers_10",2

HordeSmashers,"HordSmashers_11",2

HordeSmashers,"HordSmashers_12",2

HordeSmashers,"HordSmashers_13",2

HordeSmashers,"HordSmashers_14",2

HordeSmashers,"HordSmashers_15",1

HordeSmashers,"HordSmashers_16",1

HordeSmashers,"HordSmashers_17",1

HordeSmashers,"HordSmashers_18",1

HordeSmashers,"HordSmashers_19",1

HordeSmashers,"HordSmashers_20",0

HordeSmashers,"HordSmashers_21",0

HordeSmashers,"HordSmashers_22",0

HordeSmashers,"HordSmashers_23",0

HordeSmashers,"HordSmashers_24",0

HordeSmashers,"HordSmashers_25",0

HordeSmashers,"HordSmashers_26",0

HordeSmashers,"HordSmashers_27",0

HordeSmashers,"HordSmashers_28",0

HordeSmashers,"HordSmashers_29",0

HordeSmashers,"HordSmashers_30",0

HordeSmashers,"HordSmashers_31",0

HordeSmashers,"HordSmashers_32",0

HordeSmashers,"HordSmashers_33",0

HordeSmashers,"HordSmashers_34",0

HordeSmashers,"HordSmashers_35",0

HordeSmashers,"HordSmashers_36",0

HordeSmashers,"HordSmashers_37",0

HordeSmashers,"HordSmashers_38",0

HordeSmashers,"HordSmashers_39",0

HordeSmashers,"HordSmashers_40",0

HordeSmashers,"HordSmashers_41",0

HordeSmashers,"HordSmashers_42",0

HordeSmashers,"HordSmashers_43",0

HordeSmashers,"HordSmashers_44",0

HordeSmashers,"HordSmashers_45",0

HordeSmashers,"HordSmashers_46",0

HordeSmashers,"HordSmashers_47",0

HordeSmashers,"HordSmashers_48",0

HordeSmashers,"HordSmashers_49",0

HordeSmashers,"HordSmashers_50",0

SinCityKnights,"SinCityKnights_1",14

SinCityKnights,"SinCityKnights_2",14

SinCityKnights,"SinCityKnights_3",10

SinCityKnights,"SinCityKnights_4",8

SinCityKnights,"SinCityKnights_5",7

SinCityKnights,"SinCityKnights_6",5

SinCityKnights,"SinCityKnights_7",4

SinCityKnights,"SinCityKnights_8",3

SinCityKnights,"SinCityKnights_9",3

SinCityKnights,"SinCityKnights_10",3

SinCityKnights,"SinCityKnights_11",3

SinCityKnights,"SinCityKnights_12",2

SinCityKnights,"SinCityKnights_13",1

SinCityKnights,"SinCityKnights_14",1

SinCityKnights,"SinCityKnights_15",1

SinCityKnights,"SinCityKnights_16",1

SinCityKnights,"SinCityKnights_17",1

SinCityKnights,"SinCityKnights_18",1

SinCityKnights,"SinCityKnights_19",1

SinCityKnights,"SinCityKnights_20",0

SinCityKnights,"SinCityKnights_21",0

SinCityKnights,"SinCityKnights_22",0

SinCityKnights,"SinCityKnights_23",0

SinCityKnights,"SinCityKnights_24",0

SinCityKnights,"SinCityKnights_25",0

SinCityKnights,"SinCityKnights_26",0

SinCityKnights,"SinCityKnights_27",0

SinCityKnights,"SinCityKnights_28",0

SinCityKnights,"SinCityKnights_29",0

SinCityKnights,"SinCityKnights_30",0

SinCityKnights,"SinCityKnights_31",0

SinCityKnights,"SinCityKnights_32",0

SinCityKnights,"SinCityKnights_33",0

SinCityKnights,"SinCityKnights_34",0

SinCityKnights,"SinCityKnights_35",0

SinCityKnights,"SinCityKnights_36",0

SinCityKnights,"SinCityKnights_37",0

SinCityKnights,"SinCityKnights_38",0

SinCityKnights,"SinCityKnights_39",0

SinCityKnights,"SinCityKnights_40",0

SinCityKnights,"SinCityKnights_41",0

SinCityKnights,"SinCityKnights_42",0

SinCityKnights,"SinCityKnights_43",0

SinCityKnights,"SinCityKnights_44",0

SinCityKnights,"SinCityKnights_45",0

SinCityKnights,"SinCityKnights_46",0

SinCityKnights,"SinCityKnights_47",0

SinCityKnights,"SinCityKnights_48",0

SinCityKnights,"SinCityKnights_49",0

SinCityKnights,"SinCityKnights_50",0

Valhalla,"Valhalla_1",10

Valhalla,"Valhalla_2",9

Valhalla,"Valhalla_3",9

Valhalla,"Valhalla_4",8

Valhalla,"Valhalla_5",6

Valhalla,"Valhalla_6",4

Valhalla,"Valhalla_7",2

Valhalla,"Valhalla_8",2

Valhalla,"Valhalla_9",2

Valhalla,"Valhalla_10",2

Valhalla,"Valhalla_11",2

Valhalla,"Valhalla_12",1

Valhalla,"Valhalla_13",0

Valhalla,"Valhalla_14",0

Valhalla,"Valhalla_15",0

Valhalla,"Valhalla_16",0

Valhalla,"Valhalla_17",0

Valhalla,"Valhalla_18",0

Valhalla,"Valhalla_19",0

Valhalla,"Valhalla_20",0

Valhalla,"Valhalla_21",0

Valhalla,"Valhalla_22",0

Valhalla,"Valhalla_23",0

Valhalla,"Valhalla_24",0

Valhalla,"Valhalla_25",0

Valhalla,"Valhalla_26",0

Valhalla,"Valhalla_27",0

Valhalla,"Valhalla_28",0

Valhalla,"Valhalla_29",0

Valhalla,"Valhalla_30",0

Valhalla,"Valhalla_31",0

Valhalla,"Valhalla_32",0

Valhalla,"Valhalla_33",0

Valhalla,"Valhalla_34",0

Valhalla,"Valhalla_35",0

Valhalla,"Valhalla_36",0

Valhalla,"Valhalla_37",0

Valhalla,"Valhalla_38",0

Valhalla,"Valhalla_39",0

Valhalla,"Valhalla_40",0

Valhalla,"Valhalla_41",0

Valhalla,"Valhalla_42",0

Valhalla,"Valhalla_43",0

Valhalla,"Valhalla_44",0

Valhalla,"Valhalla_45",0

Valhalla,"Valhalla_46",0

Valhalla,"Valhalla_47",0

Valhalla,"Valhalla_48",0

Valhalla,"Valhalla_49",0

Valhalla,"Valhalla_50",0


////////////////////////////////


Clan Leaderboards


clan,"finish_position",members,wins

Diablo2,1,49,4439

SpawnsofDiablo,2,50,3883

LegendsOnly,3,50,2536

Assassins,4,50,2032

Deplorables,5,50,1119

WeAreGroot,6,50,1018

PlanetExpress,7,50,802

Resurrected,8,45,770

Worldwarriors,9,50,656

imperialguard2,10,48,652

Heathens,11,50,567

Covid,12,50,450

Sofaklanen,13,50,382

ActiveOnly,14,50,369

HiddenLeaf,15,50,303

TeamQc,16,50,298

F3ARLESS,17,50,297

Revansheer,18,50,295

CatchThzHandz,19,50,277

ColoradoCasual,20,50,274

NuBeginnings,21,50,271

MisfitToys,22,50,270

WolfiesClan,23,50,256

DutchTigers,24,49,241

ZeroFukGiven,25,50,237

SpectralSpartans,26,50,229

Fighters,27,50,215

KINGSnQUEENS,28,50,206

FerdaBoys,29,50,192

Armyofall,30,48,165

TurtleGang,31,50,149

Logitek,32,50,147

BreganDaerthe,33,44,146

NorthernElysia,34,48,138

WarDogz,35,48,132

Exile,36,50,128

Fusion,37,50,121

TheWarForged,38,50,120

13thLegion,39,50,102

HordeSmashers,40,50,95

Dreamwalkers,41,50,90

Akatsuki,42,50,89

DarkfireMambas,43,50,88

Sparrago,44,50,87

Raiders,45,50,84

JustForFun,46,50,82

WARHAMMER,47,50,77

CustardSGood,48,50,76

SinCityKnights,49,50,75

BigChunges,50,50,74

"clan_51",51,50,70

"clan_52",52,50,69

"clan_53",53,50,66

"clan_54",54,50,65

"clan_55",55,50,64

"clan_56",56,50,60

"clan_57",57,50,59

"clan_58",58,50,57

"clan_59",59,50,56

"clan_60",60,50,54

"clan_61",61,50,53

"clan_62",62,50,53

"clan_63",63,50,51

"clan_64",64,47,49

"clan_65",65,50,48

"clan_66",66,50,48

"clan_67",67,50,47

"clan_68",68,32,42

"clan_69",69,50,40

"clan_70",70,50,39

"clan_71",71,50,38

"clan_72",72,50,38

"clan_73",73,19,37

"clan_74",74,50,36

"clan_75",75,50,36

"clan_76",76,50,33

"clan_77",77,50,33

"clan_78",78,50,33

"clan_79",79,50,32

"clan_80",80,33,30

"clan_81",81,50,29

"clan_82",82,50,29

"clan_83",83,50,29

"clan_84",84,50,27

"clan_85",85,50,26

"clan_86",86,50,25

"clan_87",87,50,25

"clan_88",88,50,25

"clan_89",89,50,24

"clan_90",90,50,21

"clan_91",91,50,20

"clan_92",92,50,20

"clan_93",93,50,19

"clan_94",94,12,18

"clan_95",95,15,17

"clan_96",96,28,16

"clan_97",97,50,16

"clan_98",98,18,16

"clan_99",99,50,16

"clan_100",100,50,16

"clan_101",101,22,16

"clan_102",102,50,16

"clan_103",103,43,15

"clan_104",104,50,15

"clan_105",105,22,15

"clan_106",106,50,15

"clan_107",107,50,15

"clan_108",108,50,14

"clan_109",109,50,14

"clan_110",110,50,14

"clan_111",111,50,14

"clan_112",112,50,14

"clan_113",113,50,14

"clan_114",114,50,14

"clan_115",115,50,13

"clan_116",116,49,13

"clan_117",117,50,13

"clan_118",118,48,13

"clan_119",119,50,13

"clan_120",120,50,12

"clan_121",121,50,12

"clan_122",122,23,12

"clan_123",123,50,12

"clan_124",124,50,12

"clan_125",125,13,11

"clan_126",126,50,11

"clan_127",127,50,11

"clan_128",128,50,11

"clan_129",129,50,11

"clan_130",130,50,11

"clan_131",131,50,10

"clan_132",132,50,10

"clan_133",133,50,10

"clan_134",134,50,10

"clan_135",135,50,10

"clan_136",136,50,10

"clan_137",137,50,10

"clan_138",138,50,10

"clan_139",139,50,9

"clan_140",140,50,9

"clan_141",141,50,8

"clan_142",142,50,8

"clan_143",143,50,8

"clan_144",144,50,8

"clan_145",145,50,8

"clan_146",146,50,8

"clan_147",147,50,8

"clan_148",148,50,8

"clan_149",149,50,8

"clan_150",150,50,7

No comments:

Post a Comment