4 ms·
Usually a character leaving a game without having their inventory saved indicated a desync between the game server and the MCP servers. The game server was auth
by RainaRelanah 9y ago
Usually a character leaving a game without having their inventory saved indicated a desync between the game server and the MCP servers. The game server was authoritative over your character for a specific game, while the MCP server was authoritative for your character between games. If the game server became disconnected from the MCP server for whatever reason, you could drop all of your items, leave the game, and the MCP server would still believe you had those items as the game server never saved your character's state with MCP.
This desynced state resulted in a ton of commonly known dupe methods in 1.11 and 1.12 where you forcefully disconnect the GS from MCP. The popular one was spamming bone wall (creating entities on the map), then spamming AoEs which interacted with said entities. The game server would have to loop over all entities for each AoE spell you cast to determine if the spell applied to it, which caused the single-threaded game server to spend too long in each iteration of the main game loop that caused it to desync from the MCP. Blizzard eventually "fixed" this by adding a check for how long the main game loop took to complete. If it hit a certain value, it would disconnect all players from the game to despawn entities and 'prevent' dupes.
There were more fun bugs between GS <-> MCP as well. For example for many patches there was a size limit on your character. If your character data was over a set size, the GS wouldn't even try saving your character to the MCP and would roll it back to the last valid save. If you joined a game near the limit, dropped an item, picked up an item that was larger in size (had more stats etc) which pushed you over the limit, then left the game, the server would revert your save back to when you had the original item.
D2 was full of esoteric exploits like these. It was made worse by some Blizzard developers going rogue and abusing the buggy state of the codebase to assist third party item sellers for personal profit.
- stevenwoo 9y agoYou definitely have more expertise at your fingertips on the server side of D2 than I do! I vaguely remember the strike team talking about those game server issues, it's been so long I totally forgot about it. We had the servers on racks in the data centers running Windows NT and I remember the very first problems were trying to get the game to support hundreds of games per server and finding all sorts of memory issues and network issues that caused the games to crash or run out of memory. I was unaware of the developers going rogue - that's wild. But there was one guy in our office who got hauled away by the FBI because he was hosting a file sharing node using the office T1.