동적 코드 실행 계층구조(CEH)

Dev.Write 2011. 6. 9. 01:05 Posted by zetz

GEG 1권에서 소개하는 프로그래밍 방법으로 동적 코드 실행 구조를 소개하고 있다.

책에선 CEH (Code Execution Hierarchies)라고 명명하고 이 방법에 대한 소개와 장단점을 언급하는데, 개인적으로 호기심이 많이 생기는 주제이기에 소개하고자 한다.

 

우선 내가 이해한 CEH에 대한 설명은 "함수객체(또는 상속클래스)를 통한 코드 블록트리 구조를 사용하여 표현하는 것" 이라고 말할 수 있다.

책에서 나타낸 그림을 보면 이해하기가 쉽기에 비슷하게 그려보았다. 아래를 보면, (가) 처럼 복잡한 구조를 (나) 처럼 단순화 할 수 있다고 나타내고 있다.

 

사실 보기의 (나) 처럼 변경되었다고 해도 CEH 구조 갱신시 내부 트리구조에 따른 세부 구조를 갱신하기 때문에 그림(나)보다는 복잡한 구조를 가지겠지만, 그래도 하나의 체계적인 구조로 게임루프를 관리한다는 점이 매우 인상적이었다.

개인적인 경험에 따르면, 프로젝트가 후반으로 갈수록 게임루프는 지저분해지고 분석이 힘들어 지는데( 정확히 무슨 이유 때문에 존재하는지 알 수 없는 코드들 때문에 ), 일괄적으로 관리되는 구조는 병목 구간을 찾기 위한 프로파일링 코드를 추가하기에도 용이해 보이고, 코드 정리에도 유리해 보인다.(중복되는 코드, 논리적으로 실행되지 않을 코드 등등)

 

마지막으로 GEG1권 에서 말하는 특징들을 조금 언급하자면,

ptrG = GetD()->GetA()->GetB()->GetC();        //< 이와 같은 코드를

ptrG = FindCodeBlock<G>();                //< 다음과 같이 유연한 코드로 변경이 가능하다고 말하고 있으며,

단점으로는 코드 실행 계통구조를 운행 중에 변경 하면 심각하고 찾기 어려운 버그를 만들 수 있다고 주의하고 있다.

 

 

조금 더 생각해 보고 싶은 부분.

  1. XML 을 사용한 CEH 구조 명세
  2. 동적 구조 변경 (전체 CEH 재조정 또는 부분 코드 추가)
  3. DLL 을 통한 코드 블록 추가
  4. 동적 구조를 더욱더 활용하여, 실행시간에 코드 추가하기(재 컴파일 없이)

 

'Dev.Write' 카테고리의 다른 글

wxWidgets Build Configurations [Unicode, Universal ...]  (0) 2011.09.09
Hook 관련 예제 아티클  (0) 2011.06.09
뫼비우스의 띠(CMobiusStripSceneNode)  (0) 2011.05.24
Irricht + bullet base sample  (0) 2011.05.11
TorusKNotSceneNode  (0) 2011.05.11