D3D11 기반 엔진 프레임워크와 3D 소코반 게임 프로젝트 진행 중
콘솔 기반 엔진 프레임워크 온라인 강의에 이은 두 번째 시리즈를 위한 프로젝트를 진행하고 있습니다.
첫 번째 시리즈에서는 콘솔 환경에서 게임 루프, Actor / Component / Level 구조, 입력 처리, 콘솔 기반 렌더링 흐름 등을 다뤘습니다.
이번 시리즈에서는 당시 제작했던 게임 엔진의 코어 구조를 최대한 유지하면서, 렌더링 계층을 Win32 + Direct3D 11 기반으로 확장하는 것을 목표로 하고 있습니다.
단순히 Direct3D 11 사용법을 설명하는 강의라기보다는, 동일한 엔진 구조 위에서 렌더링 기능이 어떻게 확장되는지를 보여주는 것이 이번 프로젝트의 핵심입니다.
게임 엔진을 처음 공부할 때는 렌더링과 엔진 구조를 별개의 주제로 생각하기 쉽습니다.
하지만 실제로는 Actor, Component, Asset, Renderer, Resource Management 같은 시스템들이 서로 연결되어 동작합니다.
이번 프로젝트에서는 콘솔 환경에서 만들었던 엔진 프레임워크를 기반으로 그래픽스 기능을 하나씩 추가하면서, 엔진이 어떻게 발전하는지를 자연스럽게 살펴볼 수 있도록 구성하고 있습니다.
Win32 창 생성부터 D3D11 장치 초기화, 셰이더, 메시, 텍스처, 머티리얼, 카메라, 라이트, 그림자 처리까지 단계적으로 구현하고 있으며,
현재는 스켈레탈 메시 애니메이션과 애니메이션 블렌딩 기능을 추가완료했습니다.
첨부한 영상은 현재 구현 중인 애니메이션 블렌딩 데모입니다.

역시 스켈레탈 메시 애니메이션이 들어가면서 코드 베이스의 복잡도도 상당히 높아지네요.
현재까지 구현한 주요 기능은 다음과 같습니다.
- Win32 창 생성 및 메시지 루프
- Debug / Release 빌드 구성 분리
- D3D11 장치 초기화
- Actor / Component / Level 구조
- Renderer / RenderCommand 기반 렌더링 구조
- Shader / Texture / Material 관리
- StaticMesh / SubMesh 구조
- SkeletalMesh 로드 및 애니메이션 재생
- 애니메이션 전환 블렌딩
- Transform / Camera / Light Component
- Directional Light 및 Shadow Mapping
- Shadow Bias, 해상도, PCF 옵션
- Camera 이동 및 회전 입력 처리
- AssetImporter 기반 Mesh / Texture 변환
- 커스텀 RTTI 시스템
- 3D 소코반 게임 데모용 Player / Floor / Level 구성
이번 시리즈는 D3D11 기반 엔진 프레임워크를 제작하고, 그 위에서 3D 소코반 게임을 완성하는 과정으로 준비하고 있습니다.
처음부터 모든 기능을 상용 엔진 수준으로 구현하는 것이 목표는 아닙니다.
대신 게임 엔진의 구조를 이해하고, 직접 기능을 확장해보면서 엔진 내부가 어떻게 동작하는지를 경험할 수 있는 수준을 목표로 하고 있습니다.
PBR 같은 고급 렌더링 기능은 이번 시리즈에서는 제외할 예정입니다.
현재 단계에서 PBR까지 포함하게 되면 렌더링 이론과 셰이더 설명의 비중이 지나치게 커질 수 있기 때문입니다.
대신 이번 시리즈에서는 엔진 프레임워크와 게임 제작 흐름 자체에 집중하고, 이후 별도 시리즈에서 현재 엔진을 기반으로 PBR 렌더링과 후처리(Post Processing) 같은 기능들을 확장하는 방향도 고민하고 있습니다.
개발을 진행하면서 중간 과정들도 계속 기록해볼 생각입니다.
D3D11을 선택한 이유는 D3D12가 트렌드에 맞지만, 초급자가 학습하기에는 적절하지 않다고 생각했기 때문입니다.
이번 강의에 이어 기회가 되면 D3D12로도 강의를 준비해보려고 합니다.