HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

EPC2018 | Wave Function Collapse in Bad North | Oskar Stalberg

BUas Games4 HN recommenders · recommended in 5 months, 2020-2024
YouTube
176K views · 8 years ago · talk · evergreen

Oskar Stalberg explains how Wave Function Collapse assembles island dioramas from handcrafted tilesets in Bad North. He covers the theory, implementation, tooling, and how he blends art and technology.

The go-to talk whenever Wave Function Collapse, Townscaper or tile-based procedural generation comes up.

Game programming & enginesComputer graphics & renderingIndie game development#wavefunctioncollapse#badnorth#townscaper#tilesets#gamedevelopment

10 comments from Hacker News

@PythagoRascal2024 · in “Tiny Glade 'built' its way to >600k sold in a month”

As far as I know they are using a customised variant of the "wave-function collapse" technique, used and popularised by Oskar Stalberg in his games "Bad North" and "Townscaper". The technique boils down to hand-crafting tons of tiles with adjacency rules about which tiles can slot together. When the user adds/removes a tile the algorithm iteratively tries to find fitting tiles and, if needed, changes neighbouring tiles for ones with the best transitions. He gave a talk where he goes into detail about this[1]. You can also find more if you google his name and "wave-function collapse". [1]: ▶ this video

CitesView on HN
@nico2024 · in “Tiny bitfield based text renderer (2022)”

Yes, it is probably its main usage The author of the GitHub repo is a pretty successful game author and has used it many times for his games Here’s a talk by him talking about procedural generation using wave function collapse: ▶ this video

CitesView on HN
@Cognitron2023 · in “CityDreamer: Compositional Generative Model of Unbounded 3D Cities”

Oskar Stålberg has some great talks on YouTube about how the systems in Bad North and Townscaper work. ▶ this video link link link

RecommendsView on HN
@symmetricsaurus2022 · in “The Wavefunction Collapse Algorithm explained clearly”

Oskar Stålberg has famously used WFC in Bad North and Townscaper. Here's a nice presentation from him explaining it: ▶ this video

RecommendsView on HN
@btown2021 · in “Townscaper Running in the Browser”

And here's another, slightly more technical talk from him about the "wave function collapse" algorithm he uses for procedural generation in his games: ▶ this video

RecommendsView on HN
@btown2021 · in “WaveFunctionCollapse: Generates bitmaps that are locally similar to the input”

The creator Oskar Stålberg has a great overview talk of Wave Function Collapse and how he applied it to his previous game Bad North - it’s absolutely worth a watch! ▶ this video

Strongly recommendsView on HN
@hesdeadjim2021 · in “WaveFunctionCollapse: Generates bitmaps that are locally similar to the input”

I played around a lot with this library: link Fun stuff, but I struggled to get a lot of value out of using it for level gen. You get cool patterns, but levels need structure and intent to be interesting. Adding constraints to the algorithm becomes a big-oh nightmare and you end up with frequently unsolvable paths as the algorithm recurses. The game Bad North used it to good effect, so depending on the game it may be a very useful tool in the toolbelt. ▶ this video

CitesView on HN
@detaro2021 · in “How to create a game like Townscaper?”

Its creator has a bunch of details on their Twitter ( link , although digging through long Twitter history is of course a pain) and given some talks: ▶ this video link

CitesView on HN
@bschne2020 · in “Townscaper – A building game inspired by the design of Scandinavian cities”

