componentSystem.pdf


Component System


v상속으로 인한 문제점을 피하면서 컴포넌트 조립식 프로그래밍을 하려면...?
è포함 기법 사용
è
v간단히, 필요한 클래스들을 멤버 변수로 잡아 포함할 수도 있겠지만 (하드코딩)
v다수의 컴포넌트 클래스들을 포함할 수 있고,
v컴포넌트 간의 통신이 가능할 수 있도록
v표준적인 방법을 구축하는 것

è컴포넌트 시스템 (GPG 64.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스타일 캐스팅)로 변환하여 쓸 수 있다.





















컴포넌트의 사용






컴포넌트간의 통신







http://cfile23.uf.tistory.com/attach/2461294B529BEDCF3779C1

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 질문입니다 2017.09.17 23:18 신고

    down casting을 할때, dynamic 대신 static을 사용하고 있는데. static 대신 dynamic으로 고쳐도 코드 실행은 됨에도 불구하고 static을 사용하는 이유는. FamiliID를 통하여 해당 Component가 확실히 존재한다는 것을 인지하고 들어가는 부분이 있기 때문이며, Static보다 Dynamic이 성능상 비용이 더 커서 그런건가요??

+ Recent posts