Gryphon_

Mathematics Contributor
  • Content count

    938
  • Joined

  • Last visited

About Gryphon_

  • Rank
    Tests New Guns on Allies

Profile Information

  • Gender
    Male
  • Location
    Los Angeles
  • Server
    NA

Recent Profile Visitors

3,436 profile views
  1. It has its place; try the wall with the slot in Siegfried Line to not only snipe the field in a medium-like way but also spot everything there without even trying. It seems to accrue lots of assisted when you are trying for damage. Lately I have been using its speed to drive around all over the place, take sneaky shots at stuff - especially their lights - and light up stuff in passing. It might be big and not have the best camo, but its very fast and has the best view range. Even without vents I'm getting 503 with food.
  2. I was wrong about vstab. I took vents off and put it back on, and now I'm getting better results both on Sheridan and Fatton. One has to wonder how good aimtime has to be before vstab isnt worth it, as we are sub 2 second on both those and even though the difference is hardly noticeable the results seem to be positive.
  3. The weakness is the camo, the strengths are the VR and gun handling. If you want to make the gun handling one iota better than it already is, use VStab. If you want to mitigate the camo, use vents and gain even more VR at same time (11m). My 'does it need Vstab' test is to snap aim at something and figure whether you could even settle and fire before the circle is minimized.If the circle beats you, you dont need Vstab.
  4. But....I always thought the official forums were for serial posters with nothing to say....?
  5. Interesting. I've seen my winrate do same; I got to the magic '54%' overall, then along comes 9.20 and it goes into reverse - hard. Now, every night I'm struggling to attain high 40's WR. No matter what I play, even when I should have carried, I rarely do anymore. I just cant figure it out in terms of 'what changed'. The only clue I have is that in early days of the new MM (9.18) I was cleaning up in tier 7 with the T71 and in tier 9 with the Lwt, but now the MM is far less kind - my T71 is hardly ever top tier now, whereas back in 9.18 is was almost all the time(!).
  6. Please bear in mind that if you update the values every day, all the other sites out there using your values will be constantly updating, as not all do it automatically. Just because you have the server power to update every day doesnt mean thats a good use of your resources - the values of any tank shouldn't change by a noticeable amount in a day.... It would be far better to update every month, and do the averages every 6. More frequent changes than that will be a pain for all the sites and modders to keep up with.
  7. Are we playing the same tank? I have a BIA crew and I'm getting sub-2 sec aim time and a dispersion of 0.3 - none better at tier 9. If you can't hit stuff at 300m with this tank, you don't have any better options. But - it has to be said that this tank is the medium of choice for those who normally play lights. It is not the medium of choice for those who play heavies (T-54, 430, etc).
  8. Its only a POS if you try to brawl with it. Put 300m between you and the other guys and its very good indeed. Of course, discussion is about the elite tank...dont play it when not elite, especially not without the L7 gun
  9. Its still bad. Amazing they can release crap like this and creep it up ever so slowly (and too slowly) then in same timeframe drop Defenders, Scorpions, and other ridiculously OP prems into the game.
  10. And you can take the vstab off if playing the 105, add vents, +12m VR, boss with a 390 punch. I've also noticed that for a tier ten light in CW, a 300 pen HEAT round > 248 pen AP round (T-100LT) - especially at long range.
  11. According to some people who've obviously never played it. The Sheridans advantage is VR, but is poor on camo, so it has no useful advantage unless passive
  12. On wotlabs, most sites, and some mods, yes. However, the xvm team is close to having an automated way of producing per-tank values so you will see a slightly different WN8 score in XVM (mine is 4 different overall)
  13. 50 was what the original WN8 team came up with. I think while WN9 was being researched we found that raising it didn't really make any difference. The big change that sirmax is making is to raise the account threshold to 10,000 battles (was 1000). THAT makes a big difference, if you have a huge dataset.
  14. Update: I had some thoughts on how to update the averages the 'hard' way. I figured it out and the following R script works. #apply filters as needed userTankStats <- dataMaster[dataMaster$battles > 50,] userTankStats$damage_dealt <- as.double(userTankStats$damage_dealt) userTankStats <- userTankStats[,c("userid", "compDescr","title", "type", "tier", "countryid", "battles", "victories","damage_dealt","frags", "spotted","defence_points")] userTankStats$userid <- as.factor(userTankStats$userid) any(is.na(userTankStats)) # number of battles in dataset sum(userTankStats$battles) #calc actuals userTankStats$aFRAG <- userTankStats$frags/userTankStats$battles userTankStats$aDAMAGE <- userTankStats$damage_dealt/userTankStats$battles userTankStats$aSPOT <- userTankStats$spotted/userTankStats$battles userTankStats$aDEF <- userTankStats$defence_points/userTankStats$battles userTankStats$aWIN <- 100*userTankStats$victories/userTankStats$battles any(is.na(userTankStats)) #load average expected values from wnefficiency.net - currently version 31 wnefficiencyURL <- "http://www.wnefficiency.net/exp/expected_tank_values_31.csv" expectedValues <- read.csv(wnefficiencyURL) names(expectedValues) <- c("type","tier", "eFRAG", "eDAMAGE","eSPOT", "eDEF", "eWIN") head(expectedValues) any(is.na(expectedValues)) # add the expected values data to the user tanks data require(dplyr) userTankStats <- inner_join(x=userTankStats, y=expectedValues, by = c("type","tier") ) # fix chars that upset file naming userTankStats$title <- chartr("*/", "_-", userTankStats$title) any(is.na(userTankStats)) # calculate the user rSTATS userTankStats$rFRAG <- userTankStats$aFRAG/userTankStats$eFRAG userTankStats$rDAMAGE <- userTankStats$aDAMAGE/userTankStats$eDAMAGE userTankStats$rSPOT <- userTankStats$aSPOT/userTankStats$eSPOT userTankStats$rDEF <- userTankStats$aDEF/userTankStats$eDEF userTankStats$rWIN <- userTankStats$aWIN/userTankStats$eWIN userTankStats$rFRAGproduct <- userTankStats$rFRAG * userTankStats$battles userTankStats$rDAMAGEproduct <- userTankStats$rDAMAGE * userTankStats$battles userTankStats$rSPOTproduct <- userTankStats$rSPOT * userTankStats$battles userTankStats$rDEFproduct <- userTankStats$rDEF * userTankStats$battles userTankStats$rWINproduct <- userTankStats$rWIN * userTankStats$battles any(is.na(userTankStats)) # calculate the user rSTATc's userTankStats$rWINc <- pmax(0,(userTankStats$rWIN - 0.71)/(1 - 0.71)) userTankStats$rDAMAGEc <- pmax(0,(userTankStats$rDAMAGE - 0.22)/(1 - 0.22)) userTankStats$rFRAGc <- pmax(0,pmin(userTankStats$rDAMAGEc + 0.2,((userTankStats$rFRAG - 0.12)/(1 - 0.12)))) userTankStats$rSPOTc <- pmax(0,pmin(userTankStats$rDAMAGEc + 0.1,((userTankStats$rSPOT - 0.38)/(1 - 0.38)))) userTankStats$rDEFc <- pmax(0,pmin(userTankStats$rDAMAGEc + 0.1,((userTankStats$rDEF - 0.10)/(1 - 0.10)))) userTankStats$rWINcproduct <- userTankStats$rWINc * userTankStats$battles userTankStats$rDAMAGEcproduct <- userTankStats$rDAMAGEc * userTankStats$battles userTankStats$rFRAGcproduct <- userTankStats$rFRAGc * userTankStats$battles userTankStats$rSPOTcproduct <- userTankStats$rSPOTc * userTankStats$battles userTankStats$rDEFcproduct <- userTankStats$rDEFc * userTankStats$battles any(is.na(userTankStats)) # calculate the user WN8 per tank userTankStats$WN8 <- with(userTankStats, 980*rDAMAGEc + 210*rDAMAGEc*rFRAGc + 155*rFRAGc*rSPOTc + 75*rDEFc*rFRAGc + 145*pmin(1.8,rWINc)) userTankStats$WN8product <- userTankStats$battles * userTankStats$WN8 any(is.na(userTankStats)) # filter out all tanks where WN8 is below median WN8 for every users' tanks require(dplyr) median.userTankStatsWN8 <- summarize(group_by(userTankStats,userid), median_WN8 = median(WN8, na.rm=TRUE)) userTankStatsFiltered <- inner_join(x=userTankStats, y=median.userTankStatsWN8, by = "userid") userTankStatsFiltered <- userTankStatsFiltered[userTankStatsFiltered$WN8 >= userTankStatsFiltered$median_WN8,] nrow(userTankStatsFiltered) any(is.na(userTankStatsFiltered)) rm(median.userTankStatsWN8) #calculate the user account WN8, rSTATs, and rSTATSc require(dplyr) userAccountStats <- summarize(group_by(userTankStatsFiltered, userid), WN8product = sum(WN8product), rWINproduct = sum(rWINproduct), rDAMAGEproduct = sum(rDAMAGEproduct), rFRAGproduct = sum(rFRAGproduct), rSPOTproduct = sum(rSPOTproduct), rDEFproduct = sum(rDEFproduct), rWINcproduct = sum(rWINcproduct), rDAMAGEcproduct = sum(rDAMAGEcproduct), rFRAGcproduct = sum(rFRAGcproduct), rSPOTcproduct = sum(rSPOTcproduct), rDEFcproduct = sum(rDEFcproduct), battles = sum(battles)) userAccountStats$user_WN8 <- userAccountStats$WN8product / userAccountStats$battles userAccountStats$user_rWIN <- userAccountStats$rWINproduct / userAccountStats$battles userAccountStats$user_rDAMAGE <- userAccountStats$rDAMAGEproduct / userAccountStats$battles userAccountStats$user_rFRAG <- userAccountStats$rFRAGproduct / userAccountStats$battles userAccountStats$user_rSPOT <- userAccountStats$rSPOTproduct / userAccountStats$battles userAccountStats$user_rDEF <- userAccountStats$rDEFproduct / userAccountStats$battles userAccountStats$user_rWINc <- userAccountStats$rWINcproduct / userAccountStats$battles userAccountStats$user_rDAMAGEc <- userAccountStats$rDAMAGEcproduct / userAccountStats$battles userAccountStats$user_rFRAGc <- userAccountStats$rFRAGcproduct / userAccountStats$battles userAccountStats$user_rSPOTc <- userAccountStats$rSPOTcproduct / userAccountStats$battles userAccountStats$user_rDEFc <- userAccountStats$rDEFcproduct / userAccountStats$battles userAccountStats <- userAccountStats[,c("userid", "user_WN8", "user_rWIN", "user_rDAMAGE", "user_rFRAG", "user_rSPOT", "user_rDEF", "user_rWINc", "user_rDAMAGEc", "user_rFRAGc", "user_rSPOTc", "user_rDEFc")] any(is.na(userAccountStats)) #merge back require(dplyr) userTankStatsFiltered <- inner_join(x=userTankStatsFiltered, y=userAccountStats, by = c("userid")) any(is.na(userTankStatsFiltered)) # create table of compDescr and title as index for the loop require(dplyr) listOfTanks <- summarize(group_by(userTankStatsFiltered, tier, type ), users = n() ) any(is.na(listOfTanks)) # loop to do linear regression for each rSTAT vs user account rSTAT, derive corrected average expected values newExpectedValues <- expectedValues for (i in 1:10) { for (j in 1:5) {0 sample <- subset(x = userTankStatsFiltered, tier == i & type == j) if (nrow(sample) == 0){ next } rDAMAGEmodel <- lm(rDAMAGE ~ user_rDAMAGE, data = sample) rDAMAGEcorrection <- rDAMAGEmodel$coef[[1]] + rDAMAGEmodel$coef[[2]] eDAMAGE_new <- round(rDAMAGEcorrection * expectedValues$eDAMAGE[which(expectedValues$tier == i & expectedValues$type == j)], 2) newExpectedValues$eDAMAGE[which(newExpectedValues$tier == i & newExpectedValues$type == j)] <- eDAMAGE_new rFRAGmodel <- lm(rFRAG ~ user_rFRAG, data = sample) rFRAGcorrection <- rFRAGmodel$coef[[1]] + rFRAGmodel$coef[[2]] eFRAG_new <- round(rFRAGcorrection * expectedValues$eFRAG[which(expectedValues$tier == i & expectedValues$type == j)], 2) newExpectedValues$eFRAG[which(newExpectedValues$tier == i & newExpectedValues$type == j)] <- eFRAG_new rSPOTmodel <- lm(rSPOT ~ user_rSPOT, data = sample) rSPOTcorrection <- rSPOTmodel$coef[[1]] + rSPOTmodel$coef[[2]] eSPOT_new <- round(rSPOTcorrection * expectedValues$eSPOT[which(expectedValues$tier == i & expectedValues$type == j)], 2) newExpectedValues$eSPOT[which(newExpectedValues$tier == i & newExpectedValues$type == j)] <- eSPOT_new rDEFmodel <- lm(rDEF ~ user_rDEF, data = sample) rDEFcorrection <- rDEFmodel$coef[[1]] + rDEFmodel$coef[[2]] eDEF_new <- round(rDEFcorrection * expectedValues$eDEF[which(expectedValues$tier == i & expectedValues$type == j)], 2) newExpectedValues$eDEF[which(newExpectedValues$tier == i & newExpectedValues$type == j)] <- eDEF_new rWINmodel <- lm(rWIN ~ user_rWIN, data = sample) rWINcorrection <- rWINmodel$coef[[1]] + rWINmodel$coef[[2]] eWIN_new <- round(rWINcorrection * expectedValues$eWIN[which(expectedValues$tier == i & expectedValues$type == j)], 2) newExpectedValues$eWIN[which(newExpectedValues$tier == i & newExpectedValues$type == j)] <- eWIN_new } } any(is.na(newExpectedValues)) names(newExpectedValues) <- c("type","tier", "frag", "dmg","spot", "def", "win") #export new values date <- as.Date(Sys.Date(), "%m/%d/%Y" ) expected_value_filename <- paste("~/R/WN8 Averaged/averaged_expected_values_",date,".csv") write.csv(x=newExpectedValues,file=expected_value_filename ,row.names = FALSE)