Today, I just had experienced a game developer’s worst nightmare. Our silly mistake of a spelling error lead to the inflation of our own game’s economy.
A few newcomers needed some admin commands to be able to test the game on the main-place, testing ground wasn’t an option. We have a script that gives players admin if they are a whitelisted member. Upon whitelisting a few userIds, we made a mistake in how evaluate whether they get admin or not. Instead of checking whether their id was valid
(==), we accidentally checked for
(~=). A mistake that shouldn’t have happened working with such a delicate component of the game, but it happened nonetheless and there’s nothing we can do about it.
Big oopise, however went unchecked for a whole week and only got news of it today (the last day of the week). Therefore we had no choice but to rollback everyone’s data for at least a week. Although backlash was expected, and we got plenty… People were frustrated, we get it but refunds is non-negotiable for obvious reasons.
A suggestion was to read from an endpoint and infer userId and purchase amount, but weren’t sure if it would be accurate and reliable. So we settled with a solution we thought people would be happy with; we reimbursed their progress with a hefty compensation (in-game hard currency), an amount that they realistically wouldn’t have reached playing for a week.
What could we have done better?