Slavic folktales are often about a character traveling far away through unknown lands to try to fulfill an impossible quest. Yaga is no different, and Ivan will find himself entering dangerous forests or enchanting swamps (or is it the other way around?). Being an oral tradition, folktales are often improvised and changed by the narrator, so what the hero meets in each place might be different from tale to tale. Which is why the levels in Yaga are procedurally generated, and this post will go into some technical details about how we achieve that.
Our level generation process is a mix between what we’ve seen in Binding of Isaac and Moon Hunters. We freely stole borrowed techniques used in those games, but adapted them to our needs and narrative structure.
Goals & Quests
When writing the level generation, we wanted to achieve several goals:
- Most combat encounters should have a purpose besides just fighting
- Encourage exploration of each level
- Have a natural, organic layout
- Allow us to implement lock & key mechanics in some of the encounters