Currently scores are stored as rows of information corresponding to each row in the chart
The information stores the deltas of your hits/flags about needing to hit notes
Drawbacks are
Cannot faithfully represent other engines like osu! with different LN mechanics or Etterna where cbrushing is basically the entire score system
Code is somewhat difficult to explain/get familiar with
Scores easily invalidated by bugs found and tweaks made to game mechanics
Scores easily invalidated by glitches with mods and other issues
Solution
SCORE FORMAT 1: Stores a score as sequence of snapshots of your keyboard hits
This is:
How osu, quaver, soundsphere do it
Easy to compress to potentially smaller than current score format
More powerful, allowing the existing data to be calculated quite trivially from it
Theoretically interoperable with osu, quaver and soundsphere scores/replays (we'll see)
SCORE FORMAT 2: The existing format
This format becomes internal (format 1 is what is saved in the database) and used to provide information for the score screen - You calculate the data in a pass or live while playing as before, and it contains judgement counts/standard deviations/all that stuff
New drawbacks (old ones are gone)
Need to know the note data for the chart in order to know anything about the score
Need to know the modded note data for the chart in order to know anything about modded scores
(These both impact server-side calculations of any kind)
this one is more involved
Setup
Currently scores are stored as rows of information corresponding to each row in the chart The information stores the deltas of your hits/flags about needing to hit notes
Drawbacks are
Solution
SCORE FORMAT 1: Stores a score as sequence of snapshots of your keyboard hits This is:
SCORE FORMAT 2: The existing format
New drawbacks (old ones are gone)