SQL로 구현한 고전 FPS 게임 '둠' 구동기 — AI 생성 일러스트
리서치 뉴스

SQL로 구현한 고전 FPS 게임 '둠' 구동기

We ported the original Doom to SQL

Hacker News10월 3일 발표 · 3분

고전 FPS 게임 '둠'의 복잡한 게임 로직 전체를 관계형 데이터베이스 언어인 SQL로 구현하여 구동하는 데 성공했습니다.

세 줄 요약Hacker News 원문 기반
  1. 핵심 게임 상태, AI, 물리 엔진 등 모든 로직은 DB 내에서 처리하며, 외부 프로그램은 입력 및 화면 표시 역할만 담당합니다.
  2. 이는 실시간성이 필수적인 복잡한 시스템의 핵심 로직을 관계형 데이터베이스 구조로 옮길 수 있음을 보여주는 혁신적인 기술적 사례입니다.
  3. 게임 로직은 원작의 고정된 속도(35Hz)를 유지하는 반면, 화면 렌더링은 독립적으로 더 높은 주파수에서 처리할 수 있습니다.

원작 1993년도 '둠'의 게임 로직과 렌더러를 관계형 데이터베이스 언어인 SQL을 사용하여 포팅하는 프로젝트가 진행되었습니다. 이 구현은 단순한 ASCII 아트를 넘어, 원작이 사용하는 BSP 트리 구조와 같은 복잡한 깊이 순서 처리를 포함하여 실제 '둠'처럼 느껴지도록 하는 것을 목표로 했습니다. 핵심 규칙에 따라 렌더링과 게임 루프 모두 순수하게 SQL 기반으로 작동해야 하며, 외부 클라이언트는 입력 처리, 타이밍 관리, 그리고 최종 비트맵 출력만 담당합니다.

게임 로직은 원작의 고정된 속도인 35Hz로 유지되어 모든 상수와 시스템이 정상적으로 작동하도록 합니다. 이 과정에서 한 번의 게임 틱은 28.6ms의 예산 내에서 처리됩니다. 하지만 화면 렌더링은 이러한 게임 로직과 분리(decouple)되었습니다. 클라이언트는 원하는 시점에 프레임을 요청할 수 있으며, 시스템은 틱 간 카메라 위치를 보간하여 (interpolate) 원작보다 더 높은 주파수(최대 60Hz)로 부드러운 화면을 제공합니다.

게임의 복잡한 상태 변화와 AI 로직은 SQL 내에서 처리됩니다. 게임 틱은 이동, 사망 처리, 무기 상태 등 순차적인 절차를 따르며, 각 단계는 별도의 SQL 함수 호출로 실행됩니다. 예를 들어, 적 캐릭터의 인공지능(AI) 상태 기계는 재귀적 CTE(WITH RECURSIVE)와 같은 고급 SQL 구문을 사용하여 구현되었습니다. 이를 통해 적이 시야 범위 내에 있는지, 공격 거리에 도달했는지 등을 판단하여 '대기', '확인', '미사일 발사' 등의 다음 상태를 결정하고 데이터베이스 테이블을 업데이트합니다.

궁금한 점AI 정리 · 원문 기반
게임의 복잡한 로직은 어떤 방식으로 처리되나요?

게임의 핵심 규칙과 복잡한 상태 변화(이동, 사망 처리 등)가 모두 데이터베이스 내에서 SQL 함수 호출을 통해 순차적으로 실행돼요. 특히 적 캐릭터의 인공지능 같은 것은 재귀적 CTE와 같은 고급 SQL 구문을 사용해서 구현했어요.

게임 로직과 화면 렌더링은 어떻게 분리되었나요?

게임 로직 자체는 원작의 고정된 속도인 35Hz를 유지해요. 하지만 화면을 보여주는 렌더링 과정은 이 로직과 분리(decouple)되었기 때문에, 시스템이 카메라 위치를 보간하여 원작보다 더 높은 주파수(최대 60Hz)로 부드러운 화면을 제공할 수 있어요.

SQL 기반으로 구현한 로직의 범위는 어느 정도인가요?

단순히 보이는 그래픽을 넘어, 원작에 사용된 BSP 트리 구조 같은 복잡한 깊이 순서 처리까지 포함해요. 게임 루프와 렌더링 모두 핵심 규칙에 따라 SQL 기반으로 작동해야 해요.

원문Hacker News · We ported the original Doom to SQL
궁금한 점 3개AI 정리