디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

ECS 프로그래밍에 대해서 공부해 본 것.

ㅆㅇㅆ(124.216) 2024.09.27 22:26:10
조회 813 추천 7 댓글 5
														

ECS는 기본적으로 


MVC와 같이 소프트 웨어 아키텍쳐 패턴이다. 


ECS는 게임 오버워치에서 처음 언급됐는데(GDC 2017 게임 플레이 아키텍쳐)


구체적으로 말하자면 ECS는 엔터티-컴포넌트 시스템을 말한다.


엔터티-객체를 식별하는데 사용되는 고유 식별자, 자체에 데이터를 포함하지 않고, ID로써 개체를 식별하는 기능을 가짐


컴포넌트-컴포넌트는 객체의 속성을 설명하는 일부 데이터를 포함하는 데이터 구조. 컴포넌트에는 비헤이비어가 없다.


시스템- 주로 사용자 로직 처리 및 상태 마이그레이션이며, 어떠한 데이터도 시스템에 저장 되지 않는다.


22aec568f5dc3f8650bbd58b3680756f382b47

World는시스템과 엔터티의 조합이다.


ECS 프레임워크의 특징은 객체의 데이터와 비헤이비어가 제거되고, 업데이트 기능에서 관련된 작업을 처리하는 대신 특정 시스템이 특정 동작을 처리한다.


유니티 ECS의 기본 개념은


핵심은 라이프 사이클 관리다. 포인터 대신 32비트 ID로 표현되며, 렌더링에 사용되는 리소스 ID도 첨부된다. 

라이프 사이클 만 담당하고, 메서드를 호출하지 않도록 설계되었기때문에 int ID를 사용하는 것이 강력하다. 


엔터티는 ECS의 기본이자, 인덱스, 버전으로 구성되어있다. 버전은 엔테티가 재활용된 후 1씩 증가하는데, 


이 구성요소는 ECS만의 데이터 유형인 '청크(chunk)에 저장된다. 컴포넌트 데이터를 조작할때, 해당 Index에 따라 엔터티 데이터 매니저에 위치한 청크와 청크 인덱스를 찾아 해당하는 컴포넌트 데이터를 얻은 후 작업한다.


컴포넌트


-컴포넌트는 엔터티의 속성이며, 일반적으로 IComponent, 또는 IsharedComponenetData 인터페이스 구조로 기록됨


엔터티는 여러 컴포넌트를 포괄할 수 있다. IShaderedComponentData로 기록된 데이터는 동시에 여러 엔터티 간에 공유되고, 게임 오브젝트 또는 렌더 메쉬같은 렌더링 관련해서 저장하는데 사용된다.


엔터티의 구성요소는 CreatEntity시 지정되거나, ArchType를 사용하여 기존 엔터티에 복사되고, AddComponent 및 RemovemComponent 구성요소를 동적 추가삭제 가능하다. 하지만 효율성 문제로 ㅜ건장하지 않는다.



viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73de98efa11d02831add4b458ef65c5a3ba55a68bb9d3d4e9b1670255ccf8f75734b37d2ea36fdfecbb9f04b7a4a97d9d41657336544986abcd77912ea5b761

(컴포넌트 조합이 같은 것끼리 묶은 것을 아키타입이라 한다)


앞서 말했듯 ECS 아키텍쳐는 ID(엔터티_),데이터(컴포넌트), 및 동작(시스템)으로 분리된다. 이 아키텍쳐는 데이터에 중점을 두고, 시스템은 구성 요소의 데이트 스트림을 읽은 다음 입력 상태에서 출력상태로 변환 엔터티는 이를 색인화 한다. 이로 인해 이를 데이터 지향 프로그래밍이라고 한다.


그리고, 컴포넌트 유형의 고유 조합을 엔터티 아키타입이라고 하는데, 각 인스턴스 자체는 단일 엔터티에 해당하지만 동일한 컴포넌트 조합을 가지고 있으므로 이를 단일타입이라고 분류한다.


