핵심 요약 루카스 보겔(Lukas Vogel)이 SQL 데이터베이스만으로 1993년작 게임 둠(Doom)을 렌더링하는 프로젝트 SQLDoom을 개발했다. 약 1,300줄의 SQL 쿼리와 89개 공통 테이블 표현식으로 게임 로직을 구현해 초당 35개의 비트맵 프레임버퍼를 생성한다. 640×480 해상도의 풀컬러 그래픽으로 원본 둠 실행 파일 수준의 화면을 구현한 것이 특징이다.
루카스 보겔이 SQL 데이터베이스를 이용해 게임 둠을 구동하는 프로젝트 SQLDoom을 공개한 것으로 알려졌다. SQLDoom은 파이썬(Python) 클라이언트와 CedarDB라는 데이터베이스 엔진을 결합해 게임을 실행하는 방식으로 설계됐다.
SQLDoom은 어떻게 작동하나
파이썬 클라이언트가 입력·출력, 게임 타이밍, 화면 표시를 담당하고 CedarDB 테이블이 게임 기하학과 상태 추적을 맡는 구조다. 약 1,300줄에 달하는 SQL 쿼리와 89개의 공통 테이블 표현식(CTE)이 게임 로직을 구현하며, 이를 통해 초당 35개의 비트맵 프레임버퍼가 생성되는 것으로 알려졌다.

이전 DoomQL 프로젝트와 다른 점은
이전에 공개됐던 DoomQL 프로젝트는 레이캐스팅 기반의 회색조 ASCII 그래픽만 구현했으며, 울펜슈타인 3D(Wolfenstein 3D) 수준의 단순한 맵 구조에 그쳤다. 반면 SQLDoom은 640×480 해상도의 풀컬러 프레임을 생성해 원본 둠 실행 파일과 유사한 그래픽 수준을 구현했다.
둠의 WAD 파일을 관계형 데이터베이스로 변환하는 작업은 비교적 단순했던 것으로 전해진다. 둠이 애초에 레벨을 정점, 선, 섹터 등의 구조로 나눠 설계했기 때문에 이를 테이블 형태로 옮기는 과정이 수월했던 것으로 알려졌다.
- 파이썬 클라이언트: 입력·출력·타이밍·화면 표시 담당
- CedarDB 테이블: 게임 기하학 및 상태 추적
- SQL 쿼리 약 1,300줄, 공통 테이블 표현식 89개
- 해상도: 640×480 풀컬러, 초당 35프레임
성능 개선의 핵심 기술은
SQLDoom의 성능을 끌어올린 핵심은 이진 공간 분할 트리(BSP tree)를 SQL로 변환한 방식에 있다. BSP 트리는 3차원 공간을 재귀적으로 분할해 렌더링 순서를 빠르게 계산하는 자료구조로, 둠을 비롯한 초기 3D 게임에서 널리 쓰였다.
SQLDoom은 게임을 로드하는 시점에 미리 계산한 sort_key 값을 활용해 이 BSP 트리 연산을 구현했다. 매 프레임마다 ORDER BY 문장으로 화면에 표시할 벽과 무시해도 되는 부분을 판단함으로써 성능을 대폭 끌어올린 것으로 전해진다.
자주 묻는 질문
SQLDoom은 누가 만들었나
루카스 보겔이 SQL 데이터베이스만으로 둠을 렌더링하는 SQLDoom 프로젝트를 개발했다.
SQLDoom은 어떤 프로그램으로 구성되나
파이썬 클라이언트가 입력과 화면 표시를 담당하고 CedarDB 데이터베이스 테이블이 게임 기하학과 상태를 관리하는 구조로 이뤄진다.
SQLDoom과 DoomQL의 가장 큰 차이는 무엇인가
DoomQL이 회색조 ASCII 그래픽에 머문 반면 SQLDoom은 640×480 해상도의 풀컬러 그래픽을 초당 35프레임으로 구현했다.

