Ape ECS 소개(js!)
7610 단어 simulationecsjavascriptgamedev
먼저 https://github.com/fritzy/ape-ecs에서 Ape ECS를 찾을 수 있으며 다음과 같은 방법으로 프로젝트에 설치할 수 있습니다.
npm install ape-ecs
그래, 그런데 ECS가 뭐야?
ECS는 인스턴스의 각 부분에 이름을 지정하는 솔리드 어셈블리 시스템(Entity Component System)을 나타냅니다.그것은 게임과 시뮬레이션 개발에 쓰인다.
실체는 유일한 표식이며, 이와 관련된 구성 요소나 구성 요소의 실례에 의해 정의된다. (어, 우리는 이미 실현되기 시작했다.)
구성 요소는 실체와 관련된 데이터 형식의 유일한 표식 실례입니다.
시스템이 어셈블리에서 작동합니다.
그 사상은 논리와 데이터를 분리하는 것이지 논리로 데이터를 봉인하는 대상 프로그래밍이 아니다.근데 어떻게 하지?좋아, 우리는 반드시 세부 사항에 들어가야 해.
일반적으로 시스템은 하나의 함수 또는 하나의 클래스(Ape ECS에서 내장된 시스템 클래스를 덮어쓰거나 하나의 함수만 사용할 수 있음)로 중력과 같은 단일 작업을 할 수 있다.
대부분의 실현은 모든 실체나 주어진 유형의 모든 구성 요소를 가져오는 것이 아니라 실체와 구성 요소를 조회하는 방법이 있다.최소한 하나의 구성 요소 형식을 가진 모든 실체를 연결하거나 집합해서 얻을 수 있습니다.일부 ECS는 더 높은 수준의 쿼리like Ape ECS Queries를 구현합니다.
class Gravity extends ApeECS.System {
update(currentTick) {
const frameInfo = this.world.getEntity('GameLoop')
.getOne('FrameInfo');
const entities = this.createQuery()
.fromAll('Position', 'Vector')
.execute();
for (const entity of entities) {
const vector = entity.getOne('Vector');
vector.y += frameInfo.deltaTime * 9.807;
vector.update();
}
}
}
ECS의 신기한 점은 우리의 중력 시스템이 벡터와 위치가 있는 모든 물체에 작용한다는 것이다.우리는 그것을 구체화할 수 있지만, 더 중요한 것은 우리가 무관심한 일이다.중력은 정령, 인공지능, 무기, 효과 등이 있든 없든 이런 부품을 가진 모든 실체에 작용한다.우리는 중력이 그것에 작용하는지 아닌지를 확인하기 위해 유형의 차원 구조에 의존할 필요가 없다.ECS를 사용해야 하는 이유
만약 당신의 게임이 복잡하고 동적이거나 시뮬레이션이라면 논리와 데이터를 분리하면 많은 이익을 얻을 수 있다.우선, 당신은 실체의 동적 조합을 가지고 있다.
유저를 인간의 달리기에서 기계사의 제어로 바꾸고 싶습니까?간단하지만 PlayerControl 구성 요소를 mech 솔리드에 추가하면 됩니다.캐릭터를 별도의 팔로 바꾸고 싶으세요?추가 팔 조립품만 추가하면 장비 시스템이 다른 두 팔처럼 그것을 처리할 것이다.
시스템이 결합을 풀 때, 그것들 사이의 상호작용이 더욱 크다.이들 중 한 그룹은 기본적으로 서로 연결된 파이프 입력과 출력으로 같은 구성 요소에 작용하거나 검사할 수 있다.이는 높은 수준의 데이터 집적을 초래하여 Emergent Behavior를 초래했다.중력 시스템의 예에서, 그것은 벡터를 사용하여 해당 위치를 업데이트하는 운동 시스템과 간접적으로 상호작용할 것이다.드워프 요새의 많은 시스템이 상호작용하여 고양이를 죽이는 이야기가 있는데, 이것은 매우 재미있는 이야기다.
또 다른 장점은 하나의 함수 (시스템) 를 실행하면 여러 실체 사이를 순환하는 것이 여러 실체 사이를 순환하고 모든 실체에서 일련의 방법을 운행하는 것보다 더 효과적이다.데이터가 분리될 때, 서열화된 데이터와 저장 상태도 매우 쉽다.폭설 간수 건축사는 그것을 어떻게 만드는지 이야기했다.
그래, 그런데 왜 원숭이 ECS야?
그것의 성능은 좋고 유연하며 간결한 특징도 있다.
그 이유는 다음과 같습니다.
자바스크립트에 대한 다른 ECS 구현도 많지만 대부분fairly naive or merely instructive이다.
너도 사용할 수 있다Mozilla's ECSY. 좋은 선택이다.being layed-off에도 불구하고 일부 개발자들은 계속 노력하겠다고 약속했다.
Ape ECS 1.0
오늘 Ape ECS 1.0을 발표하겠습니다.특히 API 문서는 포괄적입니다.그것은 100%의 테스트 커버율을 가지고 있다.나는 이미 그것의 사용과 성능에 대해 테스트를 진행하였다.Ape ECS가 준비되어 있습니다!
나는 이 글을 발표할 수 있어서 매우 기쁘다. 특히 올해가 얼마나 어려운지 고려할 수 있다.나는 마침내 그것을 더욱 광범위하게 토론할 수 있어서 매우 기쁘다. 그리고 그것을 1.0이라고 부른다.
나는 너희들의 문제, 건의와 공헌을 듣기를 기대하고 있다.미결 문제 및 인출 요청on Github.마음대로 나를 찌르거나 이간질해 주십시오(Fritzy #5972).문서에 대한 조언을 해 주십시오!
업데이트 09/27: 첫 번째post-1.0pull-request!
Ape ECS의 다음 단계는 무엇입니까?
소프트웨어는 영원히 완성되지 않을 것이다!나는 Ape ECS에서 계속 일할 것이다.
대단히 감사합니다
초기 구현 피드백, 문서 제안 및 TypeScript 정의에 감사드립니다!
플래카드 사진 고마워요!
Reference
이 문제에 관하여(Ape ECS 소개(js!)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fritzy/introducing-ape-ecs-js-250o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)