유니티 리듬게임 제작은 단순히 학교 조별과제로부터 시작되었다. 대부분 그렇듯이 과제가 제대로 진행되거나 애착이 생기게 되는 경우가 없지만 첫 리듬게임 제작이라는 타이틀에 좀 더 완성도를 올려보자 하는 마음에 추가 진행했었다.
원래 리듬게임을 좋아했지만 만들어볼 생각은 하지 않은게 내가 만든다고 해서 재밌게 할 수 있을까? 라는 의문이 있었다. 물론 그렇게 생각하면 세상의 어떤 게임이든 이제 막 진입하는 사람에겐 아무것도 만들 수 없을 것이다. 하지만 리듬게임은 오랫동안 애착이 있었던 장르의 게임이었고 리듬게임은 조작방식만 중요시해서 될 컨텐츠가 아니기 때문에 그렇다. 당장의 인기있는 디제이맥스 시리즈만 봐도 오랜 전통의 노트방식 게임이다. 그런데도 불구하고 오랜 인기를 유지하는 이유는 시리즈 명성도 있겠지만 좋은 작곡가와 채보(노트들의 패턴)가 있기 때문이다. 이런 부가적인 요소들이 받쳐주지 못하면 리듬게임 제작에 큰 어려움이 따르게 된다.
아무튼 본론으로 가서,
첫 시작은 단순했다.
군대라는 큰 공백이 있었고 오랜만에 건들여보는 프로그래밍에 유니티였기에 조금은 막막했지만 긍정적으로 생각하고 기능들을 하나하나 잘게 쪼개어 나누면 어떻게든 구현하겠지 라는 생각이였다. 게다가 리듬게임은 한번 시도를 해본 적도 있었고 몇년동안 재밌게 했었고 랭킹에도 들어보고 했던 게임이니 기능을 나눔에 있어 한결 수월했다.
"대단위로 나누고 그 아래 소단위로 또 나누고.. 노트는 위에서 아래로 내려가니까 노트 오브젝트는 위에서 아래로 떨어지는 코드를 작성하고.." 이런식이였던 것 같다. 진행에 가장 큰 문제는 아무래도 노트 구현 과정이 아니었나 싶다. 노트를 어떻게 배치하면 떨어지는 타이밍을 정확하게 맞추고 판정하는 과정이었다. 이 과정에서 굉장히 많은 논리적인 사고를 했었고 스스로도 발전했음을 느꼈다. 남의 것을 보고 따라한 것이 아닌 스스로 개발한 코드였으니까 말이다.
https://healp.tistory.com/12?category=836248
[개발일지11] 노트판정 구현
노트판정은 떨어지는 노트를 보고 키 입력을 해서 누른 타이밍에 따라 판정하는 시스템이다. 판정을 구현하는 방법은 노트와 판정바와의 좌표를 비교하는 것과 노트의 시간값을 비교하는 것이
healp.tistory.com
https://healp.tistory.com/13?category=836248
[개발일지12] 노트판정 재설계
노트 판정을 구현하고 나서 QA를 열심히 해보는 중에, 문제가 있음을 발견했다. 분명 판정자체는 제대로 이루어지고 있었으나, 의도했던 특정상황의 판정이 전혀 발동하지 않았던 것이다. 예를��
healp.tistory.com
https://healp.tistory.com/17?category=836248
[번외]노트판정 다른 방식의 구현
종강기념 주저리 글. 지난 노트판정 개발일지에서 두가지의 구현방식을 예를 들었는데 1. 노트와 판정선의 거리를 검사해 판정 2. 노트의 시간값을 검사해 판정 거리를 체크한다는 말은 노트의 t
healp.tistory.com
노트구현에 pcm 샘플을 이용한다는 개념은 아직도 '내가 이런 생각을 했다고?' 라고 느끼게 해준다.
누가보면 별게 아닌 것일 수도 있지만 당시 내 실력으로서는 대단한 것으로 보여졌다.
그렇게 어느정도 마무리가 되고..
애착의 정점이 학교의 학술제였는데 학과별로 개인이나 팀을 꾸려서 행사에 모인 사람들에게 작업물이나 과에 관련한 주제를 체험하거나 보여주는 일이 있었고, 한번 해보면 도움도 될 것같고 재밌을 것 같아 참가를 결정했다. 계획은 사람들에게 보여줘야하다보니 좀 더 다양한 곡, 이쁜 UI등을 중점으로 두고 작업을 진행했다. 기존에 만들어 두었던 틀을 가지고 진행했다.
주요한 알고리즘 작업이 필요하다던가 큰 어려움은 없었지만 필요한 데이터를 뽑고 가공하는 과정이 생각보다 시간을 많이 잡아먹었다. 강의는 들어야하지 과제도 해야하지.. 학교갔다오면 저녁7시인데.. 혼자사니까 좀 쉬고 밥해먹고 하면 9시가 다되가고..
결론은 잠을 줄였다. 행사 5일전부터는 하루에 2시간씩 잤다. 오전 6시에 뻗어버리고 두시간 뒤에 버스타고. 어떻게 해냈는지는 모르겠지만 내 게임을 누군가에 보여줄 수 있다는 생각에 버텨냈던 것 같다.
당일날.
학교에 가는 버스안에서도 행사 직전까지도 한 곡이라도 더 넣기 위해 노트 패턴을 찍었다. (강의 시간에도 강의와 작업을 병행했다.) 하.. 근데 문제가 터졌다. 어떤 이유인지 모르겠지만 시스템환경이 데스크탑(윈10)에서 노트북(윈8)로 옮겨갔는데 새로 작업한 노트 패턴파일을 유니티가 인식하지 못했고 심지어 열심히 작업해둔 플레이 결과 UI가 먹통이 되어버렸다. 안타깝게도 며칠간의 작업물 일부가 소용없게 된 것이다. 황당했지만 테스트 한번 안해보고 환경을 옮긴 내 책임인걸 누굴 탓 할 수는 없다. 이 일을 계기로 시간 분배에 좀 더 주의해야 할 것 같다고 생각했다. 아쉬움을 뒤로하고 그래도 게임의 중요한 부분에는 문제가 없었기에 게임 해보러 온 사람들에게 좋은 반응이 나와서 행복했다. 그저 별거 아닌데 그 자체로 즐겨주었던 어려 사람들에게 고마움도 느꼈다.
그 이후로 리듬게임을 제작하는데 인터넷상 다양한 데이터를 수집하고 공부하고 도움을 받았기에 Github에 소스코드를 공개하기로 하였다. 대단하고 상세하진 못하지만 리듬게임을 만들고 싶어하는 사람에게 도움이 되었으면 좋겠다.
https://github.com/LHEALP/UnityRhythmGame
LHEALP/UnityRhythmGame
유니티엔진 리듬게임. Contribute to LHEALP/UnityRhythmGame development by creating an account on GitHub.
github.com
(사실 깃헙에 업로드한지는 오래되었다.)
다음에 리듬게임을 다시 만들어보게 된다면 제작환경에 효율성이 떨어지기 때문에 프로그램 구조부터 변경하고 싶다.
'유니티 > 리듬게임' 카테고리의 다른 글
유니티 리듬게임 풀프로젝트 Github 업로드 완료 (4) | 2020.05.30 |
---|---|
유니티 리듬게임제작 강의 예정 (0) | 2020.05.27 |
[개발일지21] 진행상황 (0) | 2019.10.22 |
[개발일지20] 진행상황 (0) | 2019.10.21 |
[개발일지19] 진행상황 (0) | 2019.10.20 |