본문 바로가기

Project/게임개발

BMS 파싱 및 리듬게임 개발 (C#) - 2


참조 문서.

http://bit.sparcs.org/~tokigun/article/bmsguide.php (bms 파일형식)

http://smilejsu.tistory.com/380 (BPM 계산 방식과 배속 구현)



지난번 BMS 파싱 및 리듬게임 개발 (C#) 에 이어서 다시 제작에 들어간 bms구동기이다.


가장 까다로웠던 이벤트 채널도 사실상 구현이 완료되었고.


이벤트 채널은 실제로 오브젝트를 배치하지는 않지만 곡이 재생될 때 발생하는 이벤트(BGA 변경, 배경음 재생 등)를 지정하는 데 사용한다.
channel #01: 배경음 채널
지정한 키값을 배경음으로 재생한다. 이 배경음은 어떤 경우에라도 항상 재생된다. 존재하지 않는 키값은 무시한다.
channel #02: 마디 단축
이 채널은 다른 채널과는 다르게 데이터로 숫자를 받는다. 지정한 실수 배로 해당 마디의 길이를 줄이거나 늘린다. (0.5일 경우 원래 길이의 반으로, 2.0일 경우 원래 길이의 두 배로) 이는 BPM의 조정과 다르며, 해당 마디가 재생되는 시간 자체가 그만큼 짧아지거나 길어지는 것을 의미한다.
channel #03: BPM 채널
해당하는 위치에서, BPM을 지정한 16진수 숫자(1부터 255까지)로 바꾼다. 예를 들어서 78은 BPM 120을 의미한다.
channel #04: BGA 채널
현재 표시되고 있는 배경 이미지 파일을 해당하는 키값에 지정된 이미지 파일로 바꾼다. 지정된 이미지는 다른 이미지가 이 채널에서 지정될 때까지 계속 보여진다.
channel #05: BM98 확장 채널
이 채널은 BM98에서만 사용할 수 있다. 따라 오는 데이터들을 순서대로 해당 마디의 에 넣는다. 그리고 오브젝트 채널에서 명령을 내릴 때, 해당 마디의 큐가 비어 있지 않으면 나오는 순서대로 00이 아닌 키값에 큐에서 키값을 꺼내서 그 키값에 대응하는 스프라이트를 기본 오브젝트 모양 대신 출력한다. 키값에 대응하는 스프라이트 번호는 미리 지정되어 있으며 부록에 그 목록이 있다.
channel #06: Poor BGA 채널
사용자가 오브젝트를 입력하지 못 했을 때 표시될 배경 이미지를 해당 키값의 이미지로 바꾼다. 일반적인 BGA 채널과는 달리 Poor BGA 채널은 하나 뿐이며, 투명색 등은 모두 무시된다.
channel #07: BGA 레이어 채널
현재 표시되고 있는 배경 이미지 파일을 해당하는 키값에 지정된 이미지 파일로 바꾼다. channel #04와 다른 점은 이 이미지는 channel #04에서 지정한 이미지 위에 표시된다는 것이다. (검은색, 즉 투명색으로 되어 있는 부분은 아래의 일반 BGA 이미지가 비쳐 보이게 된다.) 그래픽 편집 툴의 레이어 기능과 흡사하다.
channel #08: 확장 BPM 채널
해당하는 위치에서, BPM을 지정한 키값에 지정된 BPM 값(#BPMxx 명령으로 지정한 값)으로 변경한다.
channel #09: 시퀀스 정지 채널
해당하는 위치에서, 지정한 키값에 지정된 시간(#STOPxx 명령으로 지정한 값) 만큼 오브젝트가 움직이는 것을 멈춘다. 이미 재생되던 배경음은 그대로 재생되지만 다른 모든 것은 해당하는 시간만큼 멈춰 있게 된다.



롱노트, 배속조절, BGA(이미지, 동영상) 까지 모두 구현되었으니 기본적인 BMS 파싱 작업은 완료되었다고 볼 수 있다.



약 100개 정도의 유명 BMS 파일들로 테스트해본 결과 모두 무사히 통과,

간혹 로딩한 이미지 메모리가 뻥튀기 된다던가, 동영상 프레임이 이상해지는 문제는 해결해야할 버그사항들 이다.



네트워크는 제로보드 호스팅을 통한 DB 사용으로 로그인, 레벨, 포인트 등의 기능을 연동해놓은 상태이다. (임시)

http://kobi3000.cafe24.com/xe/



그래픽 작업은 지인들 동원해서 진행중..



아래는 현재까지 작업에 대한 동영상. (그래픽 작업 미적용)






회사일과 병행하면서 하다보니 진행속도가 만족스럽지는 않다..

'Project > 게임개발' 카테고리의 다른 글

BMS 파싱 및 리듬게임 개발 (C#)  (18) 2017.04.21
음악 가사 타이핑 게임 개발 (C#)  (0) 2013.05.29