티스토리 뷰

유니티를 다루다 보면 자연스럽게 다루게 되는 것이 바로 씬이다.

Scene이라는 그 명칭마냥, 하나의 '장면'을 담당하는 요소.

이래저래 활용법은 간단하긴 하지만, 플레이 경험에 비교하면, 로딩 최적화를 고려하면 이것도 좀 복잡하게 구성해야 한다.

 

그렇다면, 어떻게 하면 될 것인가.

사실, 여기에는 꼼수가 좀 많이 쓰인다.

사실 최적화 요소들도 대부분 '보이지 않는 영역'을 이용한 꼼수이지만 말이다.


실내와 실외는 알고보면 같은 공간

가장 기초적인 사항. '실내'를 구현한다고 해서 씬을 새로 작성하면 안된다는 내용이다.

이유는 간단하다. 그 만큼 씬 로딩이 자주 일어나니까.

씬 로딩 자체가 Don't Destroy On Load로 지정된 오브젝트들 이외에는 전부 날려버리고 새로 쌓아올리는 것이다 보니 부하가 크고, 그렇다 보니 느리다.

 

더군다나 플레이가 매끄럽지 않고 툭툭 끊어지는 느낌이 들기 때문에 UX 적으로도 그다지 좋은 방향은 아니다.

이에 대해서는 적당한 예시는 상당히 많다. 스타필드도 어마어마하게 잦은 로딩 덕분에 혹평을 들은 바 있고, 구작 몬스터 헌터도 플레이어에게 가장 혹평받는 요소가 지역 이동 로딩이니 말이다.

 

그러면 '실내'를 어떻게 구현하는 게 좋을까.

의외로 간단하다. 서로가 안 보일 정도로 격렬하게 멀리 떨어트려서 구성하는 것.

그런 뒤에 씬을 이동하는 대신 카메라와 캐릭터의 위치만 이동시켜 주면 끝.

비단 Unity 뿐만이 아니라 다른 게인 제작 툴으로도 활용할 수 있는 방법이고, 3D에서도 한정적이지만 활용 가능한 방법이다.


오브젝트 풀 최적화

씬 이야기를 하는데 왜 오브젝트 풀이 나오느냐고 할 수도 있다.

그러나, 오브젝트 풀은 엄연히 '씬의 시작에 미리 만들어둬야 하는' 구성이라 씬 로딩에 의외로 영향을 크게 끼치는 편이다.

그렇다면 어떻게 최적화 하라는 것일까.

간단하다면 간단한데, '통합할 수 있는 요소들은 통합해서 구성하는 것'이다.

 

오브젝트 풀은 게임 상에서 자주 생성, 파괴되는 내용들을 미리 생성해 놓고 돌려쓰는 개념인데, 그렇다 보니 오브젝트 풀에 항목을 분화시킨다고 해서 각 요소의 개수를 줄일 수 있는 구성이 아니며, 오히려 특정 상황에만 많이 쓰이는 경우도 있어서 '안쓰이는' 요소들이 우후죽순 생기는 문제점이 발생한다.

때문에 오브젝트 풀의 내용물은 통합 구성할 수 있다면 통합 구성하는 것이 좋다.


동적 생성

간단하게 말하자면, '처음 부터 전부 생성하는 게 아니라, 씬을 진행하면서 점차 생성하는 방법'이다.

사실상 플레이어가 로딩해서 바로 필요한 건 '근처'의 정보지, '걸어서 1시간 거리의 정보'는 아니라는 점을 이용하는 방식인 셈이다.

추가로, UI라던지 이런 저런 요소를 동적으로 생성하게끔 구성하면 씬 로딩 속도를 더욱 높일 수 있다.

 

물론, 이렇게 구성하면 필드 로딩 보다 플레이어의 이동이 더 빠른 경우에는 문제가 발생하긴 한다.

게임에 따라서 새로운 지역에 들어갔을 때, NPC라던지 UI라던지가 시간이 지나면서 점차 드러나는 현상을 은근 자주 볼 수 있을 텐데, 그게 바로 이 동적 생성 때문에 그런 것이다.

시작할 때에 발생하는 해당 로딩 현상은 플레이어 경험에 그렇게 크게 악영향을 주지는 않는 데다가, 일단 로딩이 되서 빠르게 플레이가 가능하게끔 하는 게 로딩에 의한 난점을 크게 줄일 수 있기 때문에 사용하는 방법.

 

다만, 경우에 따라서는 플레이어가 동적 생성이 정상적으로 진행되지 않은 구역으로 들어가 버리는 탓에 이런 저런 이슈가 발생하는 경우도 있긴 하다.

[주로 '소닉 시리즈'와 같이 속도가 극도로 빠른 시리즈에서 자주 발생하는 문제. 반대로 버그로 인해서 발생하기도 한다.]


사실, 오늘 작성한 내용은 프로젝트의 상황에 따라서 어떻게 적용할 것인지를 충분히 논의하고, 고심해서 결정해야 하는 사항이다.

다만, 본 문의 정리 내용은 상당히 자주 사용되는 데다가, 익혀 두면 두고두고 사용되는 사항들이니까, 미리미리 연습 해 두는 것이 좋을 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함