- 프로젝트 명 : 냥이의 섬
- 프로젝트 주제 : 자연 환경 보전을 주제로 한 힐링/소통 게임
- URL : https://youtu.be/vkj61-HrW5Q
- 개발 인원 : 3명 ( 홍유진, 연인석, 김준호 )
- 개발기간 : 04/28(화) ~ 06/09(화)
- 개발환경: Unity 2019.3.11f, OpenGL ES3.0, Oculus Quest + Touch
프로젝트 개요
냥이의 섬은 주인공이 잃어버린 고양이를 찾기 위해 어떤 섬으로 가게 되는 스토리를 가지고 있습니다. 이 섬은 인간들이 버린 쓰레기로 오염되 있었는데, 인간에게 악감정이 있는 동물NPC들과 친해지며 고양이에 대한 단서를 찾아가는 게임입니다.
청소년 층에게 환경파괴와 쓰레기투기 문제에 대해 딱딱하지 않으면서 부드럽고 재미있게 알려줄 수 있는 게임입니다. 실감나는 VR환경에서 섬을 청소하고, 섬이 정화될 때 NPC가 기뻐하는 모습을 보며 환경보전에 대해 더 깊은 동기를 부여할 수 있을 것입니다.
개요
- 게임 실행후 프롤로그 감상 ( 스킵가능 )
- 시작하기 / 업적보기 / 튜토리얼 / 종료하기 / 애니메이션 보기 선택
- 게임 시작시 간단한 조작 튜토리얼 시작 ( 스킵가능 )
- 맵에서 돌아다니며 NPC와 대화와 미니게임 혹은 쓰레기 청소
- 최종 게임 후 고양이를 찾게되고, 엔딩을 보고 마무리 이후 2번으로 돌아감
- 이때 달성한 업적이 있다면 업적이 활성화됨 (메뉴상단의 액자들)
팀구성 및 역할
프로젝트 일정
미니게임
-10가지 미니게임으로 단조로울 수 있는 게임에 다양한 재미요소 추가
-각 게임시작 전 로딩화면에서 게임에 대한 튜토리얼 확인 가능 (사진참조)
시네마틱VR
평면이 아닌 360도 동영상으로 스토리에 깊은 몰입 가능
모바일기기 Oculus Quest와 최적화
- 오큘러스 퀘스트는 모바일기기라 최적화에 신경쓰며 작업
- OpenGL ES3.0으로 GPU의 성능보다는 CPU와 안정성을 선택
- 부드러운 VR체험을 위해 모바일 기기의 Target Frame Time(30FPS) 제한을 깸
- 유니티 프로파일러로 병목파악, 자체 제작한 FPS프리팹과 안드로이드 로그캣으로 FPS, Frame Time 확인
- 메인 씬에서는 최적화된 셰이더 사용. 셰이더에서 If문, 초월함수 최소한으로 사용, 디렉셔널 라이트만 계산. 부하가 적은 특정 씬(엔딩 크레딧)에서만 고성능 셰이더 사용
- 유니티 터레인으로 제작한 배경과 같은 무거운 모델의 버텍스 최적화
- 동적 그림자와 스태틱 오브젝트 그림자의 자연스러운 병합을 위해 쉐도우 마스크 라이트맵 사용, 카메라를 기준으로 그림자가 생성되는 거리를 제한하여 최적화
대화 시스템과 애니메이션
- 텍스트는 물론 음성과 애니메이션이 포함된 고급 대화기능
- 한글자씩 출력되며 트리거 버튼을 한번 누르면 대화 스크립트 전체출력, 두번 누르면 다음 대화 시작
- UniRX를 이용한 비동기처리 ( TalkManager.cs )
TalkManager.cs 스크립트의 일부
TalkContents.cs 스크립트의 일부
특수효과 셰이더
-유저 편의성을 위해 특수효과 셰이더를 제작하고, 이를 C#스크립트로 제어
-자체제작 셰이더 외에도 ZBuffer를 0으로 설정하는 셰이더예제를 이용해 UI에 적용
- 왼쪽그림 : 비닐봉지에 버텍스컬러의 R값을 이용해 쓰레기 봉투에 쓰레기가 담길수록 아래서부터 검게 변하는 셰이더
- 가운데그림 : 2개의 Pass를 이용하여 버텍스를 노말방향으로 확장시키고 Emission으로 색상을 입혀 선택된 쓰레기에 아웃라인을 표시해서 강조
- 오른쪽그림 : 마스크텍스쳐를 이용해 오물을 닦을수록 조금씩 지워지는 셰이더
UTS2.0을 이용한 캐릭터 디자인
-유니티 재팬에서 제공하는 유니티짱 툰 쉐이더2.0를 이용해 캐릭터 디자인
- Effect Mast, Normal map을 제작하고 Matcap과 2ndShadeMap을 이용
간편하고 보기좋은 UI
-추가 설명없이 원활한 플레이를 위해 UI와 튜토리얼 제작
파일시스템을 이용한 업적시스템
- 게임이나 기기의 전원을 재시작 후 유지되는 업적시스템을 위해 파일시스템 사용
- 플레이어에게 도전의식을 불러일으키고 여러 번 게임에 도전하게 만듬
재미있는 던지기 효과
-물리효과 코드 + 이펙트(트레일, 슈리켄) + 시원한 사운드 + Physic Material
Softbody
- 말캉말캉한 느낌을 만들기 위해서 Obi Softbody에셋 이용
- 모델을 기반으로 Softbody Blueprint를 만들고 버텍스간 물리적 제약조건을 설정하여 원하는 질감을 표현할 수 있었음
- Oculus Quest의 성능문제로 현재 프로젝트에 적용하지 못함
결과, 느낀점
- 프로젝트 수행상 어려움 극복사례 : 경험 부족으로 프로젝트의 기본 설정값과 규모를 설정하는데 어려움이 있었습니다. 지금 할 수 있는 것과 없는 것을 최대한 구분하고 불안요소를 제거해가며 테스트를 진행하였다. 전지와 테스트결과를 영상으로 공유한 것이 큰 도움이 되었다.
- 프로젝트에서 잘한 부분 : 팀원의 자기조직화가 잘 되어 큰 문제없이 프로젝트를 진행하였다. 유니티 인스펙터창을 활용하여 개발도구를 만들어 팀원간 시너지가 발생할 수 있게 작업한 것이 매우 잘했다 생각한다.
- 프로젝트에서 아쉬운 부분 : 어느정도 최적화를 진행했음에도 기기 성능문제로 원하는 것을 표현하지 못하는 것이 아쉬웠다. 모바일기기에서 더 높은 퍼포먼스를 내기 위해 공부를 해보아야겠다.
- 프로젝트를 통한 진로설계, 취업분야 탐색 및 결정 등 도움 : RX 프로그래밍과 VR 시네마틱을 만들면서 배울게 정말 많다고 생각하였고, 그만큼 취업분야의 스펙트럼이 넓어졌다고 생각한다. 앞으로 물리효과와 그래픽적 기술들을 더 공부하여 시각적으로 우수한 효과를 만들어 보고싶다.
- 기타 : 프로젝트를 하면서 각자 원하는 부분에 힘을 쏟을 수 있어서 좋은 프로젝트였다고 생각한다.
'프로젝트 > 유니티 게임' 카테고리의 다른 글
Boid Simulation URP (0) | 2021.12.26 |
---|---|
콩콩핑퐁(KKPP) : Lego Microgame (0) | 2020.12.05 |
창의력 그리기 VR (오큘러스 퀘스트, 핸드트래킹, 포톤 네트워크) (1) | 2020.11.22 |
하늘에서 떨어지는 고양이(ML-Agents) (0) | 2020.11.21 |
Puppo the Corgi VR, VIVE PRO (0) | 2020.11.21 |