Component System
v상속으로 인한 문제점을 피하면서 컴포넌트 조립식 프로그래밍을 하려면...?
è“포함” 기법 사용
è
v간단히, 필요한 클래스들을 멤버 변수로 잡아 포함할 수도 있겠지만 (하드코딩)…
v다수의 컴포넌트 클래스들을 포함할 수 있고,
v컴포넌트 간의 통신이 가능할 수 있도록
v표준적인 방법을 구축하는 것…
è컴포넌트 시스템 (GPG 6권 4.6)
이런 개념..
Entity
{
Component A
Component B
Component C
...
}
è컴포넌트를 interface 로 정의하고 ID 를 부여한다.
èEntity는 ID 당 1개의 컴포넌트만 가질 수 있다.
è동시에 두 개 이상 컴포넌트가 필요하다면 그들을 포함하는 새로운 컴포넌트를 개발한다.
v기능상 비슷하지만 똑같지 않은 컴포넌트들을 Family (Category) 로 분류할 수 있다.
v같은 분류의 컴포넌트는 다른 것으로 교체 가능해야 한다.
(한 분류 내에 후보가 유일하여 무언가 교체해볼 여지가 없다면 컴포넌트 프로그래밍이라 할 수 없을 듯…)
v컴포넌트간의 통신…
è모든 컴포넌트가 Owner (Parent) 의 포인터를 저장해서 활용함 (예제 코드 참조)
v상속 없이 GameObject 클래스 1개로 게임내 다양한 오브젝트를 표현
v가지고 있는 컴포넌트의 종류에 따라 오브젝트의 성격이 변함
v상속의 경우 해당 클래스를 가지고 있는지 dynamic_cast 를 썼겠지만,
v포함된 컴포넌트는 Family ID에 따라 바로 static_cast (C스타일 캐스팅)로 변환하여 쓸 수 있다.
컴포넌트의 사용
컴포넌트간의 통신
https://t1.daumcdn.net/cfile/tistory/2461294B529BEDCF37?download
반응형
'디자인패턴과방법론 > 디자인패턴' 카테고리의 다른 글
Command 패턴 : 실행할 명령을 클래스 묶음으로 만들어 실행할 객체에 객체들(명령들)을 전송한다 (0) | 2016.06.03 |
---|---|
디자인패턴 한줄 정리 (0) | 2015.11.18 |
adaptor 패턴 (0) | 2015.11.17 |
Command pattern (0) | 2015.07.17 |
게임 오브젝트 설계 #4 - 메시지 통신(messaging) (0) | 2015.07.05 |