www.rotkgame.com

Rotk Games are here to play!

The Definitive Vex Mythoclast Analysis: Examining over a million player records to model VoG drops

Vex Mythoclast is a free-to-play online shooter that offers players the opportunity to earn in-game currency and items for free. In order to understand how the game works, we analyzed player data from over 1 million accounts.

The vex mythoclast drop rate protection is a software program that will analyze your Vex Mythoclast drops to determine the best time to mine.

This post seems to be causing some misunderstanding. Drop rates aren’t anything I’m complaining about. I’m simply a casual gamer with no desire to acquire Vex; instead, I wanted to contribute to the fascinating analytical work that other members of the community have done. This is offered only as a fun project to help me maintain my data abilities.

Introduction

Recently, I’ve been playing a lot of Destiny 2. It’s an MMOFPS-style game that’s a lot of fun. You level up, form ‘fireteams’ with your friends, and participate in tough tasks such as the Crucible (PVP) or raids and dungeons (PVE).

Vault of Glass is one of the most difficult PVE raids. Even getting beyond the entryway of this raid, which is described as “the most difficult experience Bungie has ever produced,” may take up to 45 minutes. Teams of players must battle a bewildering number of computer-controlled opponents and punishingly difficult bosses. However, there is a possibility that players will get the legendary Vex Mythoclast weapon if they complete the trial.

How tiny is it? That’s exactly what we’re going to do.

Background

This analysis is based on the work of Pinnkeyy - The Definitive Vex Mythoclast Analysis: Examining over a million player records to model VoG drops

On different Destiny subreddits, u/Pinnkeyy and u/TBEMystify. Both of these studies attempted to calculate the Vex Mythoclast drop rate. The first effort included polling Destiny players to see how many VoG raids they had performed before to acquiring the weapon. The second effort was our first foray into webscraping, using API tools like raid.report and braytech.org to increase data volume and decrease answers’ bias against Reddit users.

Both of these previous studies have recognized limitations, owing to sample bias and the manual method of data gathering. This made obtaining really convincing proof regarding the Vex Mythoclast drop rate impossible for any user. After speaking with a few members of the group, I came to the conclusion that DestinyTheGame - The Definitive Vex Mythoclast Analysis: Examining over a million player records to model VoG drops

r/Destiny We saw an opportunity to directly access the Bungie API to gather a large amount of data as part of TheGame community.

The following analysis is applicable. TBEMystify - The Definitive Vex Mythoclast Analysis: Examining over a million player records to model VoG drops

The technique of u/TBEMystify at scale. To get roughly 1 million player data for VoG completions, we use R’s HTML scraping and GET request tools. We then take these data and use a containerized application to query them against the Bungie API to see whether the player has Vex Mythoclast. Finally, we look at how likely it is for a player to have Vex Mythoclast based on how many VoG completions they have. This connection, we believe, can be represented in the second-order form: y = A x n + B x + C y = A x n + B x + C y = A x n +

where (y) is the chance of possessing Vex Mythoclast, (x) is the number of Vault of Glass completions, (A) and (B) are unknown coefficients, and (C) is a random constant. The methodology behind this study, as well as how this model was developed, is detailed below.

Method

Our initial step will be identical to that of u/TBEMystify, in that we will use raid.report to look for players who have finished the Vault of Glass raid at least once. This was accomplished by visiting the website while using the developer tool in my browser to search for the site’s data source. Scraping player data is as simple as iterating through HTML requests for sites with 100 players apiece after the source has been located. Because the top leaderboard is shown on the first page, our dataset will begin with the players who have completed the most VoGs. Because the response traffic rapidly skyrockets as we get down to five or fewer completions, we’ll establish an upper limit of one million participants (10000 pages of 100 players).

