You're wrong, this doesn't work. The old floating point value that's still lying around is useless for computing what pp the user would have with the new score. The previously discarded score would be necessary for that computation.CookChefSteak wrote:
Correct, the old score is lost, but the old PP value(the raw floating point number) doesn't have to be. If it's stored temporarily as just a number, you could regularly calculate a player's pp after he sets a highscore then compare it to that temporarily stored raw value. That is, store it before you update a player's pp, compare it, update with the appropriate value, and delete the temporary memory segment. There is no need to recalculate the old pp value again using 2 highscores per map as you said. It's a really quick and simple algorithm, and I honestly do not see the problem in implementing that. You must know something regarding the algorithm that I don't if you're still not convinced.
anyways an example:
1. a highscore is achieved
2. current player pp is 2280
3. 2280 stored as float = current_pp
3. pp method runs with the highscore as an argument
4. algorithm yields 2270 as the appropriate pp considering the new score(float newpp = ppcalculate(args);)
5. newpp > current_pp ? server.query(newpp) : server.query(current_pp);
that's it...
I wrote you a PM in case you want to know why and/or want to continue the discussion - it doesn't fit in this thread.