elliotttate / beatsaver-laravel

Rewrite of beatsaver.com (https://github.com/beatsaver/beatsaver) using the laravel framework
https://discord.gg/8B44zqM
MIT License
39 stars 19 forks source link

Don't reset upvotes/downvotes when updating song archive. #74

Open lmadara1 opened 5 years ago

lmadara1 commented 5 years ago

Several mappers are discouraged from updating and improving their songs because they don't want to reset these stats.

If for some reason an updated map is objectively worse than it was before, people can always change their votes, right?

BinaryElement commented 5 years ago

I understand the logic of "a different map/file should have different counts", but the reality of the matter is this logic is harming Beat Saber. Mappers will actually not update maps, or they will leave unfixed maps up alongside duplicate uploads, solely to keep their numbers.

There are times where practicality beats out logic, and this is one of them. We should absolutely never punish mappers for improving their maps post-release - having the leaderboards reset is already enough to discourage map fixes, we don't need to make it worse.

luludotdev commented 5 years ago

While we've agreed internally that this is a good idea, it's now a matter of implementation. Due to the way votes are stored in the database it would take a somewhat non-trivial rewrite of the voting system.

Currently, we sadly don't have the manpower for this.

Byorun commented 5 years ago

for a short term solution you could manipulate the cache. every song is loaded into the memcache/redis cache upon first load or after the cache is expired. you could hook into that progress and just add all the ups and downs together. But this would result in irremovable or possible double votes.

A second way would be to simply relink the votes to the new song variation. That way the votes would disappear from the the old version completely and only the most recent version of the songs would have votes.

ProfHugo commented 5 years ago

What about making it so that updating the archive no longer makes a new database entry and instead simply replaces the old zip file in the database with the new one?