-
게임 플레이
-
제작전 고려해야 했던 사항
-
게임 내 기능 및 설명
-
생겼던 큰 문제와 해결 방법
- 메뉴
UI에도 애니메이션을 넣어 자연스럽게 보이도록 하였습니다.
- 로비
3개의 음악을 선택할 수 있고 NoteSpeed도 조절가능하며 이전의 플레이 기록도 저장되어 나옵니다.
그리고 이름 Level과 Exp모두 저장되어 이어서 플레이가 가능하도록 하였습니다.
- 인게임
판정을 세세하게 하여 플레이하는 재미 주고 왼쪽에 게이지가 가득차면 한 노트에서 얻을 수 있는 콤보수가 증가하는 기능을 주어 플레이의 재미을 높였습니다.
- 인게임 Menu
또한 게임 도중에 메뉴를 열고 닫으면 Pause가 실행되며 해당 애니메이션이 실행되도록하고 이때에는 판정을 할 수 없도록 하였습니다.
그리고 메뉴또한 게임이 실행중일때에는 선택지가 바뀌도록 하였습니다.
일단 리듬이라는 장르 자체를 처음 만들어 보아서 자료조사가 필요 했습니다.
노트의 스폰시간과 음악 시간의 동기화 방법을 고려해야 했고
더 높은 음질을 위해서도 고민해야 했습니다.
- FMOD (사운드)
더 높은 음질을 위해서 FMOD를 사용하였다. SFX와 BGM을 각 채널마다 지정해서 플레이 하도록 사용하였고 getPosition을 이용하여 음악의 진행사항을 가져오도록 헀습니다.
- 노트 데이터
자료조사 결과 결국 노트들의 생성되는 것은 데이터들이 필요하다는 것을 알았습니다. 그래서 기본적으로 필요한 것들을 정리해서 데이터를 만들었습니다.
예) 어느라인에서 내려와야하는지? (int), 숏인지 롱인지? (int or Enum), 도착할 시간 (float)
- 라인 판단
리듬게임을 보면 각 라인마다 노트가 내려오기 때문에 이것에 대한 분리가 필요하다고 생각하였습니다. 그래서 NoteLane을 만들어 해당 라인에 맞는 노트들을 저장하게하고 자료구조 Queue를 이용해서 먼저들어온 노트 순서대로 각라인마다 판단하도록 만들었습니다.
- 롱노트 판단
롱노트는 시간마다 판단하게되면 하나더 콤보가 쌓이거나 하나 덜 쌓이는 경우가 발생해 시간에 따른 최대 콤보를 정해두고 최대콤보에 도달하면 바로 끝내고 도달하지못하고 시간이 끝나면 부족한 만큼 추가로 콤보를 주는 방식으로 제작하였습니다.
리듬게임에서 가장 중요하다고 할 수 있는 맵입니다.
데이터를 전부 직접 쓰는 것은 너무 시간이 오래 걸리기에 맵 에디터를 구상하여 구현하였습니다. 저는 세세하게 쪼개기위해서 초단위로 분리 하였지만 60/BPM 을 기준으로 분리하는 것이 리듬게임에는 더 바람직 합니다.
라인들을 생성해주고 마우스 좌클릭으로 생성, 우클릭으로 삭제가 가능하며 롱은 하나를 찍고 같은라인의 위에만 찍을 수 있도록 하였고 위에 찍었을때 데이터가 생성되도록 하였습니다. 저장은 라인들을 순회하며 데이터들을 가져오고 json형태로 저장하도록 하였습니다.



