Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    B

    Boris the Brave

    boristhebrave.com · Personal blog · on HN since 2018

    Boris the Brave writes on procedural generation, covering dungeon generation in games, Wave Function Collapse, constraint solving, and related graphics algorithms.

    Visit blogRSSHN submissions
    GamesProgramming
    What HN says

    HN commenters call his writeups some of the best explanations of these topics, and link his posts on Diablo dungeons, graph rewriting, and dual contouring.

    Stats for nerds
    24HN people shared it
    45linked in comments
    757story points
    Apr 2026last shared
    2021people per year2026

    Top posts on HN

    1. 1
      Dungeon Generation in Diablo 1
      3 people · 255 points · first shared 2019 · 30 comments on HN
    2. 2
      Dungeon Generation in Enter The Gungeon
      2 people · 120 points · first shared 2019 · 6 comments on HN
    3. 3
      The Culture novels as a dystopia
      1 person · 95 points · first shared 2025 · 216 comments on HN
    4. 4
      Accelerated Game of Life with CUDA / Triton
      2 people · 51 points · first shared 2025 · 6 comments on HN
    5. 5
      Dungeon Generation in Unexplored
      3 people · 50 points · first shared 2021 · 2 comments on HN
    6. 6
      Triangle Grids
      1 person · 36 points · first shared 2022 · 2 comments on HN
    7. 7
      Random Paths via Chiseling
      2 people · 34 points · first shared 2018 · 7 comments on HN
    8. 8
      An Uncanny Moat
      1 person · 34 points · first shared 2024 · 28 comments on HN
    9. 9
      The 800k Hours Career Guide
      1 person · 27 points · first shared 2025 · 5 comments on HN
    10. 10
      Constraint Solving and Wave Function Collapse Explained
      3 people · 4 points · first shared 2020 · Discussion on HN

    What HN people wrote when they linked it

    • fc417fc802Apr 2026

      > The maze-creating algorithms might be interesting for computer scientists, but they're terrible at creating mazes interesting for humans!

      Not sure what would lead you to that conclusion. There's only so much you can do with (for example) a two color palette and no lawn art but it goes without saying that there's nothing restricting an implementation to the sort of minimalist methodology that's so useful for demonstrating an algorithm for the reader.

      The last time this was posted [0] someone linked this article [1] which provides a nice visual demonstration of the structural differences between a few of the algorithms (scroll down for the color floods I'm referring to). Of course this can all be implemented as a graph (ie nodes that have coordinates) rather than as a grid, empty space expanded (ie coordinates subjected to an arbitrary series of affine transformations), branches of the tree overlaid after the fact to add weave (ie rotating and translating the coordinates of subtrees), nodes expanded to represent larger areas instead of single grid cells, whatever you'd like.

      Also see the modifying in blocks algorithm applied to an escheresque tileset [2] (from this article [3]) which will produce a solvable 3D maze (multi-path and multi-solution) if given an appropriate tileset.

      [0] https://news.ycombinator.com/item?id=10101728
      [1] https://bost.ocks.org/mike/algorithms/#maze-generation
      [2]…

    • wokwokwokJul 2021

      It's been discussed numerous times that this is simply a constraint satisfaction problem with hand-wavey BS applied over the top.

      Here's a good (free) explanation:
      https://www.boristhebrave.com/2020/04/13/wave-function-collapse-explained/

      Specifically read the 'Least Entropy' section: It's broken down very simply:

      Pick a random tile which is the 'least random', because (due to already having resolved the constraints we can), this is most likely to be a cell that won't cause problems (ie. unsatisfiable constraints) later.

      You might also like to read this (also) free paper on implementing WFC using a constraint solving library: https://canvas.ucsc.edu/files/109152/download?download_frd=1, which I quote here:

      > The heuristic of selecting the most constrained variable or equivalently the variable with minimum remaining values (MRV) is well known in constraint solving.

      > Since there is more than one valid pattern for that location—or it would already have been set to zero entropy in the previous loop—one of those patterns needs to be chosen. One of the patterns is chosen with a random sample, weighted by the frequency that pattern appears in the input image.

      > This implements Gumin’s secondary goal for local similarity: that patterns appear with a
      similar distribution in the output as are found in the input [12].

    • ramses0Jun 2023

      Read through the Super-Mario analysis, but refer to the all-caps table down below as you're reading. (HERO, NEO, BAD, DRAKE)

      They're basically analyzing "tropes" (common storytelling patterns), and doing something similar to advanced procedural dungeon/level generation: https://www.boristhebrave.com/2021/04/10/dungeon-generation-in-unexplored/#Cyclic_Dungeon_Generation

      ...at least this appears to be a first cut at defining a vocabulary for the storytelling aspect of the problem.

      They refer also to other "Key + Door == Progress" aspects of procedural content generation (ie: make a zone, place a [locked] door to another zone, place a key within the original zone and then recurse).

      All told, a very interesting area to explore.

    • zzyzekOct 2025

      Boris the brave coined the term "Constraint Based Tile Generators" (CBTG) [0], which is a specialization of the more general CSPs to this particular domain.

      Personally, I find CSPs overly general and mired in esoteric, byzantine terminology. It's a large cognitive load to put on people to run through the glossary of terms just to talk about the problem set up. I don't think the quantum mechanic analogy is great but I can see it being much more intuitive than the obscure language of CSPs.

      [0] https://www.boristhebrave.com/2021/10/31/constraint-based-tile-generators/

    • mklJan 2022

      Explanations of the method:

      - https://robertheaton.com/2018/12/17/wavefunction-collapse-algorithm/, 44 comments https://news.ycombinator.com/item?id=18744696

      - https://www.boristhebrave.com/2020/04/13/wave-function-collapse-explained/, 18 comments https://news.ycombinator.com/item?id=18321168

      More threads: https://hn.algolia.com/?q=wave+function+collapse

    • BorisTheBraveJan 2021

      +1 datapoint: I've decompiled several to find out how they work, and found most use mono. Maybe it depends how indie your game is?

      My dcompilation writeups can be found here: https://www.boristhebrave.com/category/level-generation/

    Related

    Penzbapenzba.co.uk26 people

    High-dimensional spheres are "spikey"

    Penzba
    Personal · last shared 2025
    Red Blob Gamesredblobgames.com199 people

    Hexagonal grids for games

    Red Blob Games
    Personal · last shared 2026
    The Orange Ducktheorangeduck.com74 people

    Machine Learning, Kolmogorov Complexity, and Squishy Bunnies (2019)

    The Orange Duck
    Personal · last shared 2026
    Rodrigo Copetticopetti.org98 people

    Playstation 3 Architecture

    Rodrigo Copetti
    Personal · last shared 2026
    #AltDevBlogADayaltdevblogaday.com163 people

    John Carmack on the importance of Static Code Analysis

    #AltDevBlogADay
    Publication · last shared 2023
    Nick Johnsonblog.notdot.net88 people

    Damn Cool Algorithms: Levenshtein Automata

    Nick Johnson
    Personal · last shared 2025
    Darius Kazemitinysubversions.com53 people

    Spelunky Procedural Level Generation

    Darius Kazemi
    Personal · last shared 2026
    Brave New Geekbravenewgeek.com85 people

    You Are Not Paid to Write Code

    Brave New Geek
    Personal · last shared 2026