lowlim – 0 uplim – 10000 for results master – data.frame() (n in lowlim:uplim) url stem – FALSE skip to next – FALSE “REDACTED” url page – as.character(n) url pagesize – “&pageSize=100” url pagesize – “&pageSize=100” “url full – copy and paste 0(url stem,url page,url pagesize, sep=””) 0(url stem,url page,url pagesize, sep=””) 0(url stem tryCatch( results temp – read html(url full) percent > tryCatch( results temp – read html(url full) percent > html nodes(‘body’)% html nodes(‘body’)% html nodes(‘body’) html text() % html text() % html text() % html error = function(e) skip to next – TRUE) percent list(), error = function(e) skip to next – TRUE) if(skip to next){next} percent > percent select results df – as.data.frame(fromJSON(results temp>)$response) (2,1) data.frame(results df$entries.destinyUserInfo) – results add page results df$entries.destinyUserInfo, $displayName results df$entries.destinyUserInfo, $membershipId results df$entries.value, n) $membershipType, results df$entries.value, n) $membershipType, results df$entries rbind(results master, results add page) results master head(results master) ## # A tibble: 6 x 2 ## vog username vog count ## chr> chr> chr> chr> chr> chr> chr> chr> chr> chr> chr> chr> chr> chr ## 1 Ninjah720 1508 ## 2 KING ANUBIX 1331 ## 3 hallowdragonxx 1313 ## 4 xSwerve 88 1190 ## 5 jollys79 979 ## 6 Alan Sparks 977 ## 1 Ninjah720 1508 ## 2 KING ANUBIX 1331 ## 3 hallowdragonxx 1313 ## 4 xSwerve 88 1190 ## 5 jollys79 9

Ninjah720 deserves a pat on the back for finishing VoG 1508 times. That’s insane. Also, kudos to the rest of the list – that’s some serious dedication.

Certain of you with keen eyes may note that some information in the above code and output has been suppressed. To safeguard the privacy of both Destiny users and the back-end technologies we utilize today, I’ll be cleaning specific values, strings, and settings. This is mainly to guarantee that this study can only be repeated by someone who understands what they’re doing, as well as to prevent disclosing information that might be misused. If you have any questions regarding a specific code chunk, feel free to contact me personally.

It’s time to do some digging now that we have our dataset of users and the number of times each user has finished Vault of Glass. We’ll use the Bungie.net API to see whether a specific player possesses Vex Mythoclast. This will be accomplished in two stages:

 

  1. Find a player’s Member ID – a main key used to identify their Destiny profile – by searching for their username.
  2. As part of the GET request, use the Member ID to get a list of that player’s Destiny characters and their inventory.

 

It’s very simple to verify whether each player has Vex Mythoclast once we have their inventory. We can discover that the item hash of Vex Mythoclast is 4289226715 by browsing through the API. Consider this a code that instructs the Destiny program to utilize a certain item whenever an instance of that item is created in the game. Despite the fact that each Destiny character has their own inventory, each instance should be linked to an original item description. So all we have to do now is see whether the Vex Mythoclast hash is present in any of the player characters’ inventory.

However, we soon run into a difficulty. Our first batch of records from raid.report totaled approximately one million. This is problematic since R is single-threaded, which means it only utilizes one CPU core at a time. So, before proceeding, our script will have to manually perform a million API requests and wait for answers — that time adds up fast. A rough estimate from my end was that querying all of the data would take at least six days, which was impractical in my circumstance.

So, what are our options? So, we’ll have a look at Docker, a fantastic tool, and containerization, the underlying technology. Consider this: a container contains a complete virtual environment that is separated from the ‘host’ machine on which it operates. This environment remains consistent regardless of where the container is deployed, allowing developers to safely share containers without fear of package conflicts. Furthermore, since each container is so light, they’re ideal for executing separate R ‘worker’ scripts, which may be used to split up a big data transformation into smaller, more manageable pieces. We can complete the same data request in 1/8th of the time by creating a Docker image with the necessary R packages, imaging our Vex Mythoclast check script into an application, and then running a cluster of instances of that application. We could even do it in 1/16th if I had additional RAM.

