[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
21. 더 나은 방식
class CTextureMgr
{
static CTextureMgr* m_Instance;
public:
CTextureMgr() {m_Instance = this;}
~CTextureMgr() {m_Instance = NULL;}
static CTextureMgr& GetInstance() {return *m_Instance;}
}
// 사용
CTextureMgr::GetInstance().Method();
하지만, 모든 싱글톤 클래스에 추가 코드가 들어가야 한다.
22. 좀더 나은 방식
template<typename T>
class ISingleTon
{
static T* m_instance;
public:
ISingleTon()
{
int offset = (int)(T*)1 - (int)(ISingleTon<T>*)(T*)1;
m_instance = (T*)((int)this + offset);
}
~ISingleTon() {m_instance = NULL;}
static T& GetSingleton() {return *m_instance;}
}
템플릿을 상속 받아 하위 클래스에서 자동으로 싱글톤이 생성되게 한다.
다중 상속 구조가 되는 경우가 있기 때문에 Offset을 계산해서 할당한다.