위저드 모드(Wizard Mode)의 벤 포터(Ben Porter)가 개발한 문퀘스트(MoonQuest)는 기묘한 야간 세계를 배경으로 한 싱글 플레이어 절차적 생성 어드벤처 게임입니다. 로그라이크와 마인크래프트 장르를 절묘하게 섞은 이 게임은 테라리아(Terraria)와 스펠런키(Spelunky)의 사이 어딘가에 자리하며, 생성된 세계 곳곳에 숨겨진 문스톤을 찾아내는 것이 핵심 목표입니다.
문퀘스트는 절차적 생성을 연구하던 학계를 떠난 벤 포터가 2011년부터 개발을 시작한 작품입니다. 처음에는 문맨(Moonman)이라는 이름으로 불렸지만, 늘어나는 캐릭터 라인업과 달라진 게임 방향성을 반영해 2016년 말 지금의 이름으로 바꾸었습니다. 게임 엔진은 처음부터 직접 설계했으며, SFML과 Box2D 같은 오픈소스 소프트웨어도 일부 활용했습니다. 어떤 캐릭터로 시작하느냐에 따라 게임 세계의 성격 자체가 달라지는 것도 이 게임의 특징입니다. 예를 들어 양서류(Amphibian) 캐릭터는 수중 호흡이 가능하고, 비와 홍수를 부르는 '워터 문(Water Moon)'이 등장할 확률을 높이며, 처음부터 꽤 강력한 무기를 손에 쥐고 시작합니다. 반면 인간(Human) 캐릭터를 선택하면, 은이나 금 광석이 반드시 존재하고, 플레이어 주변에 보호 오라를 생성하는 '페일 문(Pale Moon)'이 뜨며, 풍부한 보물이 보장된 세계가 펼쳐집니다. 사실상 인간 캐릭터가 이 게임의 '이지 모드'인 셈입니다. 이 외에도 잠금 해제할 수 있는 캐릭터들이 있는데, 크루세이더(Crusader)는 완전한 갑옷으로 무장한 채 시작하지만, 폐허가 더 위험하고 풍부한 광물도 보장되지 않는 험난한 세계가 만들어집니다.
게임 엔진은 약 12만 줄의 C++ 코드로 작성되었습니다. 벤(Ben)은 게임 플래너를 비롯한 여러 보조 스크립트를 Python으로 제작했으며, 엔진은 애니메이션 스프라이트 출력, 물 흐름 시뮬레이션, 전경·배경·별빛·글로우·조명·굴절 등 다양한 패스를 합성한 최종 장면 구성, 지역 지오메트리 생성, 게임 저장 및 불러오기, 크리처 제어 등 거의 모든 것을 처리합니다. 게임 플래너는 서로 다른 지역들을 연결해 기본적인 월드 구조를 만들어냅니다. 게임 안에는 장애물과 자원이 존재하며, 플래너는 플레이어가 장애물을 극복하는 데 필요한 자원에 언제나 접근할 수 있도록 보장합니다. 예를 들어, 단단한 점토층을 뚫으려면 삽이 필요한 경우, 플래너는 해당 점토층에 도달하기 전에 철광석과 목재가 충분히 확보되도록 배치해 플레이어가 삽을 제작할 수 있게 합니다. 게임 플래너는 Python으로 작성되며, 기본 게임 플랜을 담은 C++ 코드를 직접 생성합니다. 이후 게임 엔진이 지역이나 연결을 추가·제거하는 방식으로 기본 플랜을 수정하고, 나무·광물·보스·NPC 등 다양한 콘텐츠를 얹어 세계를 완성합니다.
문퀘스트(MoonQuest)의 퀘스트는 현재 몇 가지 장애물만 다루고 있지만, 벤은 더 복잡한 상황도 실험해왔습니다. 오른쪽 이미지는 게임 플래너가 가상의 게임을 풀어나가는 과정을 보여줍니다. 플래너는 홈 노드에서 출발해 모든 노드를 순차적으로 탐색합니다. 도시 성벽에서 장애물 "편지"를 만나면, 솔루션 데이터베이스를 참조해 "시장"을 시장 관저에 배치하는 방식으로 문제를 해결합니다. 최종 결과물은 플레이어가 실제로 클리어할 수 있는 게임 플랜입니다. 예를 들어, 플레이어는 시장을 찾아가 편지를 받고, 검을 구해 몬스터를 처치할 수 있죠. 벤은 이처럼 복잡한 퀘스트 구조를 문퀘스트의 향후 버전에서 본격적으로 구현할 계획입니다.
각 지역은 알고리즘과 수작업을 조합해 생성됩니다. 디버깅을 위해 지역 생성기는 해당 구역을 시각화한 HTML 페이지를 출력합니다. 아래 이미지에서는 숲 지역의 일부를 확인할 수 있습니다. 이 지역의 핵심 지형은 폴리곤으로 정의되며, 구릉을 표현하기 위해 상단에 굴곡을 주고 생성 함수로 채워집니다. 생성 함수는 지형 블록의 분포를 결정하는 역할을 하며, 펄린 노이즈(Perlin noise)와 다양한 함수를 복잡하게 조합해 만들어집니다.
이 과정이 끝나면 식물 배치, 지형 침식, 집 배치, 보물 상자 추가, 수류 시뮬레이션 등 다양한 단계가 이어집니다.문퀘스트(MoonQuest)는 현재 Windows 버전으로 Steam과 itch. io에서 만나볼 수 있습니다. 게임과 위저드 모드(Wizard Mode)에 대한 자세한 내용은 아래 링크를 참고하세요.
크레딧: 벤 포터(Ben Porter, 전반적인 개발), 알렉스 맥도날드(Alex McDonald, 아트·디자인·테스팅), G. P. 레키(G. P. Lackey, 아트 보조), 샘 이조(Sam Izzo, 프로그래밍 보조·테스팅), 알리세펙트(Aliceffekt, 음악), 지오 로바토(Gio Lobato, 음악), 앤드루 몬테(Andrew Monte, 사운드 디자인).
사용 소프트웨어: C++로 제작한 자체 게임 엔진, 세계 생성을 위한 복합 알고리즘(노이즈, 단순 문법, 시뮬레이션), SFML, OpenGL, Box2D.