배지 문구와 같은 4·10·20 경계에 1·2·3·5 배율을 얹은 사다리. 첫 등급 아래 1점 블록은 여전히 10점이라 이전 점수와 비교가 유지된다. 고정 커밋의 소스와 9월 8일 EditMode 기록을 그림으로 옮겼다.
배지 문구와 같은 4·10·20 경계에 1·2·3·5 배율을 얹은 사다리. 첫 등급 아래 1점 블록은 여전히 10점이라 이전 점수와 비교가 유지된다. 고정 커밋의 소스와 9월 8일 EditMode 기록을 그림으로 옮겼다.

보여주기만 하던 숫자에 보상을 붙이면 모든 점수가 바뀐다

Ice Breaker 1.5.0 이전에는 콤보가 측정돼 효과음 음높이와 COOL·ICE RUSH·FROZEN FEVER 배지에 쓰였지만 점수는 항상 기본값의 10배였다. 콤보는 측정되고 보여진 뒤 버려졌다. 배율을 붙이는 순간 같은 플레이의 점수가 달라지므로, 첫 등급 아래에서는 예전 값을 그대로 유지하기로 했다.

배지 문구가 이미 알려 준 구간을 그대로 쓴다

플레이어는 이미 세 문구를 읽고 있었다. 등급 경계를 4·10·20으로 두고 배율은 1·2·3·5로 올렸다. ComboMeter는 장면, 카메라, AudioSource 없이 계산하는 순수 정적 클래스라 EditMode 테스트가 사다리 전체를 덮는다. 연결된 Unity Test Framework 문서가 EditMode와 PlayMode 검사의 차이를 설명한다.

테스트가 잠그는 것

  1. 경계 양쪽: 콤보 3은 등급 없음, 4는 COOL, 9는 COOL, 10은 ICE RUSH, 19는 ICE RUSH, 20과 99는 FROZEN FEVER다.
  2. 하위 호환: 콤보 0에서 1점 블록은 여전히 10점이다. 1.5.0이 이전 점수를 조용히 부풀리거나 깎지 않는다.
  3. 같은 사다리: 일반 1점, 크로스 코어 3점, 폭탄 4점이 같은 배율을 탄다. 기본 3점 블록을 콤보 20에서 깨면 3×10×5=150점이고, 기본 4점 블록은 콤보 10에서 4×10×3=120점이다.
  4. 음수 방지: ScoreFor는 Mathf.Max(0, basePoints)로 0 미만을 0으로 만든다.
  5. 발사와 런 기록 분리: RecordBreak가 발사 최고 콤보와 런 최고 콤보를 따로 기록하고 BeginVolley는 발사 값만 초기화한다.
  6. 등급 안내는 각 등급별로 발사당 1회: 50개 발리에서 블록마다 문구를 띄우면 화면이 묻힌다. TryAnnounceTier는 더 높은 등급에 처음 도달할 때만 true를 주고, BeginVolley가 다음 발사에서 다시 무장한다.

다른 프로젝트에서 따라 할 순서

  1. 콤보 0·3·4·10·20에서 등급과 배율을 표로 적고 테스트로 고정한다.
  2. 첫 등급 아래 점수가 이전 버전과 같은지 확인한다.
  3. 블록 종류가 달라도 같은 배율을 타는지 하나씩 확인한다.
  4. 발사가 바뀌면 안내 상태를 초기화하고 런 최고치는 남긴다.
  5. 등급 안내를 각 등급별로 발사당 1회로 제한해 문구 스팸을 막는다.

이 기록이 증명하지 않는 것

9월 8일 EditMode 16/16 실행 기록과 고정 커밋 소스를 9월 21일 대조했다. 테스트는 계약을 잠글 뿐 배율 값 1·2·3·5와 경계 4·10·20이 이 게임에 재미있거나 균형 잡혔다는 뜻이 아니다. 다른 게임의 정답도 아니며, 실제 플레이 점수 분포나 실기기 체감은 검증하지 않았다.

검증 범위

기존 실행기록·소스 대조

검증일

검증 환경Unity 6000.5.3f1 · Windows Editor · September 8 retained EditMode receipts; ComboMeter source review on September 21

Ice Breaker PR #40의 병합 소스와 2026년 9월 8일 Unity 6000.5.3f1 EditMode 16/16 시험 XML을 대조했다. ComboMeter 8개 테스트는 그 실행 안에 포함된다. 글 작성 중 게임을 새로 실행하지 않았고, 배율 값이 재미·난이도·실제 플레이 점수 분포에 적합한지는 검증하지 않는다.