Crossroads are a magical place in slavic folklore, where all places and directions meet. Amulets, talismans, unclean spirits and even the devil himself may be encountered. It’s a place where all directions meet, and all time fades away.
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
The life of a villager is hard and full of work. Will Ivan’s action add to their hardships, or make their lives a bit easier?
Not long ago we began working on concepts for Likho, a boss character that is supposed to attack from both melee and long range.
The initial idea for the range attack was based on shooting a beam from the eye and since the character is partially blind, it sounded cool to link this attack to her main disability.