그래서 현재 상황.

      그래서 현재 상황.에 댓글 없음

원래 계획은 유니티의 이런저런 기능을 활용해서 3D 배경을 쓰고 UI에도 3D 좌표를 적용해서 여태까지 나온 게임보다 좀 화려하게 하고싶었는데…
위에 문장에서 적은 부분은 아무런 문제가 없다. 사실 BMS플레이어가 아니라 그냥 리듬게임이었다면 아무런 문제가 안되는데, BMS플레이어라서 문제가 된다.

시중에 그냥 판매하는 게임들은 어차피 로딩 할 파일이 정해져있고 유니티에서 사운드 이펙트도 있겠다 다 그냥 쓰면되는데…

BMS는 읽을 파일로 뭐가 들어올지 모른다.
크기도 내용도 파일이 몇개인지(패턴별로)도 확장자(BMS,BME,BML…)도 코덱(WAV, OGG…)도.

문제는 모두 여기서 시작했더라. 유니티로 빌드하면 파일이 프로젝트 안에 있어야 되는데 외부에서 파일을 읽어오는 것도 정해진 규격(에셋 번들 등..)으로 읽어와야되고 사운드는 OGG 밖에 안되는 듯 해서 곤란했다. 그리고 곡마다 그게 다 다르니까 곡이 시작할때 프로그램상에서 파일을 직접 불러왔다가 노래가 끝나면 따로 빼주고 해줘야 했다.

왜 이런류의 많은 프로그램들이 런처에서 로딩을 하고 실행을 했는지도 이해가 갔다.

결국 사운드 파일 처리 부분은 유니티의 것을 전혀 못쓰고 별도로 만드는 것으로 했다. 전에 어떤분이 유니티 기반으로 BMS플레이어를 만든다고 프로그램을 공개했던게 있는데, 도대체 어떤방식으로 한걸까 찾아보니 거기서도 외부 DLL 파일이 있는 것을 보고 그 방식으로 시도 하려고 했다. 그 프로그램에선 OGG만 읽어서 많은 파일을 읽을 수 있는 쪽으로 하려고 했는데, FMODex가 C++기반인데 되려나? 이러다가 라이센스도 복잡하고 해서 배제하고 시작했다.

애초에 이런시도가 워낙 독특했는지 자료나 이런것도 찾아보기 어려웠다. 처음 사용했던 클래스 라이브러리는 임포트하는데도 많은 시행착오를 겪었고 유니티 설명에도 크게 자세히 설명이 없어서 역시 또 이것저것 건드려 보면서 겨우 해결. 어차피 윈도우용으로 목표로 했던 것이니 그렇게 하니까 오류가 없으려나? 했는데, 샘플코드를 참고해서 장치를 읽어오는 것 까지는 별 문제 없는 것 같았지만 재생을 시작하는 순간 유니티 에디터가 통쨰로 튕기고.. .Net Framework 버전이 유니티에서랑 안맞는다는 모양…

결국 2주간 씨름했던걸 문제 해결겸 하면서 찾았던 다른 라이브러리를 써봤는데 유니티에서 무슨일 있었냐는 듯이 너무 잘되었던고로…
또 이건 iOS나 안드로이드 같은 다른 플랫폼도 지원이 되었고 비상업용도는 무료였기에 라이센스도 문제없고. 실행도 잘되어서 이쪽을 쓰기로 함…

별로 주저리라 두서는 없네…
요약.

1. 유니티의 사운드 기능 쓰고싶다 아쉽다.
2. 어쨌건 BMS 파싱은 했다. 정보를 읽어오기만 하고 그걸 아직 처리하지는 않음
3. 음악파일을 불러와서 재생이 된다. BMS가 되는건 아직 아님.

앞으로 노트 타이밍이랑 BPM같은걸 코딩해야 한다. 이제 첫단추다.

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다