93 karma · joined April 15, 2014
My edu apps & games group: http://save-point.io
http://www.stefanom.org/2000000-systems-played/
It's a combination of (a) people straight up exploiting the fact that the server trusts that the data sent from the client is correct, (b) some truncation error that happens when the system is saved for replay may lead to a different final outcome when replayed (the systems may be highly chaotic), or (c) a bug that I haven't been able to reproduce yet.
(a) is something I struggle with coming up with a good solution. People can just enter the Javascript console and mess with the internals (change points, multipliers, etc.). When the data is sent to the server, the server cannot re-run the entire integration, it is too computationally expensive (almost 4,000,000 games played!). So what I do is do some basic checks on the server, loop over & reject systems that are clearly fake, ban IPs that are obviously trying to exploit the high score table, and call it a day since I cannot be monitoring the high-score table all the time. As I wrote in another comment, they are all fake internet points anyway, so I'm not too concerned. If anyone has a better idea, my email is stefano.meschiari@gmail.com -- drop me a line.
(b) is a feature inherent to the N-body problem, so not much can be done on that front.
(c) I still haven't come across a system that I created on my testing environment (that I save with some extra debug information), that behaves differently when replayed.
I should add that the entirety of the code will be published on GitHub, like my other projects (http://github.com/stefano-meschiari/), so people should feel free to fork, make pull requests, etc.
If anyone likes what I do, I will be available soon for freelancing. I have a small portfolio of applications I built here: http://www.stefanom.org/devel/
By the by, if you like what I've done, I will soon be available to freelance. A few other projects of mine are here:
If you have a reproducible case, let me know.
I'll do a bit of testing and see what I can come up with.
Admittedly, the point system could have been better designed. However, for this first attempt, I could not come up with a better alternative. "Exploiting" the point system within the game is not that easy, so the people that achieved the high-scores must have played tens, if not hundreds or more, of games before finding the right timing and initial condition.
Those are all imaginary internet points anyway :)
If you have any improvements or suggestions (especially on the programming side!), please email me directly.
Update: As an astronomer (and not a professional programmer), being on HN makes me super proud. Thank you!