Several ppl including OP seem to believe it has to be KISS ("Keep It Simple Stupid"),
- because complex formula requires more resources
- complex computations run at each looting event increases the total resource requirements exponentially
- and finally Occams Razor, it there is a simple way to do the same, it must be true.
So, let's debunk this.
The 1st clue is the "global waves". Everyone has noticed those waves - for a while it's relatively quiet, then suddenly several globals within 20 sec, followed by another period of relative silence. You can almost see the
crontab job running in the background...
(I have no idea if the server runs on Linux/UNIX, prolly not, but you get the idea)
Nothing is actually calculated at each looting event, it's a fake. Well it's not entirely fake, they prolly used the actual loot algorithm but stripped down anything that requires computational power, simplified it down to the extreme.
The real algorithm only runs after certain intervals and it's essentially a compensation mechanism. That being said, it's not a fair compensation mechanism, it's so-so, fair and unfair at the same time. If the computing power requirements are essential you can set it up to run at longer intervals whenever overall system load increases.
The second clue for the contents of our black box is the security concerns. You could have been a magnificent game developer all your life and you most definitely know how "to do it right" - how to write elegant algorithms that are simple, fast and effective.
None of the games you developed was a RCE. From time to time someone figured out how to cheat the system. They got more loot with less effort, but in the end it wasn't really a big problem as all the cheater would get was a worthless "gold" (game currency). I believe you can already see where I'm going with this...
I don't agree with people who say the code that controls the resources/transactions/gains/losses/balance/etc - the RCE part of the game is extremely simple. The code that controls mob AI in EU is indeed very primitive, the economy system running in the background is not.
I don't believe it's incredibly complex either.
It's complex enough for it's purpose. The
purpose is to
make sure nobody can predict the outcome of the future events.
Y'know, the random number generator is not entirely random, right? You don't have to be a hacker to know about this. There's sequences of numbers that will repeat after some time (oversimplified but you get the point, right?). So, now, if it's really important to avoid the scenario where somebody records the system output, finds the match in the series generated by random number generator and thus will be able to predict the future outputs... you obviously have to make the system more complex, right?
So,
this now becomes our basic requirement. From this point forward we can use KISS and create the most elegant, simple and effective formula we possibly can. As long as the requirements are met, no need to make it any more complex.
Now, I have no idea how the system works or what was used as a seed but I'm trying to imagine what it could be.
What input could we use to make the system unpredictable? It has to be something nobody else can replicate or have access to. So, how about using the collective input from all the online players? You could serialize it and feed the stream back into your system. Nobody will ever be able to predict or even monitor the actions of
all the human players. It's a pretty safe bet nobody can possibly "hack" this unless they can control your server or at least the whole network around it.
OK, it's a acrazy idea and prolly wrong, but I thought it's interesting...