fix: calculate chart scores with song formulas and hidden note weights
Publish GitHub Pages output / publish (push) Successful in 54s

This commit is contained in:
2026-09-06 21:51:42 +09:00
parent b97a4008bb
commit e688036d11
409 changed files with 7732 additions and 1559 deletions
+49
View File
@@ -0,0 +1,49 @@
# 코로네 Expert 원본 SUS 분모 계산
2026-09-06, 공개 에셋 카탈로그 revision 70에서 `chart_m0341_expert.sus`를 확보했다. SHA-256은 `b6523da612971b3c8816a8fbb5d86d14d569b259aae84387f2818dd31944d969`이며 서비스 채보의 원본 해시와 일치한다.
## 집계
| 종류 | 개수 | 1개 가중치 | 합 |
|---|---:|---:|---:|
| 일반 | 464 | 1000 | 464000 |
| 독립 플릭 | 85 | 1050 | 89250 |
| 홀드 시작 | 109 | 1000 | 109000 |
| 홀드 끝 | 83 | 1000 | 83000 |
| 홀드 끝 플릭 | 26 | 1000 | 26000 |
| 보이는 릴레이 | 40 | 100 | 4000 |
| 홀드 중간 판정 | 151 | 100 | 15100 |
| 비가시 릴레이 | 105 | 100 | 10500 |
| 베지어 제어점 | 0 | 100 | 0 |
| **전체 분모** | | | **800850** |
득점 판정 958개의 합은 790350이다. 비가시 릴레이 105개를 분모에만 더한다. 일반 노트=1 단위로는 **800.85**다.
공개 [SUS 파서](https://github.com/UntitledCharts/sonolus-level-converters/blob/main/sonolus_converters/holodori_sus/loader.py)의 종류 구분과 압축 토큰 규칙을 대조했다. family 3의 kind 4/5를 베지어/비가시 릴레이로 집계한다. `0xNN`은 base62 빈 칸 압축이며 노트가 아니다. 같은 채널이 여러 줄로 나와도 모두 유지한다. 생성되는 홀드 중간 판정은 SUS 헤더의 카테고리별 개수를 사용한다. 따라서 이 도구는 전체 득점 타임라인을 복원하는 파서가 아니다.
## 검증
- 기존 실측 대상 18개 채보 + 코로네 Easy/Normal/Hard = **알려진 분모 21개 전부 일치**.
- 코로네 Hard: 득점 합 495550 + 비가시 48×100 = **500350**.
- 실제 엔진의 기존 일반 PERFECT 실측 19건은 계속 모두 일치한다.
- 이번 Expert 분모는 원본 구조와 검증된 집계법으로 산출한 값이다. 코로네 Expert의 신규 게임 실측값은 아직 없다.
SUS 헤더의 `SCORE_LEVEL`은 26이지만, 현재 공개 마스터 및 서비스 난이도는 **28**이다. 환산식에는 28을 사용한다. 곡별 계수는 5다.
```text
곡·난이도 배율 = 2.3 × (1 + 5/1000 × (28 − 5)) = 2.5645
scoreRatio = 800.85 / 2.5645 = 312.28309612010145
일반 PERFECT 기본점수 = 종합력 / 312.28309612010145
```
## 적용과 재현
신규 값은 외부 연구 메타데이터와 구분하여 `sus-score-formulas.json`에 출처·해시·집계표·검증 대상과 함께 기록했다. 공식 적용 및 채보 수집은 이 값을 함께 읽고, SUS 해시가 달라지면 적용을 거부한다. 현재 서비스 카탈로그 **388개 모두 formula-v1**이며 추정값으로 남아 있는 채보는 없다. 신규 곡의 분모가 자동으로 확보되는 것은 아니며 원본 확보·집계·검증 과정이 필요하다.
```sh
node scripts/calculate-sus-score-formula.mjs data/raw/sus/chart_m0341_expert.sus
node scripts/validate-sus-score-formulas.mjs data/raw/sus
npm run test:sus-score
```
원본 SUS는 `data/raw/sus`에 저장되어 있으며 Git 및 공개 배포에는 포함하지 않는다.