컴포넌트 시스템 도입

Download Report

Transcript 컴포넌트 시스템 도입

컴포넌트 시스템 도입
컴포넌트 시스템 무작정 도입기
작성 : 김학현
발표: 10월 26일
개요
1.
2.
3.
4.
5.
6.
2
컴포넌트 시스템이란?
도입 방법.
게임브리오 컴포넌트 시스템은?
문제점.
해결책.
Q&A
1.컴포넌트 시스템이란?
User Object
Component A
Component B
Component C
Component D
Component E
3
기존 Kasa의 두 발표에서 이미
설명
기본적으로 모듈화를 좀 더 잘
해 보자
모듈화 된 클래스간에 표준화
된 인터페이스 구축
모듈화가 잘 되어 있으므로 넣
고 빼기 쉽다?
3. 도입기
1. KASA 2개 발표자료를 일단 배포
– -> 기존 자료 풍부->시스템 밀고 나감.
– -> 발표 자료 만드느라 고생하신 분들께 감사
2. 일단 한달 짜리 프로토 타입에 적용
– -> 컴포넌트 리스트 구조 까지만
– -> 컴포넌트간 통신은 대충 포인터로…
3. 이후 postmortem.
4
4. 도입 방법
Action => Jump/Collision/Move
– ->Jump/CollisionMove/NomalMove
Input => Device/Packet/Script
Character => Player/NPC
– ->MyPlayer/OtherPlayer/NPC
5
4. 도입 방법 - 코드
 template<class TVal>
 void GetComponentByType(TVal** ppComponent)
 {

*ppComponent =
NiDynamicCast(TVal,GetComponent(TVal::MYTYPE));
 }
모든 컴포넌트는 컴포넌트 리스트를 매니
징 할 수 있다.(Node/Tree 구조?)
6
5. 잘된점
일단 기존 상속구조 코드 작성할 때와 별로
다르지 않은 시간 소요.(익숙하지 않지만.)
코드를 구현하고 다시 고민하고 계속 리팩
토링.
제너럴 구조는 한달 정도 구현해본
– ->이후 다시 제너럴 구조로 리팩토링
7
6. 문제점
컴포넌트 간 통신이 어려움(인터페이스)
– ->게임프로그래밍의 특성상 연관관계가 복잡
• ->컴포넌트 간 인터랙션이 많음. -> 복잡도 증가
디버깅이 어려움
– -> 기존에 내캐릭터를 디버깅할때는 내캐릭터
코드에 브레이크 포인트
– ->현재는 특정 컴포넌트의 Update를 잡고 이게
내 캐릭인지 아닌지 검사
8
7. 더 해볼것
데이터 분리
– -> Property Component를 만들어 데이터 분리
– -> 가져오는 방식은 재귀호출 형태의
• ReadProperty(“특정 데이터”,템플릿 변수)
메시지 방식 도입
– -> 현재는 오브젝트 내에서만 인터랙션 처리
• ->포인터 형태
– -> 오브젝트 간 인터래션은 메시징 도입 예정.
9
Q&A
무엇이든 물어보세요!!
10