[UNITY]/TIL: Etc 6

[ECS/DOTS] C# JOB System으로 병렬처리에 도전하기

잡소리 없이 바로 시작하자 !! 아래는 현재 OnUpdate의 상태이다. 이 것을 아래와 같이 고쳐보겠다. 내용은 별로 바뀌지 않았다. 어떤부분이 왜 바뀌었는지 알아보자 먼저 C# Job System에서 Job은 struct로 구현해야하는 규칙이 있다.인터페이스는 IJobEntity를 사용한다.(보통은 C# Job System에서 IJob혹은 IJobParallelFor을 사용하는데, ECS에서는 전용 인터페이스로 IJobEntity가 구현되어있기때문에 이것을 사용하면 됨.) 그리고 이전의 [BurstCompile]에서 배웠던 것 처럼 partial키워드를 추가하였다.(여기서도 Source Generator과 공존해야하기 때문) 아래는 좌측은 이전의 OnUpdate 우측은 C# JobSystem적용을 위..

[UNITY]/TIL: Etc 2024.11.20

[ECS/DOTS] BurstCompile를 사용해보자

이전 편에서는 5000개의 캐릭터를 만들고 여러 가지 행동을 시키는 예제를 따라 하고 이해하는 시간을 가졌었다. 이번엔 일을 벌려놨으니 최적화를 해야겠지..? 간단한 버스트 컴파일러를 이용해서 최적화를 해볼 것이다. 방법은 아주 간단하다.  SpawnSystem의 OnUpdate 메서드에 아래와 같이 '[BurstCompile]' 속성을 추가하기만 하면 된다.  ? 장난하세요 ? 이렇게 하면 버스트 컴파일러에 의해 고속 네이티브 코드로 변환된다고 한다. 원래라면 이 BurstCompile를 사용하려면 매우 엄격한 제약을 지켜야 한다. ECS에서는 이런 제약을 지키면서 코딩할 수 있도록 여러 조치가 이루어져 있다. 아까 작성한 코드도 제약을 자연스럽게 충족하고 있기 때문에 BurstCompile을 그대로 ..

[UNITY]/TIL: Etc 2024.11.19

[ECS/DOTS] ECS를 이용하여 5000개의 캐릭터를 만들어보자

모든 자료 출처는 유니티 입니다.(해당 내용을 리뷰해보며 학습하는 글입니다.) 이번 ECS로 최적화 하기는 이전 글에서 만들었던 춤추는 인형 3개를 5000개까지 만들어보고 최적화 하는 작업을 하며 ECS에 익숙해져 보는 시간을 가질것이다. 우선 인형의 프리팹을 만들어보자  ECS도 기존 유니티와 동일하게 프리팹을 만들 수 있다. Hierarchy창에서 Sub씬에있는 오브젝트를 프로젝트뷰로 드래그 앤 드롭하면 생성된다. 그리고 이 프리팹을 참조하기 위한 Config 컴포넌트를 만들어볼것이다.  이런 방식으로 프리팹을 지정하고 생성할 개수 혹은 범위도 이 안에서 설정할 수 있도록 할것이다. ConfigAuthoring 스크립트의 내용은 아래와 같다.  Config 컴포넌트를 보면 프리팹을 엔티티 형태의 값..

[UNITY]/TIL: Etc 2024.11.18

[ECS/DOTS] Unity ECS

유니티에서 제공하는 자료를 보며, 정리한 글입니다.( https://create.unity.com/Best-tips-and-tricks-by-japan) 유니티에서 DOTS를 다루는 방법을 정리해보자 기존의 '표준적인' 유니티에서는 MeshFilter나 MeshRenderer, MonoBehaviour같은 컴포넌트가 사용되었었다. 하지만 ECS에서는 새롭게 추가된 컴포넌트를 이용할 수 있다. 하지만 ECS를 유니티 에디터에서 제어할때는 기존의 구조처럼 사용할 수 있어야 편리할것이다.(기존 GameObject를 다루듯) 그래서 기존의 컴포넌트를 사용해서 똑같이 작업할 수 있도록 구현이 되어있다. 그리고 그걸 보관하는 곳이 바로 subscene이다. subscene의 내용은 실행할 때 혹은 빌드할 때 ECS..

[UNITY]/TIL: Etc 2024.11.17

[DOTS 공부 로드맵]

Unity DOTS 공부 로드맵 1. ECS의 기본 구조와 워크플로우 이해 심화 Entity, Component, System의 역할과 구조 학습 IComponentData, IBufferElementData의 차이 이해 System의 종류 (ISystem, IJobEntity)와 사용법 학습 2. Job System과 Burst Compiler 심화 Job System IJob과 IJobParallelFor의 차이 및 병렬 처리 학습 ECS와 Job System의 결합 활용 Burst Compiler SIMD(Vector 연산) 활용법 및 연산 최적화 3. EntityQuery와 Archetype 관리 ..

[UNITY]/TIL: Etc 2024.11.16

DOTS를 배워보자 : 기초부터 차근차근

오늘부터는DOTS를 배워보려고 한다.무거운 기능들을 지금의 개발환경에서 원하는 부분만 따로 적용할 수 있다는 사실에 배워보고싶어서오늘부터 시작해보려고 한다. 1.ECS 의 기본 이해ECS는 DOTS의 핵심이며, 게임 객체를 관리하는 새로운방식이다.기존 GameObject와 MonoBehaviour의 방식과달리 데이터와 행동  을 완전히 분리해서 관리한다.기본적으로 Entity, Component, System이어떻게 서로연결되는지 이해하는것이 필요하다.Entity : 단순히 식별자 역할만하는 객체이다. 데이터나 기능도 없고 컴포넌트를 모아주는 역할을 한다. Component : 데이터만 보유하는 구조체 이다. 속도, 위치 등의 데이터만 해당한다. 동작(메서드) xSystem : 컴포넌트를조작하는로직이다...

[UNITY]/TIL: Etc 2024.11.15