Ongeki: Certain game-wide stats don't save/display properly #127

Closed
opened 2024-04-17 01:44:29 +00:00 by Kumubou · 1 comment
Contributor

Currently, Ongeki profiles are not properly displaying/saving certain in-game stats properly. This includes:

  • The overall clear count (shown right above the song list, on the left, in a yellow tab)
  • Folder clear count (the x / xxx stat in each folder tab in-game). Note: Folder lamps (battle grade, tech grade, full bell, full combo/all break) do currently work.
  • Technical award counts (in a tab on the right above the song list, shows the number of All Break and All Break+ awards achieved. Only shows up in Difficulty sort.)

This may need to be split up into two (or more?) issues, as I was able to track down one of the causes and prepare a fix but have made zero headway on the other issue.

The technical award counts aren't properly sent to the game because get_tech_count in schema\score.py is stubbed out, so it's not implemented at all. I'll be shortly submitting a pull request with a change to implement that -- this has been submitted in pull request #128 .

However, this won't fix the issue for existing accounts on servers as the database will only contain the stats from the last session for each user (since the game just blindly accepts the server's results and isn't calculating anything client-side). The fix is likely to have a script that can trawl through ongeki_score_playlog, find every play with either isAllBreak = 1 (All Break) or isAllBreak = 1 and judgeBreak = 0 (All Break+), remove duplicate chart entries, figure out the difficulty for each song/chart combination (should be able to cross-reference that in ongeki_static_music), calculate the awards by difficulty and then write that out to the database in ongeki_score_tech_count.

(Silly aside: Ongeki doesn't actively track All Break+ lamps in ongeki_score_best, it's only tracked in the aggregate tech award count. Can't go by technical score either, since you can get All Crits and not get a perfect score due to missing bells or damage taken (...you can technically get All Break+ and fail, but that's an extreme edge case only possible in a couple of charts IIRC)).

The folder clear counts... I have no idea where that would even be stored (or why the game isn't calculating that client-side, as those counts can change every update as songs are added and removed). I thought it might have been related to ongeki_profile_activity, but that only seems to record two types of records. Kind 1 records an activityid I can't really trace down, a sortid that is a timestamp in epoch time and two values that look to be associated with a music id and difficulty id of the associated chart played. Kind 2 seems to only record activityids that match up with played music ids and a sortid that is also a timestamp in epoch time, with no other values recorded. (Presumably to track the last time a player played a given song?)

Currently, Ongeki profiles are not properly displaying/saving certain in-game stats properly. This includes: - The overall clear count (shown right above the song list, on the left, in a yellow tab) - Folder clear count (the x / xxx stat in each folder tab in-game). Note: Folder lamps (battle grade, tech grade, full bell, full combo/all break) _do_ currently work. - Technical award counts (in a tab on the right above the song list, shows the number of All Break and All Break+ awards achieved. Only shows up in Difficulty sort.) This may need to be split up into two (or more?) issues, as I was able to track down one of the causes and prepare a fix but have made zero headway on the other issue. The technical award counts aren't properly sent to the game because `get_tech_count` in `schema\score.py` is stubbed out, so it's not implemented at all. I'll be shortly submitting a pull request with a change to implement that -- this has been submitted in pull request https://gitea.tendokyu.moe/Hay1tsme/artemis/pulls/128 . However, this won't fix the issue for existing accounts on servers as the database will only contain the stats from the last session for each user (since the game just blindly accepts the server's results and isn't calculating anything client-side). The fix is likely to have a script that can trawl through `ongeki_score_playlog`, find every play with either `isAllBreak = 1` (All Break) or `isAllBreak = 1 and judgeBreak = 0` (All Break+), remove duplicate chart entries, figure out the difficulty for each song/chart combination (should be able to cross-reference that in `ongeki_static_music`), calculate the awards by difficulty and then write that out to the database in `ongeki_score_tech_count`. (Silly aside: Ongeki doesn't actively track All Break+ lamps in `ongeki_score_best`, it's only tracked in the aggregate tech award count. Can't go by technical score either, since you can get All Crits and not get a perfect score due to missing bells or damage taken (...you can technically get All Break+ and _fail_, but that's an extreme edge case only possible in a couple of charts IIRC)). The folder clear counts... I have no idea where that would even be stored (or why the game isn't calculating that client-side, as those counts can change every update as songs are added and removed). I thought it might have been related to `ongeki_profile_activity`, but that only seems to record two types of records. Kind 1 records an activityid I can't really trace down, a sortid that is a timestamp in epoch time and two values that look to be associated with a music id and difficulty id of the associated chart played. Kind 2 seems to only record activityids that match up with played music ids and a sortid that is also a timestamp in epoch time, with no other values recorded. (Presumably to track the last time a player played a given song?)
Owner

Closing as this was fixed in #128

Closing as this was fixed in #128
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Hay1tsme/artemis#127
No description provided.