Quick answer: Loot bugs are RNG bugs: a drop table that rolled wrong, a seed that produced an impossible item, or a duplication exploit that doubled a reward. To reproduce, capture the drop seed or RNG state, the exact table evaluated, the roll value and the entry it selected, and the inventory delta. With the seed and table attached you can replay the roll deterministically instead of farming the boss a thousand times.
Loot is where players pay closest attention and where the math is hardest to reproduce. Someone kills the boss and the legendary never drops, or it drops twice, or a level five item appears from a level forty table. Each of these is a roll against a drop table seeded by a random number generator, and the player only sees the result. Telling them to do it again is cruel when the bug fires once in five hundred kills. This post covers the RNG and drop table state to capture so a loot complaint carries the seed and the table that produced it, making the roll replayable on your machine.
Loot bugs are RNG bugs
Every drop is a roll: the game advances an RNG, reads a value, and walks a weighted drop table to pick an entry. A missing legendary, an over generous double drop, or a wrong tier item all come from that pipeline producing an unexpected result. The trouble is that the roll depends on the RNG's internal state at that instant, which is gone the moment the next roll consumes it. Without the seed or the captured state you cannot reproduce the specific roll, and farming the encounter hoping it recurs is a terrible use of engineering time.
Drop tables themselves are a frequent culprit. A weight typo, an entry pointing at the wrong item id, a conditional that includes a table it should not, or rarity math that rounds the wrong way will skew results in ways that only show up across many rolls. The fix is to capture which table was evaluated and the actual roll value alongside the entry it selected, so you can see whether the RNG misbehaved or the table was simply wrong. Those are different bugs with different fixes, and the captured roll tells them apart.
Capture the seed and the roll
The heart of a loot report is the roll itself. Capture the RNG seed or the generator state immediately before the drop, the identifier of the drop table that was evaluated, the raw roll value or values, and the entry the table selected as a result. If your loot uses layered rolls, quantity then rarity then specific item, capture each layer's value. With this you can seed a generator to the exact state, run the same table, and watch it produce the same drop, which collapses a thousand kill repro into a single deterministic test.
Capture the inputs that selected the table too, since drop tables are usually chosen by context: the enemy or container id, the player level, the difficulty, and any active luck or magic find modifiers. A drop that looks wrong is often the right roll against the wrong table, picked because a modifier was applied incorrectly. Recording the table selection inputs alongside the roll lets you see whether the bug was in choosing the table or in the roll against it, which are separate code paths you do not want to confuse.
Duplication and inventory exploits
Duplication bugs are a special class because they are not really about the roll, they are about inventory state changing twice from one event. A drop that grants an item but does not decrement a server counter, a race between client and server inventory writes, or a stack that splits and rejoins incorrectly can all dupe items. For these, capture the inventory delta on the drop: the item ids and quantities added, the source event, and any transaction or grant id. If two grants share one source event id, you have your dupe, and the transaction trail shows exactly where the second grant slipped in.
Exploits deserve extra scrutiny because players who find a dupe rarely report it, they use it. Sudden clusters of identical high value items in your economy are the signal, so capturing the grant source and transaction id on every drop pays off when you go hunting. Being able to filter drops by source event and spot one event that produced two grants turns an economy mystery into a concrete code path. The same capture that helps you debug an honest missing drop also arms you against the dishonest doubled one.
Separate bad luck from broken tables
Many loot reports are not bugs at all, they are players running into variance and assuming the system is broken. Two hundred kills without the rare drop feels broken even when the math is working as designed. The captured rolls let you prove it: if the table weights are correct and the rolls are uniformly distributed, the player simply hit a cold streak, which is a communication problem rather than a code one. Reserve your engineering effort for cases where the captured roll selected an entry the table should never have produced.
This distinction also guards your tuning. Reacting to bad luck reports by quietly bumping drop rates inflates your economy and trains players to complain louder. By grouping reports against their captured table and roll data you can see whether a hundred missing legendary reports share a genuine table bug or are just the long tail of a correctly tuned distribution. Hard numbers let you hold the line on intended rarity while still fixing the real defects, which keeps both the loot fantasy and the economy intact.
Setting it up with Bugnet
Bugnet's in-game report button lets a player flag a bad drop the instant it happens, and you attach the loot state as custom fields: the drop seed or RNG state, the table id evaluated, the roll values, the selected entry, and the inventory delta with its source event and transaction id. The player taps report and writes legendary did not drop, and the entire roll context rides along. Occurrence grouping then folds the hundreds of similar reports into one issue with a count, so you see at a glance whether a table is genuinely broken or just unlucky.
Because the table id and selected entry are fields, you can filter the dashboard to a single drop table and see every report against it, which is exactly the view you need to judge whether its distribution is off. When a cluster of reports all show the same wrong entry from the same table, the bug is unmistakable, and when they show a normal spread of entries, the players just hit variance. One dashboard turns scattered loot complaints into a per table audit you can act on with confidence.
Test loot tables with captured rolls
The captured seeds become a regression suite. Once a report proves a table produced a wrong entry, save the seed and table as a test that asserts the corrected drop, so a future weight edit cannot silently break it again. Run large batch simulations of each table to verify the empirical distribution matches the designed weights, catching skews long before players grind into them. Loot is too statistical to test by hand, but with real seeds and batch runs you can make the math provable rather than hoped for.
Pair that with disciplined economy monitoring. The same grant and transaction ids that help you debug dupes also let you watch for items entering the economy faster than your drop rates should allow, an early warning that an exploit is live. Treat every loot report as data about either the RNG, the table, or the inventory pipeline, route it accordingly, and your loot system stops being a black box. Players keep the thrill of the rare drop while you keep the confidence that the thrill is honest.
Loot is just RNG against a table. Capture the seed, the table, and the roll and a once in five hundred drop bug becomes a single test.