GitHub - nooga/xsofy: Roguelike that names itself each run. WIP

2 min read Original article ↗

Xs of Y

A roguelike written in my lisp, where the magic system is a lisp.

Note: This is not finished! It's playable but mild peril and uscheduled explosions are to be expected.

Play in your browser

screenshot

Every run generates a new title (Gazebos of Mounting Dread), a new quest (retrieve the Spatula of Futility), and a new set of rune mappings. The runes are secretly symbols, spells are s-expressions. You have root access to the dungeon's reality engine but the man pages are in a dead language that changes every boot.

The power curve is inverted - early game is desperate survival, late game is applied theology with inadequate safety margins.

Meanwhile the dungeon is trying to kill you through more conventional means. Spiders shoot web cones that trap you while goblins close in. Slimes split when you hit them. Trolls regenerate. Set something on fire and it panics, runs through grass, ignites the grass, ignites more creatures - it's fine, everything is fine. Push an ogre into lava. Push a goblin into another goblin. Push yourself into a chasm by accident. Chasms are educational.

Written in ~6900 lines of let-go - a Clojure dialect on a Go bytecode VM. Persistent data structures all the way down. No dependencies. 6ms startup. Runs natively or in the browser via WASM.

If you like how this game looks check out Brogue - my main inspiration.

Running

Get lg from let-go, or:

brew tap nooga/let-go https://github.com/nooga/let-go
brew install let-go