Game Mechanics Enforced Droprates and Dynamic Lootpools

Lord Garak

Retinazer
I will be including only placeholder values in this thread. All values created by me serve only as examples and are not set in stone.

---------------------------------------------------------------------

The most frustrating experience the majority of Terraria players encounter is a failure to obtain a particular item after far exceeding its perceived rarity. This could be greatly alleviated with a system that applies parameters to the RNG. Such an overhaul could take a significant amount of developer time, but the algorithms themselves shouldn't be particularly difficult to code, and the game would be massively improved as a result.

https://gamepedia.cursecdn.com/terraria_gamepedia/9/98/Uzi.png?version=7e0b970b0314de276401e950f3ca92bf
Angry_Trapper.png


Example of Enforced Droprates: I'm farming Angry Trappers. The Uzi is a 1% drop from these enemies. This means in a perfect world 100 Trapper kills would merit a drop. After I kill 50 Angry Trappers (50% of the maximum required kills) without receiving an Uzi, the game multiplies the droprate by (1.1). The chance of obtaining an Uzi is now 1.1% when I kill my 51st Trapper. After that kill, I still have no Uzi. The droprate is compounded again: when multiplied by 1.1, the 1.1% droprate becomes 1.21%. After 60 unsuccessful Trapper kills, the Uzi has a 2.59% droprate. At 99 kills, it is statistically guaranteed to drop, as the droprate increases to over 100%.

This system would ensure that any rare item drops within a fair time frame, whilst still retaining the thrill of RNG.

---------------------------------------------------------------------

But what about items that are not rare? Many bosses, and enemies such as mimics, have different lootpool mechanics than normal monsters. They guarantee a specific drop from a range of available items in that lootpool. In this case, the first item to drop will become marginally rarer, and the algorithm will automatically pad the droprates of the other available items. This way, duplicates are much less likely to occur.

https://gamepedia.cursecdn.com/terraria_gamepedia/c/ce/Golem.png?version=88328ab87a864c2606319f8473a7e290
$


Example of Dynamic Lootpools: I'm farming Golem for a Heatray. My first defeat of Golem nets me a Stynger. Originally every weapon had a 12.5% chance to be chosen for my reward. However, now that I have gained a Stynger, that weapon is less likely to drop next time- let's say it now has a 10% chance. The 2.5% that was taken from the Stynger's droprate has been automatically redistributed among Golem's other 7 potential weapon drops- each now has an additional .35% chance to drop, bringing them to around 12.85% each. If I kill Golem again and still don't get my desired Heatray, the item that drops that time also loses some of its dropchance- or maybe I got another Stynger, in which case I have even less chances to get one next time. Once again, the redacted droprates are shuffled into the items that I have not yet obtained.

Once every possible weapon is obtained from a boss, the system resets and the items have their normal droprates again- the cycle begins anew. This system increases a player's chance of getting an item they desire, and reduces their chance of obtaining duplicates.

---------------------------------------------------------------------

I put a couple days of thought (and 30 minutes of fiddling with a graphing calculator) into this suggestion. A signature banner and inclusion in my Suggestion Hub will be introduced shortly. I hope you enjoyed reading, and as always I implore candid criticism and support.
 
Last edited:
I assume the drop chance resets after you get the rare drop?

I support the suggestion, but I think other enemies should have a different required amount of enemies to kill before the drop chance start increasing, angry trappers aren't super common so 50 enemies might be fine, but slimes should definitely require more enemies
 
I assume the drop chance resets after you get the rare drop?

I support the suggestion, but I think other enemies should have a different required amount of enemies to kill before the drop chance start increasing, angry trappers aren't super common so 50 enemies might be fine, but slimes should definitely require more enemies
The 50 was meant to demonstrate 50% of the way to killing enough enemies for an item drop, I'll edit.
 
The number of kills required to get a drop is a "geometric" distribution, with the drop chance as the parameter. Knowing this, the developers would need to choose what they believe is a reasonable probability of "success" by the Xth kill, and then use X as the number of kills to reach before the exponential function kicks in. This would be done by using the "cumulative distribution function" (CDF) of the shifted geometric distribution, which is 1-(1-p)^X, where p is the success chance per kill, and X is the number of kills.

Example: Suppose, as Lord Garak suggested, they wanted to use a 50% chance of success in X kills for the angry trapper. How many kills would this be?

P(X=?) = 0.5 --> Substitute the CDF for the probability statement on the left --> 1-(1-p)^X = 0.5

For the angry trapper the chance per kill to drop an Uzi, is p = 1/100 = 0.01

