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은 최하위 모듈id는common에 의존 가능event는id와common에 의존 가능context는id및event일부 타입에 의존 가능loop는event와context에 의존 가능state는common및id에 의존 가능log는common및id에 의존 가능- 순환 의존성 금지
4. Header Architecture
gcore는 header-only 라이브러리이다- 모든 기능은
<gcore/...>형태로 접근한다 - umbrella header
gcore.hpp