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

[유니티] Unity DOTS 1편 : 기본 개념 정리 본문

Unity

[유니티] Unity DOTS 1편 : 기본 개념 정리

l__j__h 2024. 2. 7. 15:43

 

World - Archetype - Chunk 의 관계

 

Chunk - Entity - Component 의 관계

 

위 그림을 보면 World, Archetype, Chunk, Entity, Component ...의 뭔지 모르겠는 단어가 잔뜩 나옵니다.

실제로 보면 별 뜻 없습니다!!! (아마도)

제가 이해한 대로 최대한 쉽게 쓰겠습니다.

 

가장 작은 단위인 Component부터 살펴보ㅏ요!

Component :

각 Entity에 속한 기능.

움직임 관련 변수를 담고 있는 Movement Component

Component는 구조체, 클래스 모두 가능합니다.

위 사진에서 볼 수 있듯이 IComponentData를 상속하여 내가 원하는 컴포넌트를 만드는 듯 합니다.

 

Entity :

Component를 갖는 개체. 하나의 Component를 가질 수도 있고, 여러 개의 Component를 가질 수도 있습니다.

기존 유니티 방식에 비유하자면... 게임 오브젝트 같은 단위인 것 같습니다 (저도 아직 확실하진 않음!!)

Chunk :

Chunk가 Archetype보다 작은 단위인 것은 맞지만!!!! 쉬운 이해를 위해 Archetype 과 함께 설명하겠다.

 

Archetype (아키타입) :

같은 Component들을 갖는 Entity끼리 묶은 그룹.

World - Archetype - Chunk 의 관계. 맨 위에 있던 그림인데 그대로 다시 가져왔지롱

이 그림을 보면, Archetype A B C, Archetype A B, ArcheType A C 라고 되어있슴다.

즉, Archetype A B C는 Component A와 Component B, Component C를 갖는 Entity만을 묶은 그룹이고,

Archetype A B는 Component A와 Component B를 갖는 Entity만을 묶어놓은 그룹입니다.

어??? 그런데 그림에는 Chunk라고 되어있는데요?????

 

네!!!

 

Chunk

 

Chunk - Entity - Component 의 관계.  맨 위에 있던 그림인데 그대로 다시 가져왔지롱

128개의 Entity를 묶어놓은 덩어리 입니다~~!

네. 기본 정의는 이게 끝이래요.

 

그럼 이제 World는 뭘까요?

 

World : 

World는 언뜻 이름만 보면 Scene처럼 느껴지지만, 아닙니다! (저만 그랬나요??)

World는 기능 분리 시 유용한 요소입니다.

예를 들어, DOTS를 채용하는 타 시스템에서는,

서버 기능에 대해 별도의 World를 생성하고, 각 클라이언트에 대해 World의 엔티티 관리자가 생성 메서드를 제공합니다.

즉, 서버에 접속한 클라이언트에게 엔티티 생성 메서드를 제공하는 기능을, 서버 전용 World에서 수행하는 것이지요!!

왜 이렇게 하냐구요??

 

일단, Entity가 존재하기 위해선, 제일 먼저 World가 존재해야 합니다.

그리고, 한 World 내에선 각 Entity가 고유한 ID를 가지지만, 서로 다른 World에 존재하는 Entity라면 동일한 ID를 지녀도 상관이 없습니다.

이 특징이 기능 분리에 편리해서 그런 것 아닐까요

사실 아직 실제로 써보지도 않았고, 영상을 모두 정독한 것도 아니라서 제 추측입니다..ㅎㅎ 아니라면 꼭 제게 태클을 걸어주세요.

 

--이어서--

 

출처 : 

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

728x90