안녕하세요.
작년에 리듬게임 시스템 개발을 하면서
어떤 방식으로 했는지 설명을 남기고자 합니다.
먼저 저는 유튜브에 있는
케이디님의 리듬게임 강좌를 보고 기본적인 틀을 완성했습니다.
https://youtu.be/eLdiOCWPfPc?si=F-JN34tY86uD4zub
아주 자세하고 친절하게 나와있어서 리듬게임의
기본적인 개념과 원리를 이해하는데에 많은 도움이 됐습니다.
저는 1~4,5편 정도를 참고했습니다.
이 강좌에서는 위에서 보이는 단일 노트에 대해서만 나와있습니다.
그렇기 때문에 롱노트를 만드는 방법은 따로 찾아봐야했습니다.
또한 노래에서 몇초에 노트가 등장할 것인가를 담당하는 노트 파싱 기술 또한 영상에 안나와있기에
어찌구현해야할지 백방으로 찾아봐야했습니다.
구글링을 통해 많은 사이트들을 뒤지면서 그나마 도움이 될만한 사이트들을 몇개 알아냈습니다.
참고 사이트가 20개가 넘어서
제일 도움을 많이 받은 사이트 순으로 추려서 몇 가지 설명드리겠습니다.
1.
우선 노래에서 특정 부분에 어떤 노트가 나올지 정보를 담은 파일을 BMS 파일이라고 합니다.
저희는 BMS 파일 없이는 할 수 있는게 없으므로 제일 중요합니다.
몇 초에 노트를 나오게 할지 노트를 찍고, 이 정보를 BMS 파일로 바꿔주는 프로그램이 필요합니다.
그러기 위해서 제가 선택한 것은 uBMSC라는 프로그램입니다. 이것말고도 BMS 제작하는 프로그램은 많습니다.
사운드 엔지니어 35의 BMS 제작 가이드
우리는 왜 BMS를 만드는가? 1. 어려운 제작 난이도 속에서 쾌감을 얻기 위해 (M?)2. 상업 리듬게임에 등판하는 기회를 얻고자3. 상업 리듬게임에 참여하기 이전 여러 노하우와 기술들을 습득하고
sctl.tistory.com
저는 이 분의 사이트에서 정보를 얻고 BMS 제작을 할 수 있었습니다.
저는 키움? 이라고 하는 설명부터는 지식이 없어 알아들을 수 없기에 기본 기능 설명까지만 참고했습니다.
uBMSC 라는 프로그램을 다루는 방법은
https://gavenkr.tistory.com/66
003 : uBMSC 프로그램의 이해
먼저 한국어를 지원함으로 한국어 세팅을 해줍니다. 다음은 아래 테마를 세팅해 주는데 저는 그냥 BMSE 테마를 씁니다. 다음은 구동기 세팅입니다. 재생 프로그램 버튼을 누르면 구동기를 지정할
gavenkr.tistory.com
여기를 많이 참고 했습니다.
2.
그리고 BMS를 만드는 프로그램에 추가로 필요한 것이 있습니다.
구동기 라는 것인데요. 이게 노트를 찍는게 어려운 부분이 노래를 들으면서 노트를 찍을 수가 없습니다.
그래서 노트가 노래 박자에 어느 부분에 잘어울리는지 확인하려면 이 노래와 내가 찍은 노트가 함께 나오는걸 테스트할
리듬게임 데모? 같은 프로그램이 있어야하는것으로 압니다.
저는 비토라자라고 하는 구동기를 사용해서 테스트를 했습니다.
https://m.blog.naver.com/pnimskmgt/222009337319
BMS 구동기 비토라자(beatoraja) 소개 + 시연
최근 디제이맥스를 하다가 오랜만에 븜스를 다시 하게 되었는데, 디맥을 하다가 LR2로 BMS를 다시 해...
blog.naver.com
여기에 비토라자를 설치하고 세팅하는 방법이 잘 나와있으니 참고하면 좋을 것 같습니다.
비토라자 세팅 완료하면 노트 찍는 중간중간 도구 탭에 있는 초록 버튼을 누르면 자동으로 노래와 내가 찍은 노트가 담긴 비토라자가 실행되며 리듬게임을 데모 버전 느낌으로 테스트 할 수 있습니다.
이렇게~~ 기본 세팅을 완료했다면 uBMSC에서 원하는 음원파일을 가지고 노래를 찍고, 비토라자 구동기를 이용해 내가 찍은 노트가 이 음원에 잘 어우러지게 나오는지 테스트 하시면서 노트를 찍으시면 됩니다.
3
.
그리고
uBMSC에서는 이 프로젝트를 저장하면 자동으로 BMS라는 파일을 만들어냅니다. 메모장으로 불러온다면,
이렇게 BMS 파일 내부를 열어볼 수 있습니다.
헤더파일에는 uBMSC의 프로그램에서 내가 작성한 BPM, 타이틀, 작곡가 등등 다양한 노래 관련 정보가 있습니다.
그 이후에 MAIN DATA FIELD 에는 내가 찍은 노트에 대한 정보가 담겨 있습니다.
이는 한마디를 기준으로 그 한마디에 들어있던 노트에 대한 정보가 쪼개져 담겨 있습니다.
BMS에 담겨있는 정보들의 의미는 아래의 사이트에서 잘 설명해주고 있으니 참고하시면 되겠습니다.
https://cafe.naver.com/createrhythm/61
BMS 스크립트 분석 - 기본 속성 안내
BMS의 스크립트에 대한 이야기를 하고자 합니다.Be-Music Script (BMS)는 리듬게임을 하기 위한 파일 확장자 중 하나로, 1998년에 우라오 야네가 고안하였다....
cafe.naver.com
그래도 제가 알고 있는 사실 기반으로 간단히 설명 드려보겠습니다.
아래는 BMS에서 한마디를 떼어 온 것입니다.
#XXX 부분은 몇 번째 마디인가?를 의미합니다.
본래에는 라인마다 각자 다른 #XXX 번호가 부여됩니다.
그런데 가끔 저렇게 같은 마디 번호를 가지지만 두 줄로 표현된 정보가 있을 겁니다.
이것은 한마디에 두개 이상의 다른 음표가 혼합되어 사용 되어있을 경우를 의미합니다.
#03511 라인의 경우에는 두 자 씩 끊어서 보면 8개로 나누어 볼 수 있습니다.
00은 아무것도 없음(음표 없음)을 의미하고
저 같은 경우는 구분을 위해 AA는 단일 노트, AB는 롱노트를 의미하도록
노트 이름을 선택하여 짰습니다.
그렇다면 03511 라인에 8분음표 2개 있다는 걸 의미합니다.
앞서 말씀 드렸듯이 03551도 앞 세자리가 같으므로 4분음표 2개 길이의 롱노트가 있다는 걸 의미합니다.
아마 음악관련 기본 지식이 있어야 이해가 빠를 것 입니다.
아무튼 이런 식으로 해서 BMS 파일 생성부터 뜯어보기를 해보았습니다.
롱노트를 만드는 것은 이전에 만들었던 단일 노트들을 이용해서 만들었습니다.
단일노트 두가지를 이용해서 시작 노트와 끝노트를 각각 지정한 후에
그 두 노트를 이어주는 오브젝트를 생성해서 원하는 길이만큼
유동적으로 늘어나서 롱노트처럼 보일수있도록 만들었습니다.
이후에는
파싱 관련 스크립트를 짜서 일정한 박자마다 두글자씩 긁어와서 00이라면 아무것도 생성하지 않고,
AA 라면 단일 노트를 생성하고, AB라면 롱노트를 생성하도록 구현했습니다.
참고로 uBMSC에서 롱노트를 찍으면 BMS 파일에서는 AB AB 이렇게 꼭 페어로 나타나는데 이거를 활용했습니다.
AB가 처음 나왔다면 롱노트의 시작 노트를 출력하고,
AB가 두번째로 또 나왔으면 끝노트를 출력하는 식으로 해서 관리했습니다.
아마 노트 파싱과 관련된 부분은 개개인의 창의성이나 구현력에 따라 효율이 천차만별일 것 같습니다.
다들 참고해서 좋은 리듬게임 만들기를 바라겠습니다.
아무튼 저는 리듬게임 알고리즘 구상하느라
몇날 며칠을 끙끙 앓아서 다른 분들은 조금이나마 도움이 됐으면 좋겠습니다..
P.S.
귀찮아서 제대로 된 사진과 구체적인 설명을 넣지 않았지만
이후에 가독성 좋게 글을 보완하도록 하겠습니다...
원하는 답을 드릴 수 없을 확률 50000 퍼센트지만 궁금하신 점 있다면 댓글 주세요 😘