←back to thread

399 points TaurenHunter | 6 comments | | HN request time: 0.471s | source | bottom
1. k1w1 ◴[] No.42190642[source]
The seamless integration between one type of object and another is really impressive. The way that the blocks in the roofline perfectly work regardless of the height of the roof is a great example.

How is this possible? Is it some kind of procedural geometry that fills in the available space?

replies(2): >>42190660 #>>42191664 #
2. PcChip ◴[] No.42190660[source]
It is surely procedural, maybe wave function collapse? I’d love to read a writeup from the author, in the same style of Factorio’s
replies(2): >>42190751 #>>42190867 #
3. chefandy ◴[] No.42190751[source]
The texture is certainly procedural for brick patterns, etc. but I'll bet smoothing intersecting polys happens at render time.
replies(1): >>42190927 #
4. p1necone ◴[] No.42190867[source]
I can't remember where exactly but I think I did read somewhere it was based on wave function collapse.

I think wave function collapse is still super underexplored in game dev. This recent paper is pretty interesting: https://dl.acm.org/doi/10.1145/3582437.3587209

5. jaimex2 ◴[] No.42190927{3}[source]
Just a clever shader
6. PythagoRascal ◴[] No.42191664[source]
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]: https://youtu.be/0bcZb-SsnrA