In online multiplayer games, it used to be possible to freely trade items. Now, the ability to trade either doesn't exist or tends to be extremely limited. Is there a reason for this trend beyond replayability?
Trading items requires a huge amount of engineering and test. This is because of the nature of data in general - transferring an item isn’t always made atomic. Most of the time, it has two distinct procedures:
- Create a copy of the item and place it into the receiving player’s inventory
- Remove the item from the giving player’s inventory
Here’s where it gets tricky. We can’t guarantee that both steps will happen - there could be a database error, a power fluctuation, packet loss, or some other random occurrence. If something weird interrupts between performing #1 going to #2, we have a dupe bug. If something weird interrupts #2 going to #1, the item disappears and our players submit lots of tickets for lost items to customer service.
So what this means is that we need a lot of very difficult engineering and testing to make sure that all of the parts of each step are secure and can’t be broken or exploited. It needs extensive testing in laggy and crashy conditions. We also need tools for customer service to track, log, and grant items like this. But it doesn’t end here, this is just what’s needed for trading to work mechanically.
We also need to build out the part that the players directly interact with. This means we need a UI system that integrates with the existing UI. We need some way for players to show items to each other. We need a way for players to chat with each other in order to talk about what items they have to trade. We need some means of players locking in the trade. We need some way of validating that both players have agreed to the trade on the back end. We need art for all of this.
On top of all of this, remember - this is only handling direct trading between players. This doesn’t even begin to address things like a centralized market system to connect those looking for X with those who have X, or handling monetary transactions. This doesn’t cover players searching for the items they want. This only encompasses the most basic transaction system itself, and that’s almost guaranteed to be insufficient in the eyes of most players.
As time has passed, devs have learned the pitfalls of multiplayer inventory systems. A lot of old games ran into all sorts of trouble with trading systems that lead to costly results. This is the main reason why a lot of games don’t support item trading between players any more - the total resource cost to achieve acceptable functionality is really really high.