The pseudo-code for the Bungie API request looks like this. It’s a lot more complex than this, but for the purpose of brevity, this is how it works. One thing to keep in mind is that the API calls are wrapped in TryCatch(), which enables me to go to row n without adding an incorrect row to the output. This manner, the only players that are really caught are those who can be connected to a BungieAPI account, reducing the number of false negatives.

(in lower limit:upper limit) for (n in lower limit:upper limit) func search for player(vog data) – user member id $vog username) #User characters func lookup players characters(user member id) func lookup players characters(user member id) func lookup players characters(user member id) func_ #If (vex hash percent in percent user characters$inventories), make the second API request. if user has vex – TRUE if user has vex if user has vex if user has vex else vog data$vex check – does user have vex – does user have vex – does user have vex – does user have vex – does user have vex – does user have vex – does user have vex – does user have ve

The next task was to build a DockerFile and image a container, which was a completely new experience for me. But I persisted and discovered a useful internet resource to base my container structure on. The DockerFile text for it is as follows:

# Image as a starting point FROM rocker/tidyverse https://hub.docker.com/u/rocker/ ## build directories TYPE mkdir -p /01 data AND PRESS ENTER. TYPE mkdir -p /02 code and hit ENTER. TYPE mkdir -p /03 output AND PRESS ENTER COPY./01 data/results master combined.csv /app/results master combined.csv COPY./02 code/install packages to your clipboard. /02 code/install packages /02 code/install packages /02 code/install packages COPY./02 code/master in R. /02 code/master /02 code/master /02 code/master /02 ## Install packages using R RUN /02 code/install packages is a Rscript. ## Execute the script CMD /02 code/master.R Rscript

The one inefficiency here was that I had to change lower limit and upper limit manually for each instance of the script I intended to generate, which was a little laborious. Please let me know if you know how to transfer input values from the host system into a container during its first spin-up — I haven’t worked it out yet. Still, a few minutes of setup has us eight destiny/worker containers whirling and scraping away merrily.

Docker containers mount your hard drive folders as clones of folders within the container, which is a great feature. This means you can begin analyzing the data while it’s still in the air and updating every few rows. So, even before I completed the data request, I started analyzing the incoming Vex Mythoclast data and creating my visualizations, which included this report!

Here’s the last line of code to finish our dataset:

files – list.files(path = “docker output/”) f – list() for I in 1:length(files)) f> – read.csv(paste0(“docker output/”,files), header = T, sep = “,”) f> – read.csv(paste0(“docker output/”,files), header = T, sep = “,”) output combined – c(“process number”, “n characters”, “user name”, “user vog clears”, “does user have vex”) for I in 1:length(f)) output combined – rbind(output combined, f>) output combined – rbind(output combined, f>) output combined head(output combined) ## 1 1 3 user name user vog clears does user have vex ## X n user name user vog clears does user have vex 1508 Ninjah720 ## 2 2 3 ## 2 2 3 ## 2 2 3 ## 2 2 3 1331 KING ANUBIX 3 3 3 xSwerve 88 1190 TRUE ## 4 4 3 jollys79 979 TRUE Alan Sparks 977 ## 5 5 3 TRUE ## 6 6 3 C J Mack 967 FALSE FALSE

Analysis

Let’s start with the response volume divided by the number of VoG clears.

 

Here, I tweaked the axis to keep us between 0 and 300 VoG clears. Despite the fact that the higher outliers are remarkable, I find these limitations to be more intriguing to investigate.

Our response volume seems to follow the conventional Pareto distribution, as anticipated. This makes logical, since as the number of VoG clears needed decreases, we should observe a higher frequency of replies. One thing to notice is that our distribution’s front end is somewhat skewed; this is merely due to raid.report’s arbitrary million-player restriction. If we asked for every user who has ever finished Vault of Glass, our distribution would most likely fill in and more closely resemble a Pareto distribution.

