개발자 일지

음악의 이면: 곡 퀄리티 알고리즘을 만든 방법

Feb 9, 20267분 소요

결정론적 RNG를 활용한 공정하고 흥미롭고 전략적인 곡 퀄리티 메커닉 설계에 대한 개발자 일기.

Road to Headliner는 어떻게 당신의 노래가 히트곡인지 망작인지를 결정할까요? 이 개발자 일기에서 게임에서 가장 중요한 시스템 중 하나인 곡 퀄리티 알고리즘의 커튼을 걷어올립니다.

디자인 과제

곡 퀄리티가 공정하지만 예측 불가능하게 느껴지길 원했습니다. 실제 음악처럼요. 최고의 뮤지션과 스튜디오는 일관되게 더 나은 결과를 만들어야 하지만, 항상 놀라움의 여지가 있어야 합니다. 차고 밴드도 걸작을 쓸 수 있고, 비싼 스튜디오 세션이 평범한 트랙을 만들어낼 수도 있습니다.

퀄리티 공식

곡 퀄리티는 여러 요소에서 계산됩니다:

  • 뮤지션 평균 스킬: 밴드 멤버들의 기본 재능. 이것이 가장 큰 요소이며 영입과 연습을 통해 가장 많이 통제할 수 있습니다
  • 밴드 결속력: 밴드가 얼마나 잘 함께 작업하는지. 결속력 있는 밴드가 더 좋은 곡을 씁니다
  • 아이디어 퀄리티: 연습 중에 개발된 원초적인 개념. 일부 아이디어는 본질적으로 더 강합니다
  • 스튜디오 티어: 더 높은 티어 스튜디오는 퀄리티 보너스를 제공합니다 (더 좋은 장비, 경험 많은 엔지니어)
  • 프로듀서 보너스: 프로듀서를 고용했다면 일관된 퀄리티 향상이 추가됩니다

무작위성 요소

여기서 흥미로워집니다. 제어된 분산을 추가하기 위해 결정론적 난수 생성기 (HMAC-SHA256)를 사용합니다:

  • 8% 확률의 럭키 브레이크: 퀄리티 +15 보너스. 모든 것이 딱 맞아떨어지는 마법 같은 스튜디오 세션을 나타냅니다
  • 5% 확률의 망작: 퀄리티 -20 패널티. 때로는 그냥 케미스트리가 맞지 않습니다

이것은 훌륭한 밴드도 안 좋은 날이 있을 수 있고, 고전하는 밴드가 행운을 잡을 수 있다는 것을 의미합니다. 결정론적 RNG는 이 결과들이 재현 가능하고 악용 불가능하도록 보장합니다.

연쇄 보너스

밴드가 같은 유형의 행동을 반복할 때 플로우 상태에 들어갑니다:

  • 같은 유형 행동 3연속: 퀄리티 +3
  • 4연속: 퀄리티 +6
  • 5연속: 퀄리티 +9
  • 6회 이상: 퀄리티 +12

이것은 창의적 모멘텀이라는 현실 현상을 반영합니다. 매일 연습하는 뮤지션이 산발적으로 연습하는 뮤지션보다 더 좋은 곡을 씁니다. 녹음 행진 중인 밴드가 더 응집력 있는 앨범을 만들어냅니다.

이 시스템을 선택한 이유

현재 접근 방식에 안착하기 전에 여러 대안을 탐색했습니다:

순수 RNG (거부): 너무 무작위적이었습니다. 나쁜 결과가 전략을 망칠 때 플레이어들은 무력감을 느꼈습니다. 좋은 결과의 흥분보다 좌절이 더 컸습니다.

완전 결정론적 (거부): 너무 예측 가능했습니다. 플레이어들이 공식을 파악하면 놀라움이 없었습니다. 게임이 스프레드시트 작업이 되어버렸습니다.

분산 있는 가중 결정론적 (선택): 두 세계의 최선. 당신의 결정 (좋은 뮤지션 영입, 연습, 좋은 스튜디오 사용)이 결과를 의미 있게 개선하지만 항상 충분한 분산이 있어 흥미롭게 유지됩니다.

게임플레이에 미치는 영향

곡 퀄리티는 이후 모든 것에 영향을 미칩니다:

  • 차트 성과: 퀄리티가 높은 곡이 차트에서 더 높이 올라갑니다
  • 스트리밍 수익: 퀄리티가 직접적으로 수동 수입에 곱해집니다
  • 팬 전환: 퀄리티가 높은 곡이 라이브로 연주될 때 더 많은 팬을 끌어들입니다
  • 공연 수익: 세트리스트 퀄리티가 공연 성과에 영향을 미칩니다

이것은 만족스러운 피드백 루프를 만들어냅니다: 퀄리티에 투자, 더 나은 결과 얻기, 더 많은 퀄리티에 투자. 하지만 분산은 기계적으로만 최적화할 수 없다는 것을 의미합니다. 럭키 브레이크가 예상치 못한 히트를 줄 때나 망작이 계획 변경을 강요할 때 적응해야 합니다.

배운 점

플레이테스팅에서 가장 큰 교훈은 인식된 공정성이 수학적 공정성보다 더 중요하다는 것입니다. 초기 버전은 동일한 평균 결과를 가졌지만 분산이 높았습니다. 운이 나쁜 플레이어들은 통계적으로 문제가 없었음에도 시스템이 조작됐다고 느꼈습니다.

이렇게 해결했습니다:
- 극단적인 결과 줄이기 (퀄리티 -50 망작 없음)
- 주요 요소 (뮤지션 스킬)를 무작위성보다 더 영향력 있게 만들기
- 일관된 플레이에 보상을 주는 연쇄 보너스 추가
- 결과가 왜 다른지 플레이어가 이해할 수 있도록 퀄리티 요소를 투명하게 표시

현재 시스템이 올바른 균형을 찾았다고 믿습니다: 스마트한 플레이에 보상하기 충분한 전략성, 기억에 남는 순간을 만들어낼 충분한 무작위성, 그리고 공정하게 느껴질 충분한 투명성.

#dev-diary#game-design