Doing some basic algebra...: 1-(1-0.01)^X = 0.5 --> 1 - 0.99^X = 0.5 --> 0.99^X = 0.5 --> take the natural log of both sides... --> X*ln(0.99) = ln(0.5) --> X = ln(0.5)/ln(0.99) --> X = 68.967.. = about 69 kills.

69 kills is the number kills of an angry trapper by which you have approximately a 50% chance that it has dropped an Uzi.

If you notice from the math above, to adjust for different success odds you can just alter the terms inside the log functions like so...
X = ln(1-S)/ln(1-p) where S = the desired probability of a drop by the Xth kill, and p is still the chance of success per kill.

So for instance, suppose the game developers were WAY stingier than we are, and they didn't want to start the exponential scaling until there's a 95% natural chance that the item has dropped for the player. In that case, the X they'd use would be...

X = ln(1-0.95)/ln(0.99) = 298.0728... = about 300 kills.


Let's just hope they aren't quite that stingy. Or god forbid, requiring a 99.9% natural chance before the function kicks in: X = ln(1-0.999)/ln(0.99) = 687 kills.
No item is worth that... XD
 
The number of kills required to get a drop is a "geometric" distribution, with the drop chance as the parameter. Knowing this, the developers would need to choose what they believe is a reasonable probability of "success" by the Xth kill, and then use X as the number of kills to reach before the exponential function kicks in. This would be done by using the "cumulative distribution function" (CDF) of the shifted geometric distribution, which is 1-(1-p)^X, where p is the success chance per kill, and X is the number of kills.

Example: Suppose, as Lord Garak suggested, they wanted to use a 50% chance of success in X kills for the angry trapper. How many kills would this be?

P(X=?) = 0.5 --> Substitute the CDF for the probability statement on the left --> 1-(1-p)^X = 0.5

For the angry trapper the chance per kill to drop an Uzi, is p = 1/100 = 0.01

Doing some basic algebra...: 1-(1-0.01)^X = 0.5 --> 1 - 0.99^X = 0.5 --> 0.99^X = 0.5 --> take the natural log of both sides... --> X*ln(0.99) = ln(0.5) --> X = ln(0.5)/ln(0.99) --> X = 68.967.. = about 69 kills.

69 kills is the number kills of an angry trapper by which you have approximately a 50% chance that it has dropped an Uzi.

If you notice from the math above, to adjust for different success odds you can just alter the terms inside the log functions like so...
X = ln(1-S)/ln(1-p) where S = the desired probability of a drop by the Xth kill, and p is still the chance of success per kill.

So for instance, suppose the game developers were WAY stingier than we are, and they didn't want to start the exponential scaling until there's a 95% natural chance that the item has dropped for the player. In that case, the X they'd use would be...

X = ln(1-0.95)/ln(0.99) = 298.0728... = about 300 kills.


Let's just hope they aren't quite that stingy. Or god forbid, requiring a 99.9% natural chance before the function kicks in: X = ln(1-0.999)/ln(0.99) = 687 kills.
No item is worth that... XD
Yes, that's the flaw that makes me think my original scaling isn't appropriate. It would create a bell curve that basically guarantees the item would be dropped somewhere around 65 kills.
 
Yes, that's the flaw that makes me think my original scaling isn't appropriate. It would create a bell curve that basically guarantees the item would be dropped somewhere around 65 kills.

I see no problem with that. XD
But then, I've never been a fan of grinding lol. But really, if the purpose of RNG is to give a bit of thrill at the prospect of getting lucky, this is still preserved because after all, the player could always get lucky and find the drop in the first couple of kills. If it's too easy, all we'd need to do is tweak parameters.
 
Droprates are fine for me. I didn't encounter any problem with it, since I like to grind. I'm not against it at all though.
(I say droprates are fine to me cause i dropped 3 ancient necro helmets by Killing 30 Angry bones in a row, although the droprate is 0.22%; I guess RNG is RNG?)
 
After thinking it trough it's quite a good idea TBH. I can totally see this implemented… maybe optionnally? IDK, if it was implemented, would we still see our fav youtubers raging against RNG?
 
I would love this to be a thing especially for the Chaos Elementals, as I've killed over 500 of them and still no Rod of Discord.
 
I would love this to be a thing especially for the Chaos Elementals, as I've killed over 500 of them and still no Rod of Discord.
For Chaos Elementals, a simpler solution might be to make them drop another, more common item, and several of that item can be used to craft the Rod of Discord, maybe another item too. It sort of smooths out the RNG by making progress come in smaller steps instead of all out once out of nowhere.
 
For Chaos Elementals, a simpler solution might be to make them drop another, more common item, and several of that item can be used to craft the Rod of Discord, maybe another item too. It sort of smooths out the RNG by making progress come in smaller steps instead of all out once out of nowhere.
I like this idea, perhaps it could be a Chaos sprit or something that is a 1 in 10 drop, and you need 15 of them, 10 souls of light and 50 crystal shards to make the rod, but that's an idea for another topic.
 
