[Unity URP] 28Days

al_potato·2022년 3월 22일
0

Unity

목록 보기
2/2
post-thumbnail

Unity URP를 이용해 만든 게임 28Days

무모한 성격을 가진 10대 후반의 소녀 리아.🙋‍♀️

요트⛵를 타고 혼자 세계여행을 떠나 탐험하다 풍랑을 만나 무인도🏝에 갇히게 된다.

목표는 섬과 바다에서 탈출과 생존에 필요한 자원🥥🎣을 채취하여 살아남고, 조난 신호기를 만들어 섬을 탈출하는 것!

URP란?

  • Universal Render Pipeline

  • URP는 아름다운 그래픽과 뛰어난 성능을 제공하는 강력한 솔루션으로 이제 더욱 다양한 플랫폼에서 사용 가능합니다. 또한 최신 아티스트 툴을 지원하고 2D, 3D, 가상 현실(VR) 및 증강 현실(AR) 프로젝트 모두에 적합합니다.

  • 아티스트용 툴(비주얼 이펙트 그래프, 셰이더 그래프, 렌더 패스) 지원

출처 : https://blog.unity.com/kr/technology/how-the-lightweight-render-pipeline-is-evolving


1. 제작기간

  • 2021.01 ~ 2021.11

2. 사용한 툴

  • Unity URP 2019.4.4f1
  • Visual Studio

3. 참여인원

  • 2명 (프로그래머)

4. 게임을 만들게 된 동기

  • 졸업 프로젝트로 어떤 게임을 만들지 팀원분과 상의하다가 각자 주제를 2가지 정해오자고 하였는데, 내가 준비해간 주제 2가지 중 하나는 low polygon asset들을 사용하여 마법 마을을 만들어 모험하는 RPG형 이었고 다른 하나는 해양 생존 서바이벌 게임이었다.

  • Subnautica라는 게임을 매우 좋아해서 해양 생존 서바이벌 게임을 제작해 보고 싶었는데 팀원분이 흔쾌히 OK 해주셔서 제작하게 되었다.


5. 게임을 만들면서 어려웠던 점

  • 우선 URP로 게임을 만들어보는 것이 처음이라서 많이 헤맸다. 기존 3D툴과는 asset 적용 방법이나 쉐이더, 렌더링 부분들이 달라서 많이 찾아보고 공부하면서 작업해야했는데, URP가 나온지 얼마 되지 않아 자료도 많지 않아서 이것저것 해보면서 시간을 많이 썼던 것 같다.

  • 게임안에는 player를 공격할 수 있는 물고기인 piranha가 있는데 이 피라냐의 행동 패턴을 담당하는 FSM을 만드는 것이 어려웠다. EscapeFROM에서는 Boss Zombie와 일반 Zombie로 두 타입의 enemy가 있어 enemy base script를 상속받아서 구현하는 방식을 썼는데, 이번 28Days에서는 enemy가 piranha 하나 밖에 없어서 switch문과 coroutine을 사용하여서 FSM을 구현하였다.
    piranha의 행동패턴은 IDLE, ATTACK, PATROL(SWIM), DIE로 구성되어 있는데 PATROL을 구현하는 부분에서 이동할 수 있는 곳을 6곳으로 한정시켜 놓고 6개의 점 중에 random으로 선택해서 돌아다니게 하였다. Coroutine과 switch문으로 구현하다보니 이것저것 신경써줘야할 부분이 많아서 꼬박 일주일을 고민하고 꼬박 일주일을 구현한 것 같다. 아래 사진에 보이는 노란색 구체가 enemy가 돌아다닐 6개의 점을 나타낸 것이다.


6. 게임을 만들면서 즐거웠던 점

  • 여러 작업을 해보는 것이 재밌었다. 그래픽 쉐이더를 만져보기도 하고 post processing을 사용하여 보기도 하고, fog를 추가해 보기도 하고 실제 바다를 수영하는 것 처럼 작업해 보는 것이 즐거웠다.

  • 바다에는 물고기들이 돌아다니는데 물고기들에게 가까이 다가가서 상호작용 키를 누르면 물고기가 잡히고 inventory에 추가된다. 물고기를 잡는 부분은 내가 구현하고 inventory에 추가하는 것은 팀원분이 작업하셨는데 서로 협업해서 하나의 기능을 구현해낸 것이 재밌었다.


7. 게임을 만들면서 실패한 부분

  • 게임에 Object가 많다보니 메모리적인 부분이 많이 신경쓰였다. 바다를 돌아다니는 물고기나 피라냐들은 object pool을 사용하여 메모리의 사용을 많이 줄이려고 노력했다. 하지만 워낙 오브젝트들이 많다보니 게임이 살짝 버벅이는 현상이 있었다. 아마 처음에 시작할 때 많은 물고기들을 한꺼번에 instantiate 해줘서 그런 것이 아닐까 생각하는데 해결방법을 찾지 못했다..

-> https://blog.unity.com/kr/technology/tales-from-the-optimization-trenches 해보기


8. 작업분배

  • 나는 그래픽쪽과 player ctrl, 물고기 ctrl, enemy FSM, sound ctrl, tutorial scene, ending scene 쪽 script들을 맡았고,

  • 팀원분은 Day Ctrl, UI Ctrl, Save & Load, Inventory & crafting 쪽 script들을 맡았다.


9. 차용한 알고리즘

0개의 댓글