프로젝트 소개
사람들을 마음의 늪에서 구원하는 오버테크 클로즈 베타 AI 이어폰 리듬 게임.
마음을 구원하는 리듬게임 <노이즈캔슬러>
트레일러 영상
트레일러 영상
Alpha 플레이 영상
Alpha 플레이 영상
주요 구현 내용
[ 리듬게임 ]
- 리듬게임 시스템
- 노트 생성 및 이동
- 노트 판정
- CustomUpdate를 통한 Update() 순서 조절
- Unity Timeline 기능을 이용한 박자에 맞는 연출
[ 시스템 ]
- Dialogue 시스템
- Scriptable Object를 이용한 데이터 전달 및 이용
[ 연출 ]
Trouble Shooting
리듬 연출 시스템 개선 (Timeline과 AudioSource)
리듬 게임에서 음악과 연출의 싱크는 핵심 요소다. 기존에는 Google 스프레드시트에서 연출 함수를 작성하고, 해당 박자에서 실행하는 방식으로 시스템을 구현했다. 그러나 이 방식은 기획자가 연출을 조정하기 불편했으며, 보다 직관적인 연출을 위해 Unity Timeline을 도입했다.
- Timeline - Audio Track 사용 시 오차 발생
- 문제:
- Timeline에서 Audio Track을 이용해 음원을 재생하면, AudioSource 재생 시의 버퍼링으로 인해 오차가 발생했다
- 초기 해결책:
- Timeline에서 직접 AudioSource를 재생하지 않고, Timeline과 AudioSource를 개별적으로 Play하는 방식 채택
- 추가 문제:
- 두 Play 함수가 각각 딜레이를 가지기 때문에 동기화가 맞지 않음
- 최종 해결책:
- 실행 후 재생 시간을 동기화하는 로직 추가.
- 그러나 이 과정에서 음원의 초반 부분이 잘리는 문제가 발생.
PlayableDirector.Evaluate()
와 AudioSource.PlayDelayed(0)
, AudioSource.Stop()
을 활용해 미리 로딩하는 방식으로 해결.
- Timeline - AudioSource간 오차 발생
- 문제:
- Timeline과 Audio Source를 별개로 사용하는 환경에서 Timeline의
UpdateMethod
를 DSPClock으로 설정했음에도, 디버깅 결과 AudioSource와 약 -20~20ms의 오차 발생(누적되지 않음)
- 원인 분석:
- 프로파일러 확인 결과, Timeline의
PrepareFrame()
함수에서 발생하는 것으로 추정됨. Timeline이 모든 프레임을 준비한 후 내보내는 방식으로 동작하여, 일정한 대기 시간이 발생
- 해결 방향:
- Timeline을 연출 도구로만 사용하고, 실제 재생 시에는 Timeline의 트랙 값을 읽어 개별적으로 실행하는 방식을 구현하면 해결 가능할 것으로 예상됨
- 현재 상태: