SQL 기반 Doom 클론: 3D 렌더링을 위한 DuckDB-WASM 활용

2025-04-22
SQL 기반 Doom 클론: 3D 렌더링을 위한 DuckDB-WASM 활용

이 프로젝트는 브라우저 기반 분석 데이터베이스인 DuckDB-WASM을 기존과 다른 방식으로 사용하여 기본적인 3D 게임 엔진을 구축하는 것을 탐구합니다. 저자는 맵, 플레이어 위치, 적 등 게임 상태가 DuckDB 테이블에 저장되는 텍스트 기반 Doom 클론을 만들었습니다. 게임 로직과 렌더링은 SQL 쿼리로 처리되며, 놀랍게도 재귀적인 CTE를 사용하여 광선 추적과 3D 장면 렌더링을 구현했습니다. JavaScript는 오케스트레이터 역할을 하며 입력, 게임 루프, 스프라이트 렌더링을 관리합니다. 이 과정에서 WASM 로딩, SQL 방언의 미묘한 차이, 쿼리 플래너 문제, 비동기 경합 상태 등 많은 과제를 극복해야 했습니다. 결과적으로 얻은 게임은 초당 6~7 프레임을 달성하며, 기존과 다른 작업에 대한 SQL의 놀라운 능력과 DuckDB-WASM의 뛰어난 성능을 입증합니다.