매 실행마다 이름이 바뀌는 로그라이크 게임 'Xs of Y' (4,000줄의 코드로 구현)

'Xs of Y'는 Go 바이트코드 VM 기반의 Clojure 방언인 'let-go'로 작성된 약 6,900줄 규모의 로그라이크 게임입니다. 매 실행마다 제목과 퀘스트, 룬 매핑이 무작위로 생성되며, 6ms의 빠른 구동 속도와 WASM을 통한 브라우저 실행을 지원하는 것이 특징입니다.

AI 요약

'Xs of Y'는 개발자 nooga가 개발 중인 독특한 개념의 로그라이크 게임으로, Lisp의 한 형태인 'let-go' 언어를 사용하여 약 6,900줄의 코드로 구현되었습니다. 이 게임의 가장 큰 특징은 매 판마다 'Gazebos of Mounting Dread'와 같은 새로운 제목과 'Spatula of Futility'를 찾는 고유한 퀘스트가 생성된다는 점입니다. 마법 시스템 자체가 Lisp 언어의 s-expression으로 구성되어 있어, 플레이어는 던전의 현실 엔진을 직접 조작하는 듯한 경험을 할 수 있습니다. 초반의 처절한 생존 게임에서 후반부의 고도화된 마법 활용으로 이어지는 역전된 파워 커브를 제공합니다. 현재 미완성 상태이지만 브라우저와 네이티브 환경 모두에서 플레이 가능하며, 로그라이크 명작인 'Brogue'에서 큰 영감을 받았습니다.

핵심 인사이트

  • 독창적 개발 환경: Go 바이트코드 VM 위에서 작동하는 Clojure 방언인 'let-go'를 사용하여 전체 약 6,900줄의 코드로 제작되었습니다.
  • 절차적 생성 시스템: 매 게임 실행 시마다 제목, 퀘스트 내용, 룬 매핑이 새롭게 생성되어 반복 플레이의 가치를 높였습니다.
  • 기술적 효율성: 외부 의존성(Dependencies)이 전혀 없으며, 6ms라는 극도로 빠른 초기 구동 속도를 자랑합니다.

주요 디테일

  • 프로그래밍 기반 마법: 마법 시스템이 Lisp으로 되어 있으며, 주문은 s-expression 형식을 사용하고 룬은 기호(symbol)로 작동합니다.
  • 멀티 플랫폼 지원: WASM(WebAssembly)을 통해 웹 브라우저에서 실행하거나, brew를 통해 let-go 런타임을 설치하여 네이티브로 실행할 수 있습니다.
  • 상호작용 물리 엔진: 불이 풀밭으로 번지거나, 적(오우거, 고블린 등)을 용암이나 틈새로 밀어 넣는 등의 환경 상호작용이 구현되어 있습니다.
  • 몬스터 메커니즘: 거미는 거미줄로 플레이어를 묶고, 슬라임은 피격 시 분열하며, 트롤은 체력을 재생하는 등 개별적인 생태를 가집니다.
  • 지속성 데이터 구조: 시스템 전체에 'Persistent data structures'를 적용하여 데이터 관리의 일관성을 확보했습니다.

향후 전망

  • Lisp 활용의 재발견: 게임 로직과 마법 시스템에 Lisp을 직접 활용함으로써, 프로그래밍 언어 자체가 게임 메카닉이 되는 실험적인 시도가 주목받을 것입니다.
  • 경량 게임 엔진의 가능성: 6ms의 구동 속도와 의존성 없는 구조는 고성능 경량 게임 엔진 개발에 있어 'let-go' 언어의 가능성을 시사합니다.
출처:hackernews
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...