Structure & Description

이 페이지는 엔진의 구조와 렌더링 흐름에 대한 설명을 시각적인 자료와 함꼐 제공합니다.

  • Engine 구조

  1. 주요 Class 설명

    • EngineBody

      • 엔진 시스템 통합 관리:

        • Graphics, Resource, Input, Time, Scene, Render 등 모든 주요 매니저 클래스들을 중앙에서 통합 관리

      • 엔진 모드 제어:

        • Edit(편집), Play(게임 실행), Pause(일시정지) 모드 간 전환 관리

      • 생명주기 관리:

        • Init

          • 엔진 시작 시 한 번 호출되어 모든 핵심 시스템 초기화

          • 각 매니저 시스템(Graphics, Input, Time, Resource 등)의 초기화 메서드 호출

          • 윈도우 핸들과 크기 설정 및 초기 Scene 로드

        • Update

          • 매 프레임마다 호출되는 로직 처리 단계

          • 모든 게임 로직과 상태 변경이 이 단계에서 처리됨

        • Render

          • 업데이트된 게임 상태를 화면에 출력

          • 더블 버퍼링을 위한 스왑 체인 호출

      • Scene 상태 관리:

        • 편집 모드와 플레이 모드 간 씬 상태 보존 및 전환

    • SceneManager

      • Scene 생명주기 관리:

        • EngineBody에서 제어하는 생명주기에 맞춰 현재 실행될 Scene에 Start, Update, LateUpdate를 호출

      • Scene 로드 및 생성:

        • 다양한 Scene 로드 함수 (LoadScene, LoadPlayScene)

        • Scene 생성

        • Edit/Play모드 간 Scene 상태 관리

      • XML 기반 데이터 관리:

        • Scene 정보를 XML 파일로 저장 및 로드

        • 프리팹(Prefab) 로드 및 복제 지원

        • 모든 게임 오브젝트와 컴포넌트 속성을 파일로 저장하고 복원

      • 게임 오브젝트 생성 도구:

        • 기본 프리미티브 오브젝트 생성 (Cube, Sphere, Cylinder 등)

        • Mesh, Particle, Terrain 등 특수 오브젝트 생성

        • UI오브젝트 생성(Image, Button)

        • 애니메이션 모델 및 정적 모델 로드

    • RenderManager

      • 게임 엔진의 렌더링 시스템을 총괄

        • 현재 Scene에서 렌더링 할 오브젝트들을 선별하여 관리

        • 렌더링 흐름을 제어하여 ShadowMapping, Gaussian Blur 등의 기능을 지원

      • 렌더링 객체 관리:

        • 일반 오브젝트, 환경맵 오브젝트, UI 오브젝트, Particle, Terrain을 구분하여 관리

      • 렌더링 최적화:

        • 인스턴싱을 사용하여 동일한 오브젝트를 효율적으로 렌더링 가능하도록 지원

    • ResourceManager

      • 게임 엔진의 모든 리소스 관리:

        • Mesh, Texture, Shader, Material, Model 등 다양한 리소스 타입 관리

        • 각 리소스에 고유 이름 부여 및 이름으로 접근 가능

        • 리소스 종류별로 별도의 저장소 사용

          ResourecMap _resources[RESOURCE_TYPE_COUNT]; // 리소스 타입별로 다른 맵 사용

      • XML 기반 직렬화/역직렬화

        • 모든 리소스 정보를 XML 파일로 저장

        • Engine 시작 시 XML 파일에서 리소스 데이터 로드

      • 리소스 캐싱 및 재사용

        • 동일 리소스의 중복 로드 방지

        • 이름 기반 리소스 참조 시스템

Last updated