본문 바로가기

프로젝트/유니티 게임

냥이의 섬(NYAN Island)

반응형

 

- 프로젝트 : 냥이의

- 프로젝트 주제 : 자연 환경 보전을 주제로 힐링/소통 게임

- URL : https://youtu.be/vkj61-HrW5Q

- 개발 인원 : 3 ( 홍유진, 연인석, 김준호 )

- 개발기간 : 04/28() ~ 06/09()

- 개발환경: Unity 2019.3.11f, OpenGL ES3.0, Oculus Quest + Touch

 

 

 

 

 프로젝트 개요

냥이의 섬은 주인공이 잃어버린 고양이를 찾기 위해 어떤 섬으로 가게 되는 스토리를 가지고 있습니다. 섬은 인간들이 버린 쓰레기로 오염되 있었는데, 인간에게 악감정이 있는 동물NPC들과 친해지며 고양이에 대한 단서를 찾아가는 게임입니다.

 청소년 층에게 환경파괴와 쓰레기투기 문제에 대해 딱딱하지 않으면서 부드럽고 재미있게 알려줄 있는 게임입니다. 실감나는 VR환경에서 섬을 청소하고, 섬이 정화될 NPC 기뻐하는 모습을 보며 환경보전에 대해 깊은 동기를 부여할 있을 것입니다.

 

 

 

개요  

  1. 게임 실행후 프롤로그 감상 ( 스킵가능 )
  2. 시작하기 / 업적보기 / 튜토리얼 / 종료하기 / 애니메이션 보기 선택
  3. 게임 시작시 간단한 조작 튜토리얼 시작 ( 스킵가능 )
  4. 맵에서 돌아다니며 NPC 대화와 미니게임 혹은 쓰레기 청소
  5. 최종 게임 고양이를 찾게되고, 엔딩을 보고 마무리 이후 2번으로 돌아감
  6. 이때 달성한 업적이 있다면 업적이 활성화됨 (메뉴상단의 액자들)

 

팀구성 역할

 

프로젝트 일정

미니게임

-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 적용

  1. 왼쪽그림 : 비닐봉지에 버텍스컬러의 R값을 이용해 쓰레기 봉투에 쓰레기가 담길수록 아래서부터 검게 변하는 셰이더
  2. 가운데그림 : 2개의 Pass 이용하여 버텍스를 노말방향으로 확장시키고 Emission으로 색상을 입혀 선택된 쓰레기에 아웃라인을 표시해서 강조
  3. 오른쪽그림 : 마스크텍스쳐를 이용해 오물을 닦을수록 조금씩 지워지는 셰이더

 

 

UTS2.0 이용한 캐릭터 디자인

-유니티 재팬에서 제공하는 유니티짱 쉐이더2.0 이용해 캐릭터 디자인

- Effect Mast, Normal map 제작하고 Matcap 2ndShadeMap 이용

 

 

간편하고 보기좋은 UI

-추가 설명없이 원활한 플레이를 위해 UI 튜토리얼 제작

 

 

파일시스템을 이용한 업적시스템

- 게임이나 기기의 전원을 재시작 유지되는 업적시스템을 위해 파일시스템 사용

- 플레이어에게 도전의식을 불러일으키고 여러 게임에 도전하게 만듬

 

 

재미있는 던지기 효과

-물리효과 코드 + 이펙트(트레일, 슈리켄) + 시원한 사운드 + Physic Material

 

Softbody

- 말캉말캉한 느낌을 만들기 위해서 Obi Softbody에셋 이용

- 모델을 기반으로 Softbody Blueprint 만들고 버텍스간 물리적 제약조건을 설정하여 원하는 질감을 표현할 있었음

- Oculus Quest 성능문제로 현재 프로젝트에 적용하지 못함

 

 

 

결과, 느낀점

  • 프로젝트 수행상 어려움 극복사례 : 경험 부족으로 프로젝트의 기본 설정값과 규모를 설정하는데 어려움이 있었습니다. 지금 있는 것과 없는 것을 최대한 구분하고 불안요소를 제거해가며 테스트를 진행하였다. 전지와 테스트결과를 영상으로 공유한 것이 도움이 되었다.
  • 프로젝트에서 잘한 부분 : 팀원의 자기조직화가 되어 문제없이 프로젝트를 진행하였다. 유니티 인스펙터창을 활용하여 개발도구를 만들어 팀원간 시너지가 발생할 있게 작업한 것이 매우 잘했다 생각한다.
  • 프로젝트에서 아쉬운 부분 : 어느정도 최적화를 진행했음에도 기기 성능문제로 원하는 것을 표현하지 못하는 것이 아쉬웠다. 모바일기기에서 높은 퍼포먼스를 내기 위해 공부를 해보아야겠다.
  • 프로젝트를 통한 진로설계, 취업분야 탐색 결정 도움 : RX 프로그래밍과 VR 시네마틱을 만들면서 배울게 정말 많다고 생각하였고, 그만큼 취업분야의 스펙트럼이 넓어졌다고 생각한다. 앞으로 물리효과와 그래픽적 기술들을 공부하여 시각적으로 우수한 효과를 만들어 보고싶다.
  • 기타 : 프로젝트를 하면서 각자 원하는 부분에 힘을 쏟을 있어서 좋은 프로젝트였다고 생각한다. 

 

 

 

반응형