나는 이것이 오래된 질문이라는 것을 알고 있지만 누군가이 대답이 유용하다고 생각할 것입니다.
나는 이것이 Systems
구성 요소를 구성하는 방법을 이해하는 데 더 도움 이 될 것이라고 믿습니다 . 시스템은 간단한 getter / setter 및 도우미 함수 외에도 구성 요소에 자체 논리가 포함되어 있지 않은 아키텍처에 존재합니다. 시스템은 구성 요소 요구 사항을 충족하는 엔티티에서 작동합니다. 그렇기 때문에 다른 데이터없이 해당 데이터를 처리 할 수있을 정도로 구성 요소 데이터를 분리하는 것이 가장 좋습니다.
예를 들어, 당신은있을 수 있습니다 MovementSystem
그 엔티티 '업데이트하는 Position
자신에 기반을 Velocity
. 이것은 게임에서 간단한 엔티티를위한 것일 수 있습니다. 그러나 플레이어 와 적의 경우Acceleration
에서 처리되는 움직임을 원할 수 있습니다 AcceleratedMovementSystem
. 그러나 장애물의 경우 원할 수 있습니다 Friction
. 지형 마찰이있을 수 있지만, 그것은 속도 성분이 없습니다. 그러나 어떻 Gravity
습니까? Player, Enemy 및 Obstacle을 추가하고 GravitySystem
처리하기 위해 를 만드 십시오.
결론은 더 있다는 것입니다 분리 당신이 Components
더있는 확장 (가) Entities
사용하면됩니다 Systems
.
편집 : 마지막 진술을 명확하게했습니다.
편집 : 좋아, 나는 내 자신의 시스템에서 일하고 있었고이 실현에왔다. 위치와 속도를 분할하는 예는 속도를 조작하면 이동 시스템에 따라 위치가 변경되는 것입니다. 결과적으로, 'InputMovementSystem'에는 MovementSystem이 Velocity의 변경 사항을 적용하여 Position에 적용하기 때문에 Player가 사용자 입력에서 이동하게하는 Position이 필요하지 않습니다. 물론, 그것들을 합치면 여전히 잘 작동하지만 이것이 필요하지 않은 이유의 예입니다.
최근에 다음과 같은 블로그 게시물을 읽었습니다.
"2 개의 다른 구성 요소로 그룹화 할 수있는 데이터가있는 경우 해당 데이터로 세 번째 구성 요소를 작성하는 것이 가장 좋습니다."