엔터티 구성 요소 시스템

엔터티-컴포넌트-시스템이란 무엇입니까?

엔티티-컴포넌트-시스템(ECS)은 아키텍처 패턴입니다. 이 패턴은 게임 애플리케이션 개발에 널리 사용됩니다. ECS는 상속 원칙에 대한 구성을 따르며, 이는 더 나은 유연성을 제공하고 게임 장면의 모든 객체가 엔티티로 간주되는 엔티티를 식별하는 데 도움이 됩니다.

ECS 프로그래밍은 기본적으로 고성능을 제공하는 코드를 작성하는 방법입니다.

이 시스템은 세 가지 용어로 구성됩니다.

  1. 기업
  2. 구성 요소
  3. 시스템

이 개념을 자세히 알아보겠습니다.

이 엔터티-구성 요소 시스템 자습서에서는 다음을 학습합니다.

엔터티란 무엇입니까?

엔터티는 시뮬레이션된 공간에서 행위자를 나타내는 고유한 개체입니다. 실제 데이터나 동작이 없습니다. 이 구성 요소는 엔터티에 데이터를 제공합니다. 일반적으로 스트럿 또는 사전입니다.

예를 들어 게임의 세계를 시뮬레이션하는 경우 마인 크래프트, 게임 세계에서 보이는 모든 유형의 '사물'은 엔터티로 계산됩니다.

구성 요소 란 무엇입니까?

구성 요소는 엔터티에 부여된 단일 동작입니다. 요소의 이름은 엔터티가 어떤 동작을 보일지 이상적으로 전달해야 합니다. 그러나 구성 요소 자체에는 동작이 없습니다. 엔터티에 연결된 재사용 가능한 모듈입니다. 구성 요소는 모양, 동작 및 기능을 제공합니다.

모든 로직은 구성 요소를 혼합하고 구성하여 다양한 유형의 개체를 정의하는 데 도움이 되는 구성 요소를 사용하여 구현됩니다.

시스템이란 무엇입니까?

시스템은 낮은 수준의 작업을 수행하기 위해 많은 구성 요소를 반복합니다.

그래픽 렌더링, 물리학 수행과 같은 기능

계산이나 길 찾기. 이는 구성요소 클래스에 대한 글로벌 범위, 관리 및 서비스를 제공합니다.

그러나 시스템은 선택 사항이 아니지만 이를 사용하여 로직과 데이터를 분리할 수 있습니다. 또한 논리적 구성 요소를 처리하고 데이터 컨테이너 역할을 하는 데 도움이 됩니다.

  • 중력(속도) – 중력으로 인해 속도를 가속하는 데 도움이 됩니다.
  • 위치에 속도를 추가합니다.
  • AI 에이전트에 따라 봇 제어 엔터티의 입력을 설정합니다.
  • 렌더(위치, 스프라이트) – 스프라이트를 그립니다.
  • 플레이어 컨트롤(입력 플레이어)은 컨트롤러에 따라 플레이어가 제어하는 ​​엔터티의 입력을 설정하는 데 도움이 됩니다.

조성

컴포지션은 추가 모양, 동작 또는 기능을 추가하기 위해 더 많은 구성 요소를 연결할 수 있는 요소입니다. 구성 요소 값을 업데이트하여 엔터티를 구성할 수도 있습니다.

ECS의 장점

