2 minutes
🍪 Cookie Engine - 0. Introduction
보통 게임 개발이라고 하면 Unity나 Unreal Engine같은 상용 게임 엔진을 이용한 게임 클라이언트 개발을 생각한다. 상용 게임 엔진을 이용하여 게임을 개발하는 것은 게임의 내부 동작을 신경쓰지 않고 오로지 게임 로직만 신경쓰면 된다는 장점이 있지만, 게임 개발자를 꿈꾸는 한 명의 기술자로서 실제 내부 시스템이 동작하는 방법을 모른 채 게임 로직만 짠다는 것은 아쉬움이자 큰 약점이다.
물론 먹고 살기 위해서 게임 개발을 공부한다면 당연히 상용 엔진 사용법을 공부하는 것이 더 낫다. 실제 현업에서 대부분의 개발은 상용 엔진 위에서 이루어지고, 생산성만 놓고 보면 직접 엔진을 만드는 것은 비효율적인 작업이다. 하지만 상용 엔진이 제공하는 기능을 그냥 있는 기능으로만 받아들이는 것과 그 기능이 내부에서 어떤 문제를 해결하기 위해 존재하는지 아는 것은 큰 차이가 있다.
게임 엔진의 내부 원리를 조금이라도 직접 구현해본 사람은 상용 엔진을 사용할 때도 보는 눈이 달라진다. 렌더링 결과가 이상하면 이것이 머티리얼의 문제인지, 노멀의 문제인지, 좌표계의 문제인지, 셰이더 입력 문제인지 추론할 수 있고, 프레임이 떨어지면 단순히 ‘최적화 해야징’ 수준이 아니라 드로우콜, 상태 변경, 메모리 접근, 컬링, 애니메이션 업데이트 같은 구체적인 원인을 의심할 수 있다. 엔진 내부에 대한 이해는 상용 엔진을 더 정확하게 다루기 위한 기반이다. 상용 엔진을 게임을 만들어주는 마법 도구가 아니라 작업을 편하게 해주는 도구로써 활용할 수 있는 힘이 생기는 것이다.
이 시리즈는 바닥에서 시작하여 간단하게나마 에디터 기능을 제공하는 자체 게임 엔진을 만드는 과정을 보여준다. 이 프로젝트의 목적은 상용 엔진을 대체하는 게임 엔진을 만드는 것이 아니라 상용 엔진이 내부에서 어떤 문제들을 해결하고 있는지 직접 부딪히며 이해하는 것이다.
이 기록이 미래의 나에게는 다시 꺼내볼 수 있는 기술 노트가 되고, 비슷한 고민을 하는 다른 사람들에게 게임 엔진 내부를 이해하는 작은 출발점이 되었으면 한다.
Environment
이번 프로젝트를 진행하는 환경은 다음과 같다.
OS: Debian 13 Trixie(WSL) / Windows 11(x64)
Rendering Stack: WSLg + Mesa + D3D12 backend
Build System: CMake 3.31
Platform Abstraction Layer: SDL3
Graphics API: OpenGL 4.6
OpenGL Loader: GLAD 2