유데미 스타터스 취업부트캠프 1기

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

REDSHA 2022. 9. 3. 18:42

이번주는 강사님이 실제로 에셋을 만들 수 있는 MagicaVoxel의 사용법에 대해 알려주셔서 실습중심의 수업을 진행해주셨다. 이번 실습은 유니티 프로젝트를 하면서 필요한 에셋을 직접 만들어볼 수 있어서 기획에 따라 에셋유무에 대해 제한받지않고 자유롭게 프로젝트를 진행할 수 있는 기술을 배울 수 있었던 실습수업이었다. 그리고 실습과제를 그동안 배운 지식을 토대로 개인적으로 구체화 시켜볼 수 있었던 시간이었다.

 

또한 저번주부터 제작했던 폴가이즈에 대해 마무리까지 지었던 한주였다

제작한 폴가이즈 풍 게임 플레이영상

 

이번 학습 일지는 제작한 폴가이즈에 대한 구현 설명과, MagicaVoxel에 대한 간략한 설명, 구현내용으로 적어나갈 예정이다.

🐥 폴가이즈 풍 게임만들기

폴가이즈의 게임 로딩씬, 게임 플레이씬, 게임완료/ 보상씬 의 세가지 씬으로 구분하여 구현하였다.

 

게임 로딩씬의 경우 카메라 범위내에서 랜덤으로 긴 선이 시간에따라 진해지고, 옅어지며 위로 상승하는 효과가 있었다 이를 구현하기 위해 Particle System의 Shape를 통해 카메라 영역만큼의 랜덤생성 범위를 지정해주었으며 ColorOverLifetime 을 통해 시간에따라 진해지고 옅어지는 것을 구현하였다. 또한 RenderMode에서 Stretch BillBoard를 통해서 긴 길이의 줄을 구현 할 수 있었다.

 

그리고 이렇게 설계된 파티클 시스템이 투영되서 보일 수 있도록 플레이어 뒷면에 Cube 오브젝트를 배치해서 선이 정상적으로 랜더링 될 수 있도록 구현하였다.

그리고 이어진 로딩화면에서는 일정인원 20명 이상이 준비된경우(포톤과 같은 멀티플레이 시스템을 도입하지않아 랜덤값으로 부여함) 게임스타트 메세지가 작동하도록 구현하였으며 해당 초가 흐른다음에는 로딩씬으로 게임씬로드 캔버스가 켜지게 구현하였다. 

게임씬으로 이동후 카메라가 맵전체를 비추는 애니메이션을 추가하였고 UI를 통해 맵에대한 설명을 간략히 추가하였다.

설명이 끝나면 3초간의 준비시간을 UI로 보여주고 Go라는 글자가 출력된이후 플레이어, 경쟁자들이 움직이도록 구현하였다.

맵은 총 4구간으로 구성하였다

1구간은 직선 이동구간, 2구간은 상하 움직임을 가진 장애물구간, 3구간은 회전 장애물구간, 4구간은 물을 피하는 징검다리구간으로 구성하였다.   

이중 3구간과 4구간의 경우 허용된 구역 (원판, 색으로 이루어진 박스)를 벗어나게되면 각각 카메라 효과를 통해(붉은색, 푸른색) 잘못된영역에 들었음을 인지시키고 3구간 진입전으로 재배치 시켜주었다.

- 플레이어가아닌 다른 경쟁자들의 경우도 3구간 진입전 랜덤값으로 재배치 시켜주었다.

게임 승리 조건은 아래 보이는 원형 아치에 진입하는것이며(2등 안으로)

게임 패배 조건은 플레이어 보다 먼저 두명이 아치에 진입할 경우이다.

게임의 승패가 정해진 경우 라운드 종료라는 UI가 작동되며 이후 게임완료/보상 씬으로 이동하게된다.

 