Let’s look at a histogram of the answers, with the fill color indicating to whether or not the user has Vex.

ggplot(output combined, aes(x = user vog clears, fill = does user have vex)) + geom histogram(binwidth = 5) + scale x continuous(limits = c(0, 300)) + ggplot(output combined, aes(x = user vog clears, fill = does user have vex)

As the amount of VoG clears grows, it’s becoming more difficult to discern what’s going on. Let’s move the histogram to the ‘fill’ position.

ggplot(output combined, aes(x = user vog clears, fill = does user have vex)) + geom histogram(binwidth = 5, position = “fill”) + scale x continuous(limits = c(0, 300)) + scale x continuous(limits = c(0, 300)) + scale x continuous(limits = c(0, 300

That’s a step forward. What’s noteworthy is that up until approximately 100 VoG clears, we appear to observe a steady rise in Vex ownership, after which the possession rate fluctuates dramatically. Let’s take a deeper look at this by plotting the proportion of vex possession versus VoG clears in a scatter plot.

group by(user vog clears) output combined percent > percent summarise at(vars(does user have vex), list(avg drop = mean)) > percent ggplot(aes(x = user vog clears, y = avg drop) + geom point() + # geom smooth() + scale x continuous(limits = c(0,400)) + scale y continuous(limits = c(0.01, 0.99)) ggplot(aes(x = user vog clears, y = avg drop

Let’s get started. This data seems to have a lot of heteroskedacity. That makes sense, too: as the number of VoG clears grows, the frequency of player replies decreases dramatically, making our samples more susceptible to severe variance. In contrast, as the number of VoG clears drops, the frequency of player replies rises, resulting in a regression to the mean. As a result, our model will be most accurate near the origin and less accurate as the VoG clears rise. Let’s get started on calculating our local regression model immediately.

output combined percent > output limited – output limited – output limited – output limited – output limited – output percent group by(user vog clears) percent > percent filter(user vog clears 400) percent > % summarise at(vars(does user have vex), list(avg drop = mean)) % percent filter(avg drop > 0.01, avg drop &llt; 0.99, avg drop &llt; 0.99, avg drop &llt; 0.99, avg_ # output limited – NULL weights – output combined percent > output limited – NULL weights – output combined percent > filter(user vog clears 400) percent % > % group by(user vog clears) % % % % % % % % % % % % a percentage figure () logit model – weights$n(avg drop user vog clears, data = output limited, degree = 2, span = 0.75, logit model – logit model – logit model – logit model – logit model – logit model – logit model – logit model – logit model – logit model – logit model summary(logit model) ## Call: ## loess(avg drop user vog clears, data = output limited, ## weights = weights$n, span = 0.75, degree = 2) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # (exact) ## ## ## ## ## ## ## ## ## ## ## span: 0.75 ## degree: 2 ## family: gaussian ## surface: interpolate cell = 0.2 ## normalize: TRUE ## parametric: FALSE ## normalize: TRUE ## parametric: FALSE ## FALSE drop.square

Now we can use our model to generate a set of Vex Mythoclast possession predictions based on VoG clears, which is quite amazing.

with(output limited, data.frame) pred data (user vog clears = user vog clears))))))))))))))))))))))))))))) percentages > drop na() % drop na() % drop na() % drop_ percent filter(percentage of user vog clears in percent logit model$x) pred data$vex prediction – predict(logit model, pred data = pred data, type = “response”) – predict(logit model, pred data = pred data, type = “response”) – predict(logit model, unique(pred data) – pred data unique Pred data unique saves a lot of space and avoids overplotting. percentages > percent ggplot(aes(user vog clears, vex prediction) + geom line() + scale x continuous(limits = c(0, 400)) + scale y continuous(limits = c(0.01, 0.99)) + ggplot(aes(user vog clears, vex prediction) + ggplot(aes(user vog cle

The amount of VoG clears a user has determines the projected proportion of Vex Mythoclast ownership in the population. Even better, we can proceed to the end of the table and ask the model for a forecast for a player who has finished VoG once:

1 1 0.04148327 user vog clears vex prediction

As a result, our model predicts that completing Vault of Glass once will give you a 4.150 percent chance of getting Vex Mythoclast. This is about what we would anticipate based on previous forecasts.

Now that we have our model and have carefully examined the Vex Mythoclast dataset, let’s end off with a fun ggplot display integrating all we’ve learned thus far.

## # A tibble: 387 x 2 ## user vog clears avg drop ## ## int> dbl> int> dbl> int> dbl> int> dbl> int> dbl> int> dbl> int> dbl> int> # 1 1 0.0235 ## 2 2 0.0389 ## 3 3 0.0513 ## 4 4 0.0878 ## 5 5 0.0744 ## 6 6 0.0836 ## 7 7 0.0957 ## 8 8 0.100 ## 9 9 0.102 ## 10 10 0.112 ##

This plot will be saved and used on the subreddit!

Limitations

There are a few flaws in this study that should be mentioned.

To begin, we only gather data from the top million rows of players who have finished VoG. As previously stated, we aren’t gathering the full dataset on the many individuals who have finished VoG just once, but rather a sample of those players.

A more serious analytical issue stems from the Bungie API’s architecture, which refuses to provide users’ character inventories if they are marked as “private” in the Bungie database. This is why we add a component in our model with an unknown coefficient to account for players who refuse to enable their inventories to be searched. That explains part of our large variance as the number of VoG clears rises; we expect many of these players to have Vex Mythoclast, but a small proportion of them will have private inventories.

Unfortunately, we won’t be able to do anything about this until we get statistics on how many players in Destiny 2 have a private inventory. This part of the analysis is out of our present scope, but it’s something we should look at eventually.

Conclusion

With the proviso that this determination is likely under-representative of the player community that allows for public inquiries of their character inventory, we infer that the probability of acquiring Vex Mythoclast each run of Vault of Glass is about 4.150 percent. As a result, we believe the true value of the Vex Mythoclast drop rate is closer to 5%.

Citations

  1. IGN is an acronym for Interactive Graphics Network (2014, June 11). E3 2014 gaming experience trailer for Destiny.

  2. Pinnkeyy is a slang term for a person who is (2021, September 16). www.reddit.com/r/raidsecrets/comments/pp5zno/vex mythoclast drop rate survey/vex mythoclast drop rate survey

  3. Mystify using TBE (2021, September 16). Here’s evidence that Vex has a 5% drop rate. www.reddit.com/r/DestinyTheGame/comments/ppmbxu/vex has a 5 drop rate heres proof/ r/DestinyTheGame/comments/ppmbxu/vex has a 5 drop rate heres proof/ r/DestinyTheGame/comments/ppmbxu/vex has a 5 drop_

Are you looking for PC games to play? Here are all of the new PC games to keep an eye on in 2021.

The pace of PlayStation 4 game releases isn’t going to slow down in 2021. Here’s everything to look forward to in the coming months.

The vex mythoclast destiny 2 is a player analysis tool that allows users to examine over a million player records and model VoG drops.

Frequently Asked Questions

How to get Vex Mythoclast to drop?

Vex Mythoclast is a legendary weapon, and it can only be obtained through random drops.

What is the drop chance for Vex Mythoclast Destiny 2?

The drop chance for the Vex Mythoclast Destiny 2 is 100%

How hard is it to get Vex Mythoclast Destiny 2?

Vex Mythoclast Destiny 2 is a very difficult weapon to find. It is not available in the games normal loot table, so you have to do some work to get it.

Related Tags

  • vex mythoclast drop chance destiny 2
  • vex mythoclast drop rate 2021
  • vex mythoclast drop rate calculator
  • vex mythoclast catalyst guide
  • vex mythoclast catalyst map