This analysis aims to estimate the utility of dropping bombs in order to achieve Flex Drops before cutting the shrubs at Lake Hylia. The most extreme case of dropping 4 bombs was analyzed, but results can be trivially extrapolated to other amounts. Getting Flex Drops reduces the odds of getting no bomb drops from all 3 patches from 9.7% to 0.8%. In the simulations, Flex Drops resulted in trials ending with 20 bombs increasing from 20% to 31%; however, 33% of simulations without Flex Drops ended with 19 or 20 bombs. The results showed dropping 4 bombs resulted in a functionally insignificant increase of 0.5% in the final bomb count mean, while also introducing the 0.8% risk of ending with only 5 bombs.
If willing to stop at 19 bombs, rather than 20, simulations without Flex Drops could stop cutting before the 3rd grass patch 23% of the time, as opposed to 20% of the time with Flex Drops. Should runners choose to keep cutting until 20 bombs, however, only 9% of attempts were able to stop cutting before the 3rd group of shrubs. In conclusion, about 9 bombs appears to be the tipping point for whether a runner should waste bombs to achieve Flex Drops or not. Furthermore, due to the 3 bomb limit of Ocarina of Time, and time wasted throwing bombs, wasting any more than 3 bombs will likely slow the runner down, while not increasing bomb count significantly.
It is recommended that all runners study the requirements for Flex Drops before attempting to manipulate them in their runs, as it is not uncommon for runners to learn about this topic and begin wasting bombs at points in the run when Bomb Flex Drops are not possible due to other missing requirements. Another conclusion from this study could be that bombs should be used liberally prior to visiting Lake Hylia, as extra bombs have a minimal effect compared to having Flex Drops, and any time that could be saved using them is well worth it.
In some of the speedrunning routes for Ocarina of Time, specifically 100%, having a decent bomb count is paramount to being able to accomplish all necessary tricks. Due to being the location with the highest density of shrubs in the entire game, Lake Hylia is an ideal location along many routes for farming bombs drops. Below are the drop charts for all shrub patches for both Child and Adult Link:
In the past several info-graphics were created explaining Ocarina of Time's Drop Tables and Flex Drops, and even specifically Bomb Drops from shrub patches. All relevant infographics are shown below:
In order to optimize bomb drops at Lake Hylia and increases chances of ideal bomb counts throughout a run, it's important to understand how and when a runner should consider reducing their bomb count in order to improve the odds of bomb drops via Flex Drops. Getting Flex Drops doubles the odds of a bomb drop from any individual shrub, and since 3 shrub patches of 12 shrubs exist at Lake Hylia, this increase is multiplied across 36 shrubs.
The aim of this study is to test whether spending excess bombs that prevent Flex Drops could be expected to result in a net gain in bomb count. The end goal of such analysis is to assist runners in making the decision as to whether or not they should intentionally spend bombs prior to reaching Lake Hylia. Two effects were measured: the final bomb count, and the number of shrub patches that were necessary to cut before achieving a bomb count of 20. The analysis was also run with the Normal group, without Flex Drops, stopping at 19 bombs, rather than continuing for 20, as this is a realistic expectation from a normal run.
While in-game testing would be ideal for accuracy, running a large number of simulations in-game and tracking the results automatically is more complicated than this analysis warrants. Instead, the known probabilities for the drops were used to create a simulation of outcomes, allowing us to use the Monte Carlo method by running 1 million simulations of cutting the grass patches at Lake Hylia.
# Cutting bush group Monte Carlo
attempts <- 1000000 #1 million trials
bombFinishNormal <- bombFinishNormalGroups <- bombFinishFlex <- bombFinishFlexGroups <- vector(length=attempts)
bombNormalProbability <- 1/16
for(attempt in 1:attempts)
{
bombFlexProbability <- 1/8 #Reset flex drop odds
bombCountFlex <- 5 #Reset bomb counts
bombCountNormal <- 9
groupCountFlex <- 0 #Reset number of bush groups cut
groupCountNormal <- 0
for(bushGroup in 1:3) {
if(bombCountFlex < 20){ #Increment bush groups cut
groupCountFlex = groupCountFlex + 1
}
if(bombCountNormal < 20) {
groupCountNormal = groupCountNormal + 1
}
if(bombCountFlex > 5){
bombFlexProbability <- 1/16 #Remove Flex drops if already got a bomb drop
}
for(plant in 1:12) {
drop <- runif(1, 0, 1) #Random number from 0 to 1
if(bombCountFlex < 20 && drop < bombFlexProbability) {
if(bombFlexProbability == 1/8 && (plant == 1 || plant == 4 || plant == 9)) { #Bushes immediately next to Link
if(runif(1, 0, 1) > .5){
bombFlexProbability <- 1/16 #Remove Flex drops partway through the spin attack
}
}
bombCountFlex <- bombCountFlex + 5
}
if(bombCountNormal < 20 && drop < bombNormalProbability) {
bombCountNormal <- bombCountNormal + 5
}
}
if(bombCountNormal > 20) { #Fix count back to max of 20 if over 20.
bombCountNormal <- 20
}
if(bombCountFlex > 20) {
bombCountFlex <- 20
}
}
#Add results of current attempt to results tables
bombFinishNormal[attempt] <- bombCountNormal
bombFinishFlex[attempt] <- bombCountFlex
bombFinishNormalGroups[attempt] <- groupCountNormal
bombFinishFlexGroups[attempt] <- groupCountFlex
}
table(bombFinishNormalGroups) #Table for Number of groups cut before 20 bombs without flex drops
table(bombFinishFlexGroups) #Table for Number of groups cut before 20 bombs with flex drops
table(bombFinishFlex) #Table of final bomb counts for flex drop attempts
summary(bombFinishFlex) #Statistical summary of bomb counts for flex drops
table(bombFinishNormal) #Table of final bomb counts without flex drops
summary(bombFinishNormal) #Statistical summary of bomb counts without flex drops
Two different simulations of 1 million trials were run, one with a goal of achieving 20 bombs, the other with a goal of achieving 19 bombs, in order to better compare how a runner would likely respond in a real run. The simulations would stop cutting patches early if they achieved their goal before cutting all 3. Their results below will be shown in parallel.
One potential goal could be to reduce the number of patches a runner has to cut to fill up their bombs, this could potentially save a few seconds if Flex drops potentially allow a runner to stop cutting earlier than normal. The data for this is shown below:
Patches Cut | 1 | 2 | 3 |
---|---|---|---|
Flex Trials | 149999 | 241022 | 608979 |
Flex Proportion | 15.0% | 24.1% | 60.9% |
Normal Trials | 35256 | 151402 | 813342 |
Normal Proportion | 3.5% | 15.1% | 81.3% |
Patches Cut | 1 | 2 | 3 |
---|---|---|---|
Flex Trials | 151203 | 240692 | 608105 |
Flex Proportion | 15.1% | 24.1% | 60.8% |
Normal Trials | 171182 | 276914 | 551904 |
Normal Proportion | 17.1% | 27.7% | 55.2% |
Another goal could be maximizing the expected or median bomb count after cutting the bushes. This would mean that one method might, on average, end up giving more bombs than the other. The data for this is shown below:
Trial Type | Median | Mean |
---|---|---|
Normal | 19 | 17.24 |
Flex | 20 | 17.33 |
Trial Type | Median | Mean |
---|---|---|
Normal | 19 | 16.84 |
Flex | 20 | 17.33 |
Should having at least a certain number of bombs be important, then knowing what percent of the trials of each type gives an idea of how often one method will give that result compared to the other. The data for these results are split by goals of 20 and 19 bombs, and Flex and Normal trial types:
Bomb Count | Trials | Proportion |
---|---|---|
5 | 8138 | 0.8% |
10 | 129578 | 13.0% |
15 | 250039 | 25.0% |
20 | 612245 | 61.2% |
Bomb Count | Trials | Proportion |
---|---|---|
9 | 97555 | 9.8% |
14 | 235181 | 23.5% |
19 | 274300 | 27.4% |
20 | 392964 | 39.3% |
Bomb Count | Trials | Proportion |
---|---|---|
5 | 8099 | 0.8% |
10 | 129730 | 13.0% |
15 | 249785 | 25.0% |
20 | 612386 | 61.2% |
Bomb Count | Trials | Proportion |
---|---|---|
9 | 98224 | 9.8% |
14 | 234795 | 23.5% |
19 | 666981 | 66.7% |
Breaking the results down into easily digestible graphs, it becomes easier to rapidly identify the consequences of attempting to improve our outcomes with Flex Drops.
The above charts show Flex Drops are significantly more effective at achieving a final bomb count of 20, with 61.2% of trials ending with 20 bombs. However, when the simulation stops farming bombs at 19, 66.6% of the Normal trials reached 19 bombs. Other parallel bomb counts (9,10; 14,15) are fairly similar, however, Flex Drops do have the benefit of being 1 bomb ahead.
Starting with 9 bombs is worst-case scenario when comparing to Flex Drops. However, the results for any other bomb count would be the same, simply subtract out however many bombs less there are from the final total bomb count. For example, if a runner started with 8 bombs, 66.6% of attempts would end up at 18 bombs or more, with 39.3% of attempts getting 20 bombs should the runner choose to try for 20 bombs.
Since the difference of 1 bomb is rarely significant in runs, most likely runners will accept stopping at 19 bombs. This difference becomes more significant should a runner enter Lake Hylia with less than 9 bombs, and may be enough to justify wasting bombs to get Flex drops.
There is a similar result with the number of patches the simulations had to cut before running out of patches or reaching their goal of 19 or 20 bombs:
Again, it shows that if a runner chooses to stop at 19 bombs, rather than top off at 20, Flex Drops yield actually slightly worse results. This result makes sense, considering Flex Drops must get an entire additional drop in order to keep up.
The results of these tests show that around 9 bombs is about the tipping point where it begins to stop making sense to throw away bombs in order to gain the benefits of Flex Drops. Due to the game's limitations of only allowing 3 bombs out at any period of time, it is likely faster to simply not throw away the bombs.
Another factor that should be taken into consideration is simplicity. While Flex drops have the potential to save time on a run, it may be more effort than it's worth for a runner to worry about them. On the other hand, runners who are aware of the data shown here can plan ahead. Knowing that farming with 5 bombs will yield similar end results to farming with 9 bombs means that an experienced runner may be able to use up any bombs they have above 5 doing small optimizations prior to reaching Lake Hylia.
The other potential issue of using Flex Drops is it allows a 0.8% chance of getting no bombs at all and leaving Lake Hylia with only 5 bombs. This would be detrimental to any run, and may not be an acceptable risk. Bottom line, dropping 2-3 bombs is probably around the maximum range where it's worthwhile, more than that incurs unnecessary risk for no benefit.
Thank you for taking the time to read this analysis, I hope it plays a role in improving your runs.