I will be including only placeholder values in this thread. All values created by me serve only as examples and are not set in stone.

---------------------------------------------------------------------

The most frustrating experience the majority of Terraria players encounter is a failure to obtain a particular item after far exceeding its perceived rarity. This could be greatly alleviated with a system that applies parameters to the RNG. Such an overhaul could take a significant amount of developer time, but the algorithms themselves shouldn't be particularly difficult to code, and the game would be massively improved as a result.

$
Angry_Trapper.png


Example of Enforced Droprates: I'm farming Angry Trappers. The Uzi is a 1% drop from these enemies. This means in a perfect world 100 Trapper kills would merit a drop. After I kill 50 Angry Trappers (50% of the maximum required kills) without receiving an Uzi, the game multiplies the droprate by (1.1). The chance of obtaining an Uzi is now 1.1% when I kill my 51st Trapper. After that kill, I still have no Uzi. The droprate is compounded again: when multiplied by 1.1, the 1.1% droprate becomes 1.21%. After 60 unsuccessful Trapper kills, the Uzi has a 2.59% droprate. At 99 kills, it is statistically guaranteed to drop, as the droprate increases to over 100%.

This system would ensure that any rare item drops within a fair time frame, whilst still retaining the thrill of RNG.

---------------------------------------------------------------------

But what about items that are not rare? Many bosses, and enemies such as mimics, have different lootpool mechanics than normal monsters. They guarantee a specific drop from a range of available items in that lootpool. In this case, the first item to drop will become marginally rarer, and the algorithm will automatically pad the droprates of the other available items. This way, duplicates are much less likely to occur.

$
$
$
$
$
$
$
$
$


Example of Dynamic Lootpools: I'm farming Golem for a Heatray. My first defeat of Golem nets me a Stynger. Originally every weapon had a 12.5% chance to be chosen for my reward. However, now that I have gained a Stynger, that weapon is less likely to drop next time- let's say it now has a 10% chance. The 2.5% that was taken from the Stynger's droprate has been automatically redistributed among Golem's other 7 potential weapon drops- each now has an additional .35% chance to drop, bringing them to around 12.85% each. If I kill Golem again and still don't get my desired Heatray, the item that drops that time also loses some of its dropchance- or maybe I got another Stynger, in which case I have even less chances to get one next time. Once again, the redacted droprates are shuffled into the items that I have not yet obtained.

Once every possible weapon is obtained from a boss, the system resets and the items have their normal droprates again- the cycle begins anew. This system increases a player's chance of getting an item they desire, and reduces their chance of obtaining duplicates.

---------------------------------------------------------------------

I put a couple days of thought (and 30 minutes of fiddling with a graphing calculator) into this suggestion. A signature banner and inclusion in my Suggestion Hub will be introduced shortly. I hope you enjoyed reading, and as always I implore candid criticism and support.

I’ve always thought this would be a nice idea in my head, but is there a limit to drop numbers? If I farm for a couple of uzi’s will the percentage ever lock at 1%? Or would it just keep resetting after every drop.
 
An alternative solution is, at least for some of the really rare things like Rod of Discord, instead of having it be an ultra-rare drop, have the enemies drop rare-but-less-rare items, several of which can be used to craft the thing you want. It can keep the average number of kills the same, but change the probability distribution towards the center. It also means that the player can make progress towards their goal in parts instead of it being a single all-or-nothing event.

The downside to this is adding yet another random thing for players' inventories that can only be used for one purpose. Creating other purposes for these items that require fewer of them might be a nice idea too. Maybe even just giving them a high selling price or letting you craft them into other materials?

Example:
Chaos Elementals have a 5% chance to drop Chaos Essence. 25 Chaos Essence can be used (maybe with some other more common ingredients) to craft the Rod of Discord, but a single Chaos Essence can be distilled into a fair amount of Crystal Shards, Cursed Flames or Ichor.
 
First of all I think its a nice idea but here's my thought on it: couldn't a simpler system be used?

For example: Create a custom drop system for each item like this:
Every 25th trapper kill the Uzi drop rate will be 25% and because a rod of discord is more valuable it could be 10% every 25th kill.

The numbers are just as examples. Since the developers have RNG systems in place, i feel like the system above would respect it more because its just as much a gamble as the current system but with a little kindness implemented.
The system you thought up ensures a drop at X amount of kills which kind of strays from the RNG that the developers have a feel for.

However perhaps your system is more suitable for boss drops, just like Acamaeda's system below.
 
Back
Top Bottom