Adding unique ID to every looted item seems to be quite popular idea, yet still considered “too hard to implement and unclear”.
Let’s have a fresh approach!
Duping - what is it, why do we want to fight it?
Duping is basically duplicating items exploiting the game mechanics. Why is that bad?
It spoils economy - valuable and hard to get items are duped and sold to other players. It makes them way easier to get, therefore they often become cheaper. It isn’t even the end, however I won’t explain how does the RotMG economy work.
It breaks Terms of Service - that’s self-explanatory.
It leads to limitations - duping is responsible for some items being soulbound and abandoning the unsoulbound weekend idea.
It increases the gap between dupers and honest players - honest players work hard to obtain their beloved items while dupers just make a copy of another one.
What’s that ID system?
Many people suggested to assign ID to every looted item. For example:
Player loots potion of speed. It’s the first potion of speed looted, so it gets an ID of 1.
Another player also loots potion of speed. It is now second potion of speed, so it gets an ID of 2.
The next player loots potion of speed with id of 3.
System should register every drop and put it into a database, so it will know which IDs are still free. For example:
Player drinks potion of speed #2. The system registers, that it no longer exists and clears the entry in database.
Another player loots potion of speed. We have #1 and #3 IDs in use, so the new potion of speed gets the lowest possible ID of 2.
That way the highest ID of potion of speed will correspond to the highest amount of potions of speed existing at the same time and therefore won’t cause problems due to number being too high.
How does it prevent from duping?
While duplicating potion of speed, both old and new potion of speed will have the same ID, let’s say #2. Provided that both potions of speed are in the inventory of the duper, system dedects that there are two identical items with same ID, and simply deletes one of the items. Since they are the same object it doesn’t matter which one will it be.
What if both objects weren’t in the inventory, let’s say one was in the chest?
Theoretically, there can be a situation where duper leaves one copy in chest before the system managed to detect there are two items with same ID.
One way is to scan duper’s vault in search of items with same ID as items in player’s inventory and delete one on his way to nexus (or wherever).
Another way is to delete every item with the same ID when one of them dissapears/changes owner (if it changes the owner, new owner will still have the real item while other items disappear).
How does it work? Or does it?
Let’s imagine a situation when duper clones potion of speed #2. He leaves one copy in the chest while quickly escaping to the nexus or whatever, confusing the system not to detect there are two potions of speed with ID #2. However as soon as he drinks/sells/throw out the potion of speed, all potions of speed #2 disappear and raise player’s speed by 1/spawn potion of speed #2 in the buyer’s inventory/spawns potion of speed #2 in pbag on ground.
As long as all data is stored on the database, it can be accessed by the server to check if everything is all right. To lower the number of operation the server has to process, it would check for duplicates only in specific situations and only in limited space. Additionally it could check the whole database once a day/week, whatever, to kill all dupes that somehow weren’t detected earlier.
So… I think it would work and it wouldn’t be really that hard to implement.
What would community gain?
Basically: more stable economy and probably some soulbound items would become unsoulbound. Also, the crime rate would lower!
The ID system is way that could prevent duping, it only have to be approached well! Also, most of the process can take place outside of the flash, so it isn’t really the problem!
I could write some more examples and explantations, however I didn’t want to make the text ridiculusly long. If you have any doubts about the system, I’ll try to dispel them!