• DOOM 멀티플레이어 오마주작, '순수 SQL'로 구현 및 30FPS로 구동 — 한 달도 안 되어 단 150줄의 코드로 완성

    데이터베이스 애호가가 육아 휴직 기간 단 한 달 만에 DOOMQL을 개발했습니다.

    article image

    한 컴퓨터 과학자가 '순수 SQL(pure SQL)'만을 사용하여 멀티플레이어 DOOM 스타일의 게임을 제작했습니다. 이 결과물인 1인칭 슈팅 게임은 고작 약 150줄의 파이썬(Python) 코드로 구현되었으며, 'DOOMQL'이라는 이름이 붙었습니다. 개발자가 스스로 부과한 소프트웨어 아키텍처의 제약에도 불구하고, 데이터베이스 성능 솔루션 기업인 CedarDB의 공동 창업자 루카스 포겔(Lukas Vogel)은 DOOMQL이 "매우 부드러운 약 30 FPS(프레임/초)"로 작동한다고 밝힙니다. 다만, 그래픽적으로 가장 화려한 DOOM 영감 게임은 아닙니다.

    포겔의 SQL 기반 DOOM에 대한 꿈은 패트릭 트레이너(Patrick Trainer)가 개발한 DuckDB-DOOM에서 비롯되었습니다. 이 초기 실험 코드 역시 SQL을 활용하여 DOOM 스타일의 1인칭 슈팅 게임을 만드는 것을 목표로 했습니다. 그러나 트레이너의 코드는 웹어셈블리(WebAssembly)를 사용하는 브라우저 내 단일 웹페이지에서 실행되는 것 외에도, 렌더링과 입력을 위해 자바스크립트(JavaScript)를 함께 사용합니다.

    DOOMQL과 DuckDB-DOOM 클론의 가장 큰 차이점은 전자가 멀티플레이어 프로젝트라는 점입니다. 특히 DOOMQL은 렌더링과 입력 모두에 SQL을 사용함으로써 128 x 64 픽셀 해상도에서 약 30 FPS를 달성했습니다. 포겔은 트레이너의 노고를 깎아내리는 태도는 아니었지만, "렌더링 파이프라인의 일부를 자바스크립트로 처리한 것은 마치 부정행위(cheating)처럼 느껴졌다"고 언급했습니다. 실제로 '부정행위'가 있었음에도 불구하고, DuckDB-DOOM 클론은 약 8 FPS로 구동되며 해상도도 더 낮습니다. 포겔의 성과를 더욱 돋보이게 하는 것은 그가 육아휴직 기간 단 한 달 동안 DOOMQL을 코딩했다는 사실입니다.

    기술 애호가가 40년 된 프린터 컨트롤러에서 DOOM을 구동하다

    야심 찬 개발자가 64KB의 작은 실행 파일에 담긴 세 단계의 매끄러운 Quake 스타일 게임을 선보이다

    article image

    포겔의 SQL 기반 DOOM에 대한 자세한 내용은 관련 블로그 게시물을 통해 살펴볼 수 있으며, 코드는 GitHub에서 확인할 수 있습니다. 다만, 게임 아키텍처의 개요는 다음 네 가지 항목으로 요약할 수 있습니다:

    • 상태(State): 테이블에 저장됨 (맵, 플레이어, 몹, 입력, 설정, 스프라이트 등)
    • 렌더링(Rendering): 레이캐스팅(raycasting)과 스프라이트 투영(sprite projection)을 구현하는 SQL 뷰 스택으로 작동함.
    • 게임 루프(Game Loop): SQL 파일을 초당 약 30회 실행하는 작은 쉘 스크립트임.
    • 클라이언트(Client): 약 150줄의 Python 코드로 작성되었으며, 입력값을 폴링(poll)하고 3D 뷰에 필요한 데이터베이스 쿼리를 수행함.

    포겔은 게임의 로직과 상태 관리를 구현하는 방식을 통해 SQL에 대해 깊이 이해하게 되었으며, 이 과정에서 "놀라울 정도로 우아한 게임 루프"를 만들어냈습니다. 앞에서 언급했듯이 성능 또한 만족스러운 부분이었습니다. 포겔은 독자들에게 CedarDB(공동 설립자의 자신감 넘치는 홍보)보다 빠르게 DOOMQL을 렌더링할 수 있는 데이터베이스 시스템을 개발해 보라고 도전장을 던집니다.

    DOOMQL을 직접 사용해보고 싶다면 GitHub 저장소로 이동하십시오. 모든 파일을 다운로드하여 Docker와 Python을 이용해 로컬 환경에서 실행할 수 있습니다. 라이선스가 자유로운 MIT 라이선스 하에 코드를 제공하므로, 누구나 직접 보고 가지고 놀 수 있습니다. 포겔은 가까운 시일 내에 "파워업 추가, 다중 무기, 스프라이트 LOD 시스템 정리, 개선된 클라이언트, AI 적" 등 몇 가지 개선 작업을 할 계획이라고 언급했습니다.

    최신 뉴스와 분석, 리뷰를 피드에서 받아보려면 Google News에서 Tom's Hardware를 팔로우하거나 즐겨찾는 출처로 추가하세요. 반드시 '팔로우' 버튼을 클릭하세요!

    [출처:] https://www.tomshardware.com/video-games/retro-gaming/doom-multiplayer-tribute-gets-coded-in-pure-sql-and-runs-at-30fps-made-from-just-150-lines-of-code-in-less-than-a-month