본문 바로가기
스크래치/스크래치 리듬게임

리듬게임 만들기5. 노트 데이터 넣기(끝)

by 할거없네 2017. 12. 27.

이제 리듬게임의 마지막 수순입니다. 노트에 원하는 데이터를 쉽게 넣기 위한 방법을 모색하고자 합니다.



▲ 원하는 타이밍에 노트가 떨어지도록 쉽게 만드는 방법을 구현합니다.





1. 엑셀로 노트데이터 제작

노트제작은 여러가지가 있겠지만 쉽게 구현을 위해서 다음과 같이 엑셀로 만든다고 가정합니다.



t1박자, ts1/4박자를 쓴 것입니다. 여기서 ts가 의미가 있습니다. 노트가 내려오는 최소 단위가 0.25초인 것입니다. 만약에 이것을 더 줄인다면 더 많은 노트를 순식간에 보낼 수 있지만 노트 관리하기 힘들어 지기 때문에 적당히 넣었습니다


노트 라인의 각 끝에는 @표시로 하여서 각 라인의 끝을 믄지로 인식시켜 줄 예정입니다.




데이터를 한번에 뭉탱이로 지정해서 복사를 합니다. 그리고 메모장에 넣으면 다음과 같이 붙여넣기가 됩니다.




이 데이터를 스크래치에서 쉽게 인식하기 위해서 빈칸(tap)부분을 쉽표(,)로 바꿔줍니다. 컨트롤+H로 쉽게 바꿀 수 있습니다.




이제 데이터는 준비가 되었으니 이 데이터를 스크래치에서 노트로 만들어 내도록 스프라이트를 추가적으로 만들어 봅니다.





2. 노트 데이터 변환하기

이제 새로운 스프라이트를 만들어서 노트 데이터를 관리하도록 합니다.

이름이 리코더(Recoder)인 이유는 사실 노트들을 실시간으로 연주하고 그것을 노트로 만들게 하는 기능으로 넣으려고 했는데 기록하는 것이 생각보다 맞지 않아서 안하기로 했습니다…. 스크립트 상에서는 구현되어 있지만 설명은 생략합니다.



여기서는 수동으로 데이터를 넣어주어야 합니다. @data_sum에 모든 데이터를 넣으면 라인별로 @a_data, @s_data, @d_data, @f_data로 추출이 되도록 되어 있습니다. 원리는 길이만큼 반복되는 루프 안에 1부터 1씩 변하는 변수에 따라서 데이터를 결합해주고, @가 나타나면 다음 라인으로(@j)바꿔서 다시 데이터를 결합해 줍니다.


마지막으로 데이터를 바꿔주는 블록입니다. 각 라인의 데이터들을 다시 data_node_a, s, d, f의 리스트로 순차적으로 넣어주는 것입니다. 이것도 역시 비슷한 원리인데, 단지 2라는 숫자가 있으면 2연타가 들어가도록 추가적으로 설정이 되어 있습니다.


나머지 라인들도 역시 동일하게 적용됩니다. (그림으로는 생략합니다.)



스크립트 보기:

https://scratch.mit.edu/projects/194165504/



이제 리듬게임만들기의 핵심 기능들은 모두 구현한 것 같습니다. 더 추가한다면 음악과 스테이지들을 넣었을텐데 리듬게임의 노트를 넣어볼까 했는데 생각보다 어렵고 노가다가 심해서 그냥 임의의 노트들만 넣었습니다. 음악재생같은건 역시 쉽게 구현이 되니 따로 설명이 필요 없을 것 같습니다.

다음 강좌는 좀더 쉬운 강좌들을 넣을지 아니면 다른 생각하고 있는 무언가를 할지 정해봐야겠습니다.



감사합니다.

댓글