엔터티의 아키타입은 엔터티의 컴포넌트가 저장되는 위치를 결정하는데, ECS는 청크 형태로 메모리를 할당, 각 청크는 아키타입 청크 객체로 표시된다. 

이러한 블록에는 항상 엔터티 단일 아키타입이 포함된다. 메모리 블록이 가득차면 ECS는 동일한 아키타입을 사용하여, 생성된 모든 새 엔터티에 대해 새 메모리 블록을 할당함


따라서, 아키타입과 블록간의 일대 다 관계를 제공한다고 볼 수 있는데, 구성 요소 집합이 있는 모든 엔터티를 찾는데 일반적으로 숫자가 훨씬 더 많은 모든 엔터티가 아니라 일반적으로 숫자가 작은 기존 아키텍쳐만 검색하면 된다는 것이다.



추천 비추천

7

고정닉 0

1

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 손해 보기 싫어서 피해 입으면 반드시 되갚아 줄 것 같은 스타는? 운영자 24/11/18 - -
2773791 요즘 애들은 어셈블리어 코딩도 못하냐 [1] ㅇㅇ(121.183) 11.15 57 1
2773790 목소리평가점 [1/1] ㅇㅇ(110.45) 11.15 76 0
2773786 미소녀 개발자들과 숙식 팀작업 하고싶다 [2] 프갤러(14.39) 11.15 71 1
2773761 컴공 ㅈ소도 못들어감? [1] ㅇㅇ갤로그로 이동합니다. 11.15 68 0
2773757 누군지 아시는분? 처음봄 아이돌 kpop 도리스아(14.35) 11.15 33 0
2773754 조현병도 매 맞으면 고쳐지지않을까? [1] LunaDoge갤로그로 이동합니다. 11.15 54 0
2773752 get post 만 써도 되지않음? put delete 쓰는 곳도 있음? [2] 프갤러(182.230) 11.15 61 0
2773746 크리스마스 디저트 슈톨렌 왔다 ㅇㅅㅇㅋㅋ ㅇㅇ(123.213) 11.15 34 0
2773742 이 예수쟁이 딱국같지않냐?ㅋㅋㅋ LunaDoge갤로그로 이동합니다. 11.15 48 0
2773726 [잡정보] SNS Media 추천알고리즘 개요임.. [3] +abcd3421갤로그로 이동합니다. 11.14 46 0
2773723 다들 블루스크린 자주 뜨는거 이상한거 아니죠? [2] 프갤러(125.136) 11.14 24 0
2773722 틱톡영상보는데 참 대단한사람많은데 [1] 뒷통수한방(1.213) 11.14 42 0
2773720 ssd 에 더미 파일 쓰는거 많이 안좋나 프갤러(121.170) 11.14 29 0
2773719 윈도우도 리눅스처럼 cmd창으로 설치는 못함? [3] 프갤러(58.237) 11.14 62 0
2773715 취업할 때 학점 많이 중요함?? [6] 프갤러(1.228) 11.14 131 0
2773713 일본 취업 유학 워홀 여행 오픈톡 ㅇㅇ(106.146) 11.14 19 0
2773712 CODE LLM 이라는 것의 Q&A 원리는 이렇게 되야함.. [2] +abcd3421갤로그로 이동합니다. 11.14 48 0
2773710 fast inverse square root 이해해도 코딩테스트 통과 [1] ㅇㅇ(117.111) 11.14 42 0
2773709 주석은 Load WHAT? 의 ANSWER.. 로 작성해야 맞는 듯. +abcd3421갤로그로 이동합니다. 11.14 34 0
2773708 지방 컴공 신입 개발자 3400 ㄱㅊ음? [1] 프갤러(183.107) 11.14 120 2
2773706 복잡한 프로그램은 Patch Cycle 을 확인해가면서 보아야 하는 듯. +abcd3421갤로그로 이동합니다. 11.14 33 0
2773701 Protesters take over Columbia University 발명도둑잡기갤로그로 이동합니다. 11.14 29 0
2773700 French unions strike over Macron's pensi 발명도둑잡기갤로그로 이동합니다. 11.14 28 0
2773697 '노란 조끼 시위'서 경찰 폭행한 남성…알고보니 '복싱 챔피언' 발명도둑잡기갤로그로 이동합니다. 11.14 32 0
2773695 Qt, WPF는 내장 폰트 적용하려면 원래 이렇게 힘듬? [5] ㅇㅇ갤로그로 이동합니다. 11.14 78 0
2773693 STELLAR - STUDY 발명도둑잡기갤로그로 이동합니다. 11.14 19 0
2773692 한국 큰 회사/미국 빅테크 취업 타겟으로 조언 및 이력서 첨삭 도와드림 [2] 미쿠쟝마지스키갤로그로 이동합니다. 11.14 64 0
2773691 소녀시대 태티서-Library 발명도둑잡기갤로그로 이동합니다. 11.14 29 0
2773690 신입들 진짜 취업 개빡센가보네.. ㅇㅇ(39.7) 11.14 152 0
2773688 러스트 깐다. 메모리 안정성? [2] 프갤러(59.16) 11.14 55 0
2773687 윤수일 리메이크 곡 아파트, 아름다워 발명도둑잡기갤로그로 이동합니다. 11.14 54 0
2773686 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.14 34 0
2773685 개발자 특징 프갤러(183.99) 11.14 53 0
2773682 코테는 근력트레이닝이라 할 수 있다 ㅇㅇ(210.178) 11.14 32 0
2773680 외국인은 고딩과 코딩 발음 구분을 못한다 발명도둑잡기갤로그로 이동합니다. 11.14 29 0
2773678 동덕여대만봐도 여자들은 평등을 원하는게아님 ㅇㅇ(106.102) 11.14 34 0
2773677 오늘의 음반 기획 실마리: 수능 필적 확인 시 노래 앨범 발명도둑잡기갤로그로 이동합니다. 11.14 27 0
2773675 코딩테스트로 염병떠는새끼 [2] 프갤러(125.177) 11.14 109 5
2773674 필적 확인은…'저 넓은 세상에서 큰 꿈을 펼쳐라' 발명도둑잡기갤로그로 이동합니다. 11.14 26 0
2773667 프로그래밍 갤: 존재 자체가 의미가 없음 [3] 프갤러(125.177) 11.14 63 2
2773666 최저임금도 안주기로 유명한 대구 근황 발명도둑잡기갤로그로 이동합니다. 11.14 35 0
2773664 코딩테스트 << 솔직히 이거 뭔 의미가 있음? [3] ㅇㅇ(124.49) 11.14 110 0
2773662 아마존 개발자 대량 해고 후 AI 도입 ㅇㅇ(211.236) 11.14 76 1
2773659 공무원은 도대체 헬이냐 헤븐이냐 [9] 아스카영원히사랑해갤로그로 이동합니다. 11.14 97 0
2773654 크리스마스 디저트 슈톨렌 왔다 ㅇㅅㅇㅋㅋ ㅇㅇ(123.213) 11.14 35 0
2773640 오늘 회사에서 하루 종일 개인플젝함 프갤러(211.234) 11.14 50 0
2773639 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.14 32 0
2773637 황영조 네 이노옴 !!!!!!!!! ♥Sub2냥덩♥갤로그로 이동합니다. 11.14 33 0
2773636 개발자 라기 보다는 회사원 같은데 ㅇㅅㅇ [1] 포항의봄갤로그로 이동합니다. 11.14 65 0
2773635 외국계 나스닥 상장사 취업했다 [7] ㅇㅇ(59.12) 11.14 80 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2