현재 개발중인 영상입니다.
다른곳에도 물어봤지만 여기가 꽤 활발한거 같아서 글을 복사하여 물어봅니다.
 
 
현재 게임 개발이랑은 연이 없는 회사에서 개발을 하고 있습니다.
이직 준비를 하면서 이것저것 해보자는 마음으로 기존에 관심이 있었던 리듬게임을 개발 포트폴리오로 만들고있습니다.
위의 영상은 5일정도 작업 한 영상인데요, BMS 파일을 마디/라인 별 분석한 자료구조를 만들고 현재까지의 진행된 마디상의 위치에 따라 노트를 생성하여 실행되도록 되어있습니다.
 
 
여기서 질문입니다.
 
1. 상용 리듬게임을 보면 노트가 하단까지 내려올때도 상당히 부드럽게 되어있는데,
제가 만든것 같은 경우는 노트가 내려오는 것을 position 기반으로 하여서 Transform.Translate로 구현하여서 그런지
판정선 직전에서 노트가 사라지면서 처리되는것을 보실 수 있습니다. 그리고 아주 살짝씩 끊겨보이기도 합니다. 60프레임이라기보단 40정도로 보이네요.
(영상에서는 Vector.back * 100 으로 내려가도록 처리되어있습니다.)
이것을 바꾸려고 velocity를 사용해 내려가는 처리도 생각해보았는데 적용시 싱크가 조금씩 어긋나는 문제가 있었습니다.
특히 bpm 변동에 의한 변속이 일어나는 경우는 더 그렇습니다. (사실 지금도 싱크가 완전하지는 않습니다만 어느정도의 재생은 문제 없습니다.)
실제 노래와의 싱크를 정확히 맞추는 방법이 없을까요?
 
 
2. BMS에는 배경음 역시 키음으로 같이 처리하는 경우가 많습니다. 다양한 난이도의 보면을 만들 때 쉽게 만들기 위해서지요.

예를 들어 아래와 같은 그림으로 구성되어있습니다.



viewimage.php?id=2abcdd23dad63db0&no=29bcc427bd8577a16fb3dab004c86b6ffc304b0c17ba73411732e6b3074123f48a1c431159b7f332a08d6ec1f99a30d285c9787798068db9081e



초록색 부분을 제외하면 모두 키음이 들어갈 수 있는 부분입니다. (오른쪽의 빨간부분은 최대 32개의 채널을 사용하여 최대 동시 재생 가능 채널수는 40입니다)
 
저는 이 음원들을 처리할 수 있도록 각각의 라인에 AudioSource를 동적으로 생성하여 처리하고 있습니다.
(맨 처음 bms 파일을 읽어올때 필요한 개수의 AudioSource 배열을 만들어둡니다)
음원들은 AudioClip의 형태로 파일을 불러올 때 미리 로드시켜둔 채로 Dictionary에 저장합니다.
그리고 재생시에는 바로 다음에 오는 노트의 소리도 처리할 수가 있도록 PlayOneShot에 파라미터로 미리 저장해둔 AudioClip을 가져옵니다.
 
문제는 동시에 처리하는 노트의 개수가 일정수를 넘어가면 음악이 재생되지 않고 딜레이가 발생하는 문제가 있습니다.
그래서 소리가 뭉개진 후 다음 노트가 진행되며 소리가 납니다.
소리가 생명인 리듬게임상 모든 음이 정상적으로 재생되게 하고싶은데 AudioSource로는 해결할 방법이 없을까요?
아님 외부 라이브러리를 사용해야 할까요?
 
 
감사합니다.