참치김밥은 최고의 한식이다

[유니티] Unity로 오픈월드를 만드는 과정과 기능 개발 (1) 본문

Unity

[유니티] Unity로 오픈월드를 만드는 과정과 기능 개발 (1)

l__j__h 2024. 2. 22. 16:31

본 포스팅은 아래 영상을 정리하며 작성했습니다.

https://www.youtube.com/watch?v=pQ0lb9OxxbE

 

 

일단 오픈 월드 가 무엇일까?

직역하면 열린 세계로, 뭔가 엄청 넓을 것 같다.

맞다!!

 

일반적인 게임에서는, 다른 장소로 이동할 때 포털을 이용해서 Scene을 이동하는 방식을 채택한다.

하지만 이렇게 하면 각 장소가 분리된 느낌이 들어서 플레이의 연속성이 떨어진다.

이런 문제를 해결한 것이 바로 오픈 월드다 !!!

 

그렇다면, 오픈 월드가 갖추어야 할 조건은 무엇이 있을까?? ⬇️⬇️

오픈월드의 조건
- 긴 가시거리 : 500m~1000m 이상
- 연결된 빅사이즈 월드 (4k ~ )
- 프리 카메라 -360도
- 백로딩 (스트리밍) (다른 장소 갈 때마다 로딩하지 않는..)

 

 

그런데, 이렇게 큰 월드를 한 번에 로드하면 성능 상 분명히 좋지 않을 것이다.

따라서, 오픈 월드에서는 플레이어가 볼 수 있느냐/없느냐에 따라 에셋을 관리한다.

바로 아래 그림처럼 !!! ⬇️⬇️

 

우측을 보면, 카메라가 있고 카메라를 둘러싼 초록 원이 보인다.

그 초록 원에서,

- 밝은 부분 = 카메라가 보고 있는 영역 = 렌더링 영역

- 어두운 부분 = 카메라가 볼 수 있는 영역 = 가시 영역

이다.

 

또, 원을 감싸고 있는 노란색 박스와 주황색 박스가 보인다.

- 노란색 박스 = 생성된 게임 오브젝트 = 인스턴싱 영역

- 주황색 박스 = 로드한 에셋 = 로딩 영역

이다.

이때, 둘은 CPU상에 존재한다.

그 외 아직 로드되지 않은 에셋은 Disk 상에만 존재한다.

(아 참고로 로드된 에셋들은 아직 생성하지 않았기 때문에 게임 오브젝트가 아니다!!!)

(에셋 단계 = Raw data ≠ 게임 오브젝트)

 

다음 포스팅에서는 오픈월드 개발 시 발생 가능한 기술적 문제해결 방법에 대해 알아보겠다

728x90