고전 명작 게임 둠(Doom)의 게임 로직과 렌더링 엔진이 SQL로 완벽하게 재구현된 'SQLDoom' 프로젝트가 공개되어 개발자 커뮤니티의 이목을 끌고 있습니다. 이 프로젝트는 1993년 오리지널 둠의 모든 핵심 기능을 관계형 데이터베이스(RDB) 안에서 SQL 쿼리만으로 실행하며, 파이썬(Python) 클라이언트는 사용자 입력과 화면 표시만을 담당합니다. 게임의 모든 상태, 몬스터 AI, 심지어 렌더링 파이프라인까지 SQL 문으로 작성되어 데이터베이스가 게임 서버이자 렌더링 엔진 역할을 동시에 수행합니다.
SQLDoom은 원작 둠의 게임 로직을 초당 35프레임(35Hz)으로 실행하며, 렌더링은 별도로 처리하여 노트북 환경에서 320x200 해상도의 프레임을 보통 초당 60프레임(60FPS)으로 생성합니다. 복잡한 장면에서는 35FPS까지 내려가기도 합니다. 특히, 무기 속성, 애니메이션, 몬스터 AI 등 게임 내 모든 요소가 관계형 데이터로 저장되어 SQL 쿼리를 통해 실시간으로 수정(모딩)할 수 있다는 점이 특징입니다. 또한, 데이터베이스의 트랜잭션(transaction)과 접근 제어(access control) 기능을 활용해 최대 4인 데스매치 멀티플레이까지 지원하며, 공개 서버에서 첫 번째 에피소드를 플레이하거나 SQL 콘솔로 게임 상태를 조회하는 것도 가능합니다.
이 프로젝트의 핵심은 엔티티 컴포넌트 시스템(ECS) 개념을 관계형 데이터베이스에 적용했다는 점입니다. 플레이어, 몬스터, 사물 등은 엔티티(entity)가 되고, 위치, 스프라이트, 능력치 등은 컴포넌트(component)가 됩니다. 각 컴포넌트는 테이블이 되며, 몬스터 AI나 플레이어 이동 같은 시스템은 특정 속성을 가진 엔티티들 간의 상호작용을 처리하는 UPDATE나 INSERT 쿼리로 구현됩니다. 이는 데이터베이스가 단순한 데이터 저장소를 넘어 복잡한 게임 로직과 실시간 렌더링까지 처리할 수 있음을 보여주며, 데이터 중심적인 애플리케이션 개발에 대한 새로운 시사점을 제공합니다. 특히, 데이터베이스의 강력한 동시성 제어 및 일관성 유지 기능은 멀티플레이 게임 서버 구현의 복잡성을 크게 줄일 수 있는 잠재력을 가지고 있습니다.