본문 바로가기

Starters 부트캠프/B - log

유데미 스타터스 유니티 개발자 취업 부트캠프 1기 - 13주차 학습 일지

이번 주 스타터스는 조금 늦게 화요일에 시작했다.

긴 줄 알았지만 짧았던 추석 연휴를 지나 다시 출근을 하려니 너무 힘들었지만, 또 막상 유니티를 잡으니 시간 가는 줄 모르고 코딩을 하기 시작했다.

무엇보다 이번 주에는 수업 시간에 만들었던 프로젝트를 자기만의 게임으로 업그레이드 한 뒤, 발표하기로 했기 때문에 온전히 그 부분에 힘쓰기로 했다.

 


 

Starters 13주차 -  '자유롭게 게임 개발하기'

 

맵 꾸미기

 

그 전까지는 그저 수업에서 배운 기능만 충실히 넣은 프로젝트가 게임으로 거듭나기 위해서는 가장 먼저 때깔을 아름답게 할 필요가 있었다.

그래서 이전에 만든 오브젝트 외에 나무를 하나 더 만들어서 순식간에 집 하나만 있던 씬을 마을로 만들었다.

 

magicavoxel로 나무를 만드는 모습

 

우선, MagicaVoxel로 나무 오브젝트를 아주 열심히 만들었다.

나무 기둥은 원기둥으로 만들고, 잎은 구를 여러 개 겹쳐서 만들었다.

이 때에 잎의 색은 팔레트에서 shift로 여러 개의 색을 선택한 뒤에 우클릭해서 'rand'를 눌러서 랜덤 하게 각 색들을 집어넣었다.

 

 

마을이 순식간에 만들어진 모습

 

이렇게 만든 나무 오브젝트를 각도를 조금씩 조절해서 적절히 배치하고, 이전에 만들어 두었던 집도 여러 개 만들어 넣으니 나름 마을 같은 느낌이 들었다.

 

이렇게 필드 맵은 완성!

 

 

리듬 게임 만들기 -  '리듬 게임에 사용할 음악 만들기'

 

수업에서 구현한 퀘스트는 특정 아이템을 필드에서 구해다 주는 내용이었다.

나는 그냥 가져다주는 것보다는 리듬 게임에서 음표를 구해다 주면 재밌겠다고 생각이 들었다.

마침 캐릭터로 만든 것이 디즈니 픽사 애니메이션 코코의 주인공 코코였고, 해당 영화에서는 음악이라는 것이 아주 중요한 것으로 나오기 때문에 문제는 전혀 없었다.

 

다만 그러기 위해서는 해야 하는 작업들이 꽤나 많았다.

첫 번째로 음표와 트리거할 때마다 특정한 음을 출력해야 했다.

그러기 위해 먼저 웹을 뒤지고 뒤져서 각 음계에 해당하는 음원들을 찾기를 몇 시간... 생각보다 오랜 시간 끝에 피아노 음계 소리들을 찾을 수 있었고, 오디오 소스와 playOneShot()을 통해서 간단하게 각 음표가 음을 출력하는 것도 구현하였다.

 

음악은 코코의 메인곡 중에서도 메인곡인 'Remember me'로 정했다.

피아노 음으로 하기도 적절하고, 코코 하면 생각나는 음악인 데다가 길이가 길지도 않아서 너무 좋았다.

그리고, 무엇보다도 음악이 너무 좋으니 안 들어보신 분들은 꼭 들어보는 것을 추천한다. 

 

 

여하튼, 악보를 찾아서 각 음에 해당하는 음표를 noteManager라는 오브젝트에 자식 오브젝트로 넣었고, 맞는 음계를 넣었다.

그리고, 박자에 맞도록 거리를 조절하였는데 생각지도 못하게 이 과정에서 너무나 많은 시간이 소요되었다.

그제야 리듬 게임에서 박자에 맞게 노트가 내려오도록 하는 것이 얼마나 어려운 일인지 깨닫게 되었다.

 

직접 노래를 듣고, 간격을 조절하는 모습

 

수작업 외에 따로 할 수 있는 방법이 없어서 결국에는 노래를 들으면서 직접 간격을 조절했다.

위는 노래를 듣고, 유니티 프로젝트를 실행하며 간격이 맞는지 확인하고, 조절하면서 Z 위치를 적었던 흔적이다.

아주 완벽하다고는 할 수 없지만 꼬박 하루를 갈아 넣어서 나름 들어줄만한 정도로 완성시켰다.

피아노보다는 오르골 같은 느낌이 났지만.. 그것도 그것 나름대로 괜찮았다.

 

리듬 게임 만들기 -  '리듬 게임 형식으로 퀘스트 만들기'

 

리듬 게임으로 만들기 위해서는 필드와 다르게 새롭게 게임을 위한 공간을 꾸며야 했다.

그리고, 게임에 들어가면서는 캐릭터 컨트롤도 카메라 위치도 변경해야 하였기에 Data.cs에 bool 값으로 isGame이라는 변수를 통해 조건문을 나눠 해당 컨트롤을 변경시켰다.

그리고, isGame이 작동되었을 때에 플레이어의 위치로 noteManager 오브젝트를 이동시켜서 노트를 움직이도록 만들면서, 추가로 빈 공간에 장애물들도 추가했다.

물론, 퀘스트를 할 때마다 노트의 X 위치도 랜덤으로 가지도록 설정했다.

이는 Random.Range()를 통해서 설정하고, 이 외의 위치에 장애물이 있도록 설정했다.

 

그리고, 마지막으로 퀘스트를 완료했을 때에 나올 결과 창을 만들고, 게임을 완주하였을 때에 해당 창이 뜨도록 하였다.

글로만 설명해서 쉬워 보일 수도 있지만.. 생각보다 더 오랜 시간이 걸렸고, 그래도 필요한 것은 다 완성했다.

 


 

금요일에 발표를 하기 전까지 이래저래 결국에는 리듬게임의 구실을 만들었고 3번째 순서로 발표를 잘하였다.

확실히 혼자서 리듬게임을 만들고, 퀘스트를 리듬게임으로 만들었다는 아이디어에 대해 많은 박수를 받았고, 너무 기뻤다.

그리고, 다른 분들 역시 엄청나고, 기발한 게임들을 발표했는데, 다시 새로 시작할 프로젝트에 필요한 영감들을 얻을 수 있는 시간이라 더 좋았던 것 같다.

 

게임 영상

 


 

마지막으로 제 블로그에 많은 관심을 가져주신 많은 분들께 감사하다고 전하고 싶습니다.

특히 제 글을 보고 스타터스 부트캠프에 역시 관심을 가진 분들도 계신 것 같아 너무 행복했습니다.

앞으로도 더 열심히 그리고, 꾸준히 학습 일지 잘 쓰도록 하겠습니다! 감사합니다.

 

 

리듬 게임 프로젝트 깃허브 링크 : 

 

GitHub - MoHoDu/StartersRythmGameProject: starter 1기 리듬게임 유니티 프로젝트 입니다.

starter 1기 리듬게임 유니티 프로젝트 입니다. Contribute to MoHoDu/StartersRythmGameProject development by creating an account on GitHub.

github.com

 

 

유데미 코리아 바로가기 : 

 

Udemy Korea - 실용적인 온라인 강의, 글로벌 전문가에게 배워보세요. | Udemy Korea

유데미코리아 AI, 파이썬, 리엑트, 자바, 노션, 디자인, UI, UIX, 기획 등 전문가의 온라인 강의를 제공하고 있습니다.

www.udemykorea.com

 

💡 본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.