Skip to main content

Architecture

1. Layer Position

  • gcore는 Grap 엔진에서 엔진 핵심 개념(Core Concept)을 정의하는 라이브러리 레이어이다
  • 상위 엔진 모듈은 gcore에 의존할 수 있다
  • gcore는 플랫폼 시스템이나 런타임 구현 모듈에 의존하지 않는다
Application


ginter


ghost


gcore


gbase

2. Internal Modules

gcore는 다음 서브시스템으로 구성된다.

gcore
├─ common
├─ id
├─ event
├─ context
├─ loop
├─ state
└─ log

common

  • 공통 결과 타입 제공
  • 상태 코드 정의
  • 공통 설정 제공

id

  • 엔진 객체 식별자 타입 제공
  • 엔진 내부 객체 ID 관리 구조 정의

event

  • 엔진 이벤트 데이터 모델 정의
  • 이벤트 타입 정의
  • 키 코드 정의
  • 이벤트 payload 구조 정의

context

  • 프레임 단위 상태 스냅샷 정의
  • 입력 상태 스냅샷 정의
  • 윈도우 상태 스냅샷 정의

loop

  • 엔진 프레임 루프 인터페이스 정의
  • 프레임 tick 데이터 구조 정의
  • 루프 단계 타입 정의

state

  • 애플리케이션 상태 데이터 구조 정의
  • 상태 접근 인터페이스 정의

log

  • 엔진 로깅 레코드 정의
  • 로깅 레벨 정의
  • 로거 인터페이스 정의

3. Dependency Structure

gcore 내부 모듈은 다음 의존 구조를 따른다.

common


id


event


context


loop


state


log

의존 규칙

  • common은 최하위 모듈
  • idcommon에 의존 가능
  • eventidcommon에 의존 가능
  • contextidevent 일부 타입에 의존 가능
  • loopeventcontext에 의존 가능
  • statecommonid에 의존 가능
  • logcommonid에 의존 가능
  • 순환 의존성 금지

4. Header Architecture

  • gcore는 header-only 라이브러리이다
  • 모든 기능은 <gcore/...> 형태로 접근한다
  • umbrella header gcore.hpp를 제공한다

5. Directory Layout

gcore/
├─ gcore.hpp
├─ common/
├─ id/
├─ event/
├─ context/
├─ loop/
├─ state/
└─ log/

6. Design Principles

  • 엔진 개념 모델만 정의
  • 데이터 구조 중심 설계
  • 인터페이스 기반 시스템 설계
  • 플랫폼 의존성 제거
  • header-only 구조 유지
  • 모듈 간 순환 의존성 방지
  • 엔진 구현 레이어와 분리