1993년 Doom, SQL로 완전 구현
원제: We ported the original Doom to SQL
왜 중요한가
SQL만으로 실시간 게임 렌더링이 가능함을 증명하며, 관계형 DB의 연산 처리 범위에 대한 인식을 넓히는 기술 사례다.
데이터베이스 스타트업 CedarDB의 엔지니어 Lukas Vogel이 1993년 출시된 오리지널 Doom의 게임 로직과 렌더러를 SQL 쿼리로 완전히 구현했다. 게임 루프는 원본과 동일한 35 FPS로 동작하며, 320×200 프레임 버퍼 렌더링은 AMD Ryzen 7 7840U 기준 최대 60Hz로 실행된다. 멀티플레이어 데스매치(4인)도 지원한다.
Vogel은 지난해 SQL로 ASCII 아트 기반 Doom 유사 게임인 DOOMQL을 공개해 주목받았다. 그러나 DOOMQL은 Wolfenstein 3D에 가까운 레이캐스팅 방식을 사용해 정통 Doom의 BSP(Binary Space Partitioning) 트리 기반 렌더링과는 거리가 있다는 비판을 받았다. 이번 SQLDoom은 BSP 트리 순회, 벽 텍스처, 가변 바닥 높이 등 오리지널 Doom의 핵심 렌더링 아키텍처를 SQL로 재현한 것이 핵심 차별점이다.
구조는 명확하게 분리되어 있다. Python은 타이밍 제어, 키보드 입력 수집, 비트맵 화면 출력만 담당한다. 게임 상태, 게임 로직, 렌더러는 모두 데이터베이스 내부에서 SQL 쿼리로 처리된다. 출력은 픽셀별 정확한 RGB 값을 담은 테이블 또는 비트맵이다. 내부 함수(UDF) 사용은 허용했다.
멀티플레이어는 데이터베이스가 상태를 중앙에서 관리하는 특성 덕분에 별도의 큰 작업 없이 구현됐다. EU와 US 서버 각각 4인 데스매치 슬롯을 열어 지금 바로 플레이할 수 있으며, 대기열이 꽉 찬 경우에도 SQL 쿼리로 실시간 게임 상태를 조회할 수 있다. 사용 버전은 첫 번째 에피소드 셰어웨어다.