리듬게임에서 특정 노래의 패턴을 짜는 것을 보면(譜面) 이라고 합니다. 이 게임도 보면을 제작할 수 있는 툴이 필요합니다.
저는 이미 인터넷상에 게시된 ‘K-Shoot Editor’라는 툴을 사용해 만든 보면을 이 게임에서 플레이할 수 있게 할 생각으로 파싱작업을 시작하였습니다.
옆의 사진은 ksh라는 확장명을 가진 보면 파일입니다. 직접 분석을 하여 알아낸 데이터 중 중요한 것만 보여드리겠습니다.
--를 기준으로 노래의 마디를 나눕니다.
beat=4/4는 박자를 4분의 4박자로 설정합니다.
초록색 상자는 하얀색 객체를 뜻하며 0은 비활성, 1은 쇼트 객체를 뜻합니다.
노란색 상자는 주황색 롱 오브젝트를 뜻하며 0은 비활성, 1은 롱 오브젝트를 뜻합니다.
파란색 상자는 파란색 노브를 뜻하며 -은 비활성, :는 노브 진행, 0~P는 위치 값을 나타냅니다. 위치 값은 아래에 자세한 설명을 드리겠습니다.
분홍색 상자는 분홍색 노브를 뜻하며 데이터값은 파란색 노브와 같습니다.
노브의 상세한 위치 값은 옆의 사진에 간략하게 있습니다.
이와 같은 식으로 파일을 파싱하여 게임 안에 데이터를 받아옵니다.
데이터를 받아올 때 BPM(beats per minute, 음악의 속도를 숫자로 표시한 것)이랑 같이 계산을 하여 게임이 진행 중일 때의 성능을 최적화하였습니다.
하지만 로딩 중에 BPM계산을 하므로 로딩 시간이 길어졌습니다. 게임 중의 성능을 최대로 끌어올리는 것이 이득이라 생각하였기 때문에 계산이 끝난 결과를 사용하기로 하였습니다.
파싱을 진행하면서 컬링을 간단하게 구현하여 지정된 범위 밖 객체들은 렌더링과 계산을 하지 않거나 객체를 제거하여 최적화를 하였고,
‘갤럭시 지오’에선 다시 90프레임을 사수할 수 있었습니다.
그리고 일부 그래픽이 추가되었습니다.