> FATAL ERROR: [program exited] "cannot subtract nil and let-go.lang.Int", :data {:trace ("game-loop (<unknown>)" "game-loop (<unknown>)" "update-world (<unknown>)" "run-until-player-turn (<unknown>)" "creature-turn (<unknown>)" "update-ai-state (<unknown>)" "distance (<unknown>)")}}
A fatal error indeed!
> Interactive input unavailable (no cross-origin isolation).
> Deploy coi-serviceworker-js alongside this file.
in Safari on 26.4
What I think is interesting is that this game computes the entire world state each tick and does so efficiently thanks to persistent data structures.
To anyone who dared to fire it up: thank you for playing, I'm curious what you think!
Or did I miss the attribution?
* Edit: I’m not looking for the downvotes or to stir things up. I’m simply calling out that this is a small niche community we notice these things, we’re very free with our code, and copy is a compliment, but so is attribution.
The author wasn’t so much inspired the by Brogue style, but copied it directly down to the animations and ASCII.
I'm interested in building something similar, any tips besides looking at what you've done and Brogue?
In the age of LLMs the "author" might not even know where the art direction and inspiration came from!
I'll link to Brogue in the README :)
I took things I like from Brogue and added my own spin on it.
Brouge isn't the only rouge-like with LoS mechanics.
─── Messages ───
Old man shuts the gate behind you. You hear him mutter "every time, I swear..."
You must retrieve the Amulet of Lost Semicolons.
You kill the rat! (sneak attack!)
The rat squeals and dies!
You wait. (x10) ᛜ
ᚢ You kill the rat! (sneak attack!) ᛉ
The rat squeals and dies!
You hear muttering. ᛋ
You hear muttering.
You hear muttering.
You hear a distant creak. ᛖ ᛃ
The runestone crumbles as you touch it. You learn: ᛟ means "ice"! ᛚ
You hear a distant creak.
The goblin misses you. (x3)
The goblin hits you for 4.
The goblin hits you for 3. ᛏ
The goblin hits you for 4.
The goblin hits you for 3.
The goblin misses you. ᛚ
The goblin hits you for 4.
The goblin hits you for 2.
The goblin hits you for 4.
The goblin misses you.
The goblin hits you for 2.
The goblin misses you. (x2)
The goblin hits you for 2.
The goblin kills you!
You die...
Note how there were no user action messages during the time the goblin was attacking.If you call it “Mario-like” then I would say most people would understand where the inspiration comes from.
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.

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.
lg main.lg
Get lg from let-go, or:
brew tap nooga/let-go https://github.com/nooga/let-go
brew install let-go
Brogue looks like this: https://syltefar.com/screenshot/?id=624
No idea what you think you are arguing. Are you in the wrong thread?
I said I don't get why people keep posting essentially vibe coded game clones... I get bored checking out GitHub projects on HN that are doing absolutely nothing new and are essentially baby projects made by Claude on a weekend, and terribly architected to boot. Cluttering the feed.