이번에 Unity Korea 유튜브 채널에서 좋은 영상이 올라와 보고 정리 하게 되었습니다.
OOP ( Object Oriented Design ) => 객체 중심
- 속성, 기능을 하나로 묶어 객체로 표현하고 이 객체를 기반으로 점차 확장, 연결하여 다양하고 긴밀한 객체들을 개발하는 디자인
OOP의 문제점
- 기능이 추가 될때마다 구조가 복잡하다.
- 과거 개발 히스토리를 파악해 두어야합니다.
- 연산처리가 객체 중점 ( CPU 보다는 메모리를 많이 사용 )
메모리랑 CPU의 퍼포먼스 갭차이는 계속 벌어지고 있는데 OOP는 CPU보다 메모리를 더 많이사용하는 단점으로 인해서 CPU의 자원을 어떻게 하면 더 많이 쓰고 성능을 끌어올 릴 수 있을지 고민을 합니다, 즉 연산 중심의 효율적인 디자인을 생각해내고 탄생하게 되는데 그것이 DOD 입니다.
DOD ( Data Oriented Design ) => 데이터 중심
- 객체를 구성하는 데이터들을 동일한 것끼리 모아서 관리하고 접근하는 디자인
- 데이터를 모아서 CPU에 전달하기 때문에 CPU 활용도가 OOP보다 높으며 병렬처리, 모듈화 등 좋은 장점이 많습니다.
- 하지만 난이도가 높습니다.
DoTS란 무엇인가?
- 객체가 아닌 데이터에 초점을 맞춘 아키텍처
DoTS (DATA-ORIENTED TECHNOLOGY STACK)의 종류
- Sparse Set
- 엔티티를 구성하는 각 구성요소 별로 묶어서 관리하는 방식
- ex) 마인크래프트, 오버워치
- Archetype (아키타입)
- 엔티티의 조합 타입별로 묶어서 관리하는 방식
- 동일한 조합의 형태만을 모아서 빠르게 접근할 수 있도록 관리하는 DOTS
- ex) Unity, 언리얼엔진
ECS ( Entity Component System )
- GameObjects와 호환되는 데이터 지향 프레임워크로서 고성능의 제어 및 결정성으로 더욱 스케일이 큰 컨텐츠를 만들 수 있다.
Unity Megacity Sample ( https://github.com/Unity-Technologies/Megacity-Sample )
- Unity 2022.2버전에서 깔끔하게 돌아가도록 업데이트 완료 했다고 합니다.
- 얼마나 많은 오브젝트들을 처리할 수 있는지 보여주는것에 대해서 초점이 맞춰져 있는 프로젝트 ( CPU를 얼마나 잘사용하는지 )
- 프로젝트는 HDRP다 보니 몇가지 설정을 바꿔줘야 한다고 합니다.
1. Proeject Settings 퀄리티 설정 필요 ( 컴퓨터 성능에 따라 )
2. Preferences -> Jobs -> Enable Jobs Debugger 비활성화
3. Jobs 메뉴의 Burst에서 Enable Compilation이 켜져있어야 하며 Safety Checks가 켜져 있지 않은지 확인필요.
★ Unity에서 제공하는 튜토리얼 참고 필요 ( 저도 나중에 보고 정리할 예정입니다 )
ECS 버전이 1.0.0-pre.15이 되면서 새로 추가된 기능 정리
- Entities Hierarchy
- 유니티 ECS는 병렬 처리를 위해 SubScene으로 나누어져 있습니다.
- 일반 Hierarchy에서는 해당 내용을 볼 수 없지만 Entities Hierarchy는 살펴 볼 수 있습니다.
- Systems
- 컨텐츠에서 존재하는 엔티티들의 활동을 실시간으로 확인할 수 있는 인터페이스
- 각 엔티티들의 활동 개수와 처리 시간을 확인할 수 있어 퍼포먼스의 비중을 편리하게 분석할 수 있습니다.
- 14000개나 되는 오브젝트를 1초안에 처리할 수 있다니 너무 신기합니다.
- Components
- ECS 구축을 위해 작성한 모든 DOTS 컴포넌트를 목록으로 확인할 수 있는 창
- Type도 확인할 수 있습니다. ( Data, Tag, Shared, Buffer 등 )
- Archetypes
- ECS, 유니티 DOTS의 가장 중요한 정보로서 데이터 그룹을 결정하는 아키타입들의 목록을 확인하고 자세하게 분석할 수 있는 창
내년 상반기 쯤 정식 1.0 버전대로 갈 거 같다.
아직까지는 기존에 사용하던 컴포넌트를 다 사용할 순 없다. ( 계속 추가하고 있다고 합니다. )
참고해야될 사이트
1. [유니티 TIPS] 유니티의 DOTS 시스템, ECS 신규 업데이트! 정리
2. Unity Entities
Entities overview | Entities | 1.0.0-pre.15
Entities overview The Entities package, part of Unity's Data-Oriented Technology Stack (DOTS), provides a data-oriented implementation of the Entity Component System (ECS) architecture. See the DOTS Guide and Samples for introductory material, including tu
docs.unity3d.com
3. Sample DOTS Character Controller for Unity
- https://assetstore.unity.com/packages/tools/physics/rival-dots-character-controller-for-unity-225129
Rival - DOTS Character Controller for Unity | 물리엔진 | Unity Asset Store
Get the Rival - DOTS Character Controller for Unity package from Unity Technologies and speed up your game development process. Find this & other 물리엔진 options on the Unity Asset Store.
assetstore.unity.com
4. Basic ECS
GitHub - Unity-Technologies/EntityComponentSystemSamples
Contribute to Unity-Technologies/EntityComponentSystemSamples development by creating an account on GitHub.
github.com
'Unity' 카테고리의 다른 글
IOS 개인정보보호정책 변경에 따른 Unity 참고사 (0) | 2024.02.26 |
---|---|
안티앨리어싱 (0) | 2023.02.01 |
[Unity] URP - 셰이더 그래프 기본 (0) | 2022.11.22 |
[Unity] UI - Input Field (0) | 2022.11.15 |