일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Effective C#
- NavMesh
- shader
- 튜토리얼
- 깃허브
- error
- 2판
- 애님
- 사용법
- 메모리
- 쓰는 법
- 쉐이더
- 오류
- Final IK
- tutorial
- 속성
- 유니티 그래픽스 최적화 스타트업
- 파이널 IK
- github
- 애니메이션
- 유니티 그래픽 최적화
- c#
- 프로퍼티
- 최적화
- 익명 타입
- 리깅
- 리팩토링
- 에러
- unity
- 유니티
- Today
- Total
참치김밥은 최고의 한식이다
[유니티] Unity로 오픈월드를 만드는 과정과 기능 개발 (1) 본문
본 포스팅은 아래 영상을 정리하며 작성했습니다.
https://www.youtube.com/watch?v=pQ0lb9OxxbE
일단 오픈 월드 가 무엇일까?
직역하면 열린 세계로, 뭔가 엄청 넓을 것 같다.
맞다!!
일반적인 게임에서는, 다른 장소로 이동할 때 포털을 이용해서 Scene을 이동하는 방식을 채택한다.
하지만 이렇게 하면 각 장소가 분리된 느낌이 들어서 플레이의 연속성이 떨어진다.
이런 문제를 해결한 것이 바로 오픈 월드다 !!!
그렇다면, 오픈 월드가 갖추어야 할 조건은 무엇이 있을까?? ⬇️⬇️
오픈월드의 조건
- 긴 가시거리 : 500m~1000m 이상
- 연결된 빅사이즈 월드 (4k ~ )
- 프리 카메라 -360도
- 백로딩 (스트리밍) (다른 장소 갈 때마다 로딩하지 않는..)
그런데, 이렇게 큰 월드를 한 번에 로드하면 성능 상 분명히 좋지 않을 것이다.
따라서, 오픈 월드에서는 플레이어가 볼 수 있느냐/없느냐에 따라 에셋을 관리한다.
바로 아래 그림처럼 !!! ⬇️⬇️
우측을 보면, 카메라가 있고 카메라를 둘러싼 초록 원이 보인다.
그 초록 원에서,
- 밝은 부분 = 카메라가 보고 있는 영역 = 렌더링 영역
- 어두운 부분 = 카메라가 볼 수 있는 영역 = 가시 영역
이다.
또, 원을 감싸고 있는 노란색 박스와 주황색 박스가 보인다.
- 노란색 박스 = 생성된 게임 오브젝트 = 인스턴싱 영역
- 주황색 박스 = 로드한 에셋 = 로딩 영역
이다.
이때, 둘은 CPU상에 존재한다.
그 외 아직 로드되지 않은 에셋은 Disk 상에만 존재한다.
(아 참고로 로드된 에셋들은 아직 생성하지 않았기 때문에 게임 오브젝트가 아니다!!!)
(에셋 단계 = Raw data ≠ 게임 오브젝트)
다음 포스팅에서는 오픈월드 개발 시 발생 가능한 기술적 문제와 해결 방법에 대해 알아보겠다
'Unity' 카테고리의 다른 글
[Unity] UniRx 개념 및 사용법 정리 (1) (0) | 2024.03.15 |
---|---|
[유니티] Unity로 오픈월드를 만드는 과정과 기능 개발 (2) (0) | 2024.02.22 |
[개발 지식 + 유니티] Socket.IO 와 BestHTTP 란??? (0) | 2024.02.22 |
[유니티] 텍셀과 픽셀의 차이? (0) | 2024.02.20 |
[유니티] Force Field 쉐이더 만들면서 이해 안갔던 부분 정리 (0) | 2024.02.20 |