게임 완료/ 보상씬은 함께 뛰었던 경쟁자들이 슬롯에 배치된 형태로 존재하며 일정시간이 지난후 승리자를 제외한 모든 이들이 떨어지는 식으로 구현하였다.

모든 이들이 떨어지고 일정시간이 지난후에는 보상이 주어지는 영역으로 이동하게된다.

이때 주인공인 공은 단상에 튕기는 효과를 주며 존재하게되며 플레이요약의 게이지바가 순차적으로 차오르게끔 구성하였다. 또한 ESC를 누를경우 로딩씬에서부터 다시 할 수 있게끔 구현하였다.

🐥 MagicaVoxel 사용하기

매지카복셀은 무료 경량 8비트 복셀 편집기, 렌더러이며  PC 및 MAC에서 사용할 수 있다.

블랜더나 3dMax, SketchUp과 같은 다른 모델링 프로그램과 같은 UI구성, 씬이동을 지원하며 픽셀단위의 작업을 하기에 용이한 프로그램이었다.

이를 활용하여 배경에셋, 캐릭터에셋, 아이템에셋등을 제작할 수 있었는데 이중 캐릭터에셋은 T pose 형태로 제작후 믹사모(https://www.mixamo.com/#/)에서 지원하는 오토리깅을 통해 애니메이션을 생성할 수 있었다. 이렇게 생성된 애니메이션을 유니티내로 가져와 스크립트를 적용하여 일반 에셋을 사용하여 프로젝트를 만드는것처럼 활용할 수 있었다.

 

이중 메인캐릭터가 될 모델에게 캐릭터에 관련된 스크립트를 작성하여 붙여주었으며 애니메이션에도 키프레임에 Raycast, Particle System을 활용하여 다양한 공격모션들을 추가해보았다.

 

MagicaVoxel에서 제작한 모델을 유니티엔진으로 가져와 활용

🐥 총평

1. 저번주의 프로빌더와 같이 기존 프로젝트를 제작하며 원하는 오브젝트를 구하지못해 안타까웠던 부분을 MagicaVoxel을 통해 직접해결해 볼 수 있었던 좋은 시간이었다.

2. 저번주부터 시작한 프로젝트인 폴가이즈풍게임을 마무리 지을 수 있어서 좋은 시간이었다.

3. 이번에 조기인턴으로 선발되어 이번주를 마지막으로 더이상의 후기를 올리지는 못하지만 그동안 유데미 스타터스1기를 하며 정말 많은것을 배웠고 단순히 배우는것뿐만아닌 자습시간을 통해 내것으로 구체화할 수 있었던 교육시간이었다.

 

스타터스 관계자분들(사디님, 스텔라님, 리아님)도 끊임없이 아쉬운부분, 불편한 부분에대해 질의 해주셨고 실제로 다양한 조치를 통해 조금이라도 편한 환경에서 공부할 수 있도록 지원해주셔서 부족함없는 환경에서 공부할 수 있었던것같다.

 

스타터스를 같이 진행한 동료들도 같이 강사님이 내주신 문제를 해결하고 때로는 각기다른 프로젝트를 진행하며 때로는 같은 목적(코딩테스트, 협업프로젝트 스터디)을 자율적으로 설정하고 이에 대해 서로 질의응답하며 유니티, 코드에대한 실력을 배양할 수 있었던 아주좋은 환경이었다. 나 또한 다른 스타터스 분들에게 매우많은 정보를 얻을 수 있었고 공부할 수 있었던것같다.

 

스타터스의 교육을 담당하셨던 강사님들(이석찬강사님, 황효현강사님,박웅강사님, 윤인식강사님, 양새하강사님)도 정말 열정적으로 강의 해주셨고 교육간에 궁금했던 내용들에 대해 수업이 아닌시간에 질문해도 기꺼이 대답을 해주셔서 내가 정확하게 파악하지 못했던 개념등에 대해서 보다 확실하게 파악 할 수 있었던 시간이었다.

 

유데미 스타터스1기 화이팅!!