복대가리의 개발

Unity

Unity DOTS 시스템, ECS 신규 업데이트

복대가리 2023. 1. 6. 23:48
728x90

이번에 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는 살펴 볼 수 있습니다.

왼쪽 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 

 

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

728x90

'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