실험 및 작업 프로그램 C ++ 14 멀티 스레드 컴파일 타임 엔티티 컴포넌트 시스템 헤더 전용 라이브러리.
복잡한 실시간 응용 프로그램 및 게임의 성공적인 개발에는 유연하고 효율적인 엔티티 관리 시스템이 필요합니다. 프로젝트가 복잡해지면 코드 반복을 방지하고 모듈성을 향상 시키며 강력한 최적화 가능성을 열기 위해 객체를 구성하는 우아한 방법을 찾는 것이 중요합니다.
엔티티 구성 요소 시스템 아키텍처 패턴은 데이터를 논리에서 분리하여 위에서 언급 한 이점을 달성하도록 설계되었습니다.
엔티티는 작고 재사용 가능하며 일반적인 구성 요소로 구성 될 수 있습니다.
구성 요소는 인접한 메모리 영역에 저장 될 수 있으므로 데이터 로컬 및 캐시 친근감을 향상시킬 수 있습니다.
응용 프로그램 논리는 물체 자체와 스토리지 정책에서 쉽게 병렬화되고 추상화 될 수 있습니다.
응용 프로그램 상태는 노력으로 네트워크를 통해 직렬화되고 공유 될 수 있습니다.
보다 모듈 식적이고 일반 및 쉽게 테스트 가능한 코드베이스.
"Ecst"는 BCS 졸업 프로젝트로 개발되었습니다.
지침을 작성하십시오
코드 샘플
특허
동반 논문
슬라이드
엔티티 : Adam Martin (논문 참조)에 의해 구체적인 응용 분야를 나타내는 시스템의 "기본 개념적 빌딩 블록"으로 정의됩니다. 응용 프로그램 별 데이터 나 논리가 없습니다.
구성 요소 : 작고 재사용 가능한 엔티티를 구성하는 유형. 다시 말하지만, Adam Martin (논문 참조) 을 인용하여 구성 요소 유형은“엔티티를 특정 측면을 소유하고있는 것으로 표시하십시오”. 구성 요소는 데이터를 저장하지만 논리를 포함하지 않습니다.
시스템 : 특정 구성 요소 유형을 보유한 엔티티에 대한 구현 로직 제공자.
외부 병렬 처리 : ECST에서 사용되는 용어는 서로 의존하지 않는 여러 시스템을 실행하는 개념을 정의합니다. 구현 세부 사항은 10 장에서 분석됩니다 (논문 참조) . 개념적으로, 시스템 의존성에 대한 지식 덕분에 암시 적 지시 된 acyclic 그래프가 컴파일 타임에 생성됩니다. 암시 적 DAG의 실행은 설정 정의 중에 지정된 시스템 스케줄러 유형에 의해 처리됩니다.
내부 병렬성 : 별도의 시스템을 병렬로 실행하는 다른 Ecst는 단일 시스템을 여러 하위 작업으로 분할하는 것을 지원하며, 이는 별도의 스레드에서 실행될 수 있습니다. 기능적으로 순수한 구성을 나타내는 시스템과 같은 많은 시스템에는 자체 상태를 수정하거나 가입 된 엔티티 간의 상호 작용을 정의하는 부작용이 포함되어 있지 않습니다. 이는“당황스럽게 평행 한”계산의 주요 예입니다.
"API에 대한 문서는 어디에서 찾을 수 있습니까?"
"기본적으로 구성 할 수없는 구성 요소를 가질 수 있습니까?"
"내 구성 요소를 읽거나 쓰려고 노력하고 있지만 컴파일 오류가 발생하고 있습니다. 무슨 일이 일어나고 있습니까? "
"시스템의 프로세스 기능 내부에 있지 않고 엔티티에 첨부 된 구성 요소를 반복 할 수 있습니까?"
"내 시스템이 병렬로 실행되는지 또는 단일 스레드로 어떻게 제어합니까? "
"내 시스템 단일 스레드와 내부 파라 렐리즘을 비활성화하는 것의 차이점은 무엇입니까?"