Not sure what of this was actually used in townscaper, but someone in another discussion of the game (can't remember where unfortunately) referred to these two sources: - Oskar Stålberg's 2018 Talk "Wave Function Collapse in Bad North" ( ▶ this video ) - Müller et al, 2006 - "Procedural Modeling of Buildings" ( link )

CitesView on HN
@pdoub2020 · in “Brick Block (2016)”

Please note that this is an old demo that has since grown into a full-blown game: link (Says Windows-only, but has a working Beta for Mac) Here's a talk by Oskar on how generating such worlds work: ▶ this video

RecommendsView on HN
Superpositions, Sudoku, the Wave Function Collapse algorithm.14:28

Superpositions, Sudoku, the Wave Function Collapse algorithm.

Martin Donald
764K views • 6 years ago
Exploring the Tech and Design of Noita31:00

Exploring the Tech and Design of Noita

GDC Festival of Gaming
288K views • 6 years ago
Herbert Wolverson - Procedural Map Generation Techniques27:29

Herbert Wolverson - Procedural Map Generation Techniques

Roguelike Celebration
153K views • 6 years ago
Creating a Doom-style 3D engine in C18:50

Creating a Doom-style 3D engine in C

Bisqwit
991K views • 11 years ago
Procedurally Crafting Manhattan for Marvel's Spider-Man1:07:26

Procedurally Crafting Manhattan for Marvel's Spider-Man

GDC Festival of Gaming
89K views • 7 years ago
New Voxel Engine Reveal - Crystal Islands Experiment5:05

New Voxel Engine Reveal - Crystal Islands Experiment

John Lin
394K views • 5 years ago
Animation Bootcamp: An Indie Approach to Procedural Animation26:13

Animation Bootcamp: An Indie Approach to Procedural Animation

GDC Festival of Gaming
786K views • 9 years ago
Dennis Gustafsson – Parallelizing the physics solver – BSC 20251:07:09

Dennis Gustafsson – Parallelizing the physics solver – BSC 2025

Better Software Conference
77K views • 1 year ago
Crafting A Tiny Open World: A Short Hike Postmortem31:07

Crafting A Tiny Open World: A Short Hike Postmortem

GDC Festival of Gaming
521K views • 6 years ago
NVScene 2015 Session: How to Create Content with Signed Distance Functions (Johann Korndörfer)51:06

NVScene 2015 Session: How to Create Content with Signed Distance Functions (Johann Korndörfer)

NVScene
35K views • 11 years ago
Rendering Tiny Glades With Entirely Too Much Ray Marching59:20

Rendering Tiny Glades With Entirely Too Much Ray Marching

Graphics Programming Conference
108K views • 1 year ago
Destiny's Multithreaded Rendering Architecture1:06:37

Destiny's Multithreaded Rendering Architecture

GDC Festival of Gaming
45K views • 10 years ago
Jonathan Blow - How to program independent games -  CSUA Speech1:15:51

Jonathan Blow - How to program independent games - CSUA Speech

Alexandre Franco
190K views • 13 years ago
GuiltyGearXrd's Art Style : The X Factor Between 2D and 3D58:59

GuiltyGearXrd's Art Style : The X Factor Between 2D and 3D

GDC Festival of Gaming
710K views • 11 years ago
Procedural World Generation of Ubisoft’s Far Cry 5 | Etienne Carrier | Houdini HIVE Utrecht1:06:05

Procedural World Generation of Ubisoft’s Far Cry 5 | Etienne Carrier | Houdini HIVE Utrecht

Houdini
99K views • 8 years ago
This game DISAPPEARS if you pause it!3:58

This game DISAPPEARS if you pause it!

Branta Games
687K views • 1 year ago
HandmadeCon 2016 - History of Software Texture Mapping in Games1:22:13

HandmadeCon 2016 - History of Software Texture Mapping in Games

Molly Rocket
15K views • 9 years ago
Alex Evans at Umbra Ignite 2015: Learning From Failure30:46

Alex Evans at Umbra Ignite 2015: Learning From Failure

Media Molecule
68K views • 11 years ago
Dan Abramov: Beyond React 16 | JSConf Iceland33:25

Dan Abramov: Beyond React 16 | JSConf Iceland

JSConf
139K views • 8 years ago
How We Solved the Worst Minigame in Zelda's History24:32

How We Solved the Worst Minigame in Zelda's History

Linkus7
1.1M views • 6 years ago