Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

This is really awesome, it creates really cool levels and I really like the fact you can delete or change a specific part.

Unfortunately I didn't have a template to import so I used the existing ones, but I will try it again in the future when I have something.

Could you share a bit about how it learns to create the level according to the template?

(+1)

Thank you for trying it out!

The program was initially inspired by an algorithm called Wave Function Collapse (https://github.com/mxgmn/WaveFunctionCollapse), which can take a texture and output similar results. The issue with WFC, for me, is that it can only analyze individual pixels on its own, and anything involving tiles requires a time-consuming process of using JSON to manually teach it tile-by-tile relationships.

What Sibyl does is tie both halves together - pixel analysis and tile relationships - so it can automatically read any tilemap and output similar results, all by itself. The first step involves scanning the provided template, recognizing identical tiles, and recording what tiles they're paired with (making them compatible neighbors) in each direction. In the second step, it uses a WFC-like algorithm to place tiles across the level, while attempting to only place compatible neighbors next to each other. 

Moreover, Sibyl also considers how often neighboring combinations are present in the template you provide. This allows it to try to replicate the design of the template itself, rather than simply randomly placing whatever tiles work together. 

As a result, Sibyl can autonomously create levels that also feel handmade, by simply providing it with an example level. However, a carefully-crafted template can provide even more flexible and controlled results, for whoever is willing to spend the time on making one. The Making Templates guide goes through some of the different best practices I've figured out in regards to that. 

(+1)

Thanks a lot for the detailed response!

This algorithm is cool, I enjoyed reading about it :)