프로그래밍에 ECS를 사용하면 다음과 같은 이점이 있습니다.

  • 더 짧고 덜 복잡한 코드를 만들 수 있습니다.
  • 매우 유연합니다. 긴급 행동.
  • 3D 및 VR 개발을 위한 아키텍처를 제공합니다.
  • 기술자가 아닌 사람의 행동에 따른 스크립팅을 가능하게 합니다.
  • 이는 모놀리식 클래스를 나누는 데 도움이 됩니다.
  • 쉽게 거부할 수 있고 복합성이 있습니다.
  • 단위 테스트 및 조롱을 위한 쉬운 옵션입니다.
  • 복잡성 측면에서 VR 애플리케이션을 구축할 수 있습니다.
  • 런타임 시 구성 요소를 모의 구성 요소로 대체합니다.
  • 새로운 기능을 확장하는 데 도움이 됩니다.
  • ECS는 병렬 처리 및 다중 스레딩을 위한 친숙한 방법입니다.
  • 데이터에 작용하는 기능과 데이터를 분리하는 데 도움이 됩니다.
  • 재사용 가능한 부품과 혼합하여 객체를 정의할 때 더 나은 유연성을 제공합니다.
  • 디커플링, 캡슐화, 모듈화, 재사용성 방법을 사용하여 깔끔한 디자인을 제공합니다.

ECS 사용의 단점

ECS 사용의 몇 가지 단점은 다음과 같습니다.

  • MVC와 같은 다른 패턴만큼 구체적으로 정의되지는 않습니다.
  • 올바르게 적용하기 어렵고 오용하기 쉽습니다. 좋은 구성 요소에는 디자인에 대한 더 많은 생각이 필요합니다.
  • ECS는 잠재적으로 엄청난 수의 엔터티를 포함하는 여러 개의 작은 시스템을 작성해야 하며 이로 인해 매우 비효율적인 코드를 작성할 위험이 발생합니다.
  • 대부분의 사람들은 이 패턴에 대해 들어본 적도 없습니다.

엔터티 구성 요소 시스템 예

토끼의 예를 살펴보겠습니다.

이러한 구성 요소 주위의 점선 상자를 보세요. 그것은 토끼 엔터티입니다. 구성 요소의 컨테이너에 불과합니다. 또한 엔터티를 구성 요소의 하위 집합의 집계로 정의할 수도 있습니다.

위에 주어진 이미지를 볼 수 있습니다. 이는 토끼 엔터티 중 하나입니다. 구성 요소의 컨테이너에 지나지 않습니다. Carrot과 같은 구성 요소 하위 집합의 집합으로 엔터티를 정의할 수 있습니다.

ECS의 데이터 흐름:

시스템 동작은 ECS 모델이 한 상태에서 다른 상태로 변경되는 것입니다.

이 예를 사용하여 이해해 보겠습니다.

행동: “나무 위에 앉아 있는 토끼는 중력 때문에 넘어집니다.”

위의 동작을 구현하는 방법은 무엇입니까?

시간이 지남에 따라 0으로 감소하는 0보다 큰 z 값으로 만들 수 있습니다.

행동: “살아있는 존재는 나이를 먹습니다.”

이 동작을 어떻게 구현할 수 있는지 살펴볼까요?

Living Components가 시간이 지남에 따라 증가하는 age 값을 갖도록 만들 수 있습니다.

슬립폼 공법 선택시 고려사항

  • 엔티티-컴포넌트-시스템(ECS)은 아키텍처 패턴이다.
  • 엔터티는 시뮬레이션된 공간에서 행위자를 나타내는 고유한 개체입니다.
  • 구성 요소는 엔터티에 부여된 단일 동작입니다.
  • 시스템은 그래픽 렌더링, 물리 계산 수행 또는 경로 찾기와 같은 하위 수준 기능을 수행하기 위해 많은 구성 요소를 반복합니다.
  • 컴포지션은 추가 모양, 동작 또는 기능을 추가하기 위해 더 많은 구성 요소를 연결할 수 있는 요소입니다.
  • ECS 패턴을 사용하면 더 짧고 덜 복잡한 코드를 만들 수 있습니다.
  • MVC와 같은 다른 패턴만큼 구체적으로 정의되지는 않습니다.
  • 시스템 동작은 ECS 모델이 한 상태에서 다른 상태로 변경되는 것입니다.

데일리 구루99 뉴스레터

지금 바로 전달되는 최신의 가장 중요한 AI 뉴스 기사로 하루를 시작하세요.