KYORA DEVELOPMENT BLOG #02

Hello and welcome back to our 2nd dev blog!

My name is Felix (though I usually go by Fewes) and I’m the associate game director on KYORA. Last time, Fredrik (Prantare) talked about how the pixels in our game work, and today I thought I’d talk a little about a topic that very much ties into that: world generation.

What in the world?

To give some background: just like Core Keeper, KYORA is a procedurally generated game. This means that we utilize various methods to build a big world in a unique way for every player, and all of these methods fall under the umbrella of world generation. Think of things like the terrain, caves, greenery, resource/creature placement, points of interest and the like, and you have an idea of what we’re talking about.

Many of the methods we use are great at making the world randomized, but we must take care to rein this in a bit and make sure the system does what we want. We don’t want the world to feel too chaotic and weird: it should be natural, varied and fun! This is a big topic that we’ve spent a lot of effort on since we started working on Core Keeper, and with KYORA we are continuing this journey, full steam ahead!

Pacing

A key aspect of our games is the sense of discovery. That feeling that there is something left to find, something to come upon if you scale the next hill, or dig a little deeper. It’s really important to us that the game’s content comes at you at a good pace. If the time between interesting things happening is too great, the game might feel dull and uninteresting, and on the other hand if every room you enter is packed to the brim with enemies and loot, the game will become samey and trivial. That sweet spot between the extremes can be really hard to nail down, but at the end of the day what we are looking for is a nice balance between the “three As”:

  • Ambience
  • Adventure
  • Action

Ambience is where you might have a calm moment as you travel outdoors, watching the flowers and trees shift in the wind and the clouds in the background pass by slowly. It might be when you wait for your food to cook as rain pours down outside your newly constructed house, or as you observe a falling star in the sky during night time.

Adventure is where you are actively exploring the world. Maybe you’ve seen something glitter at the edge of your screen and are digging towards it, or you’ve spotted a chest faintly illuminated by light seeping through some cracks. Perhaps you came upon a new type of structure on the surface, or fell down a hole only to discover a new environment. Whatever it is, adventure surely must await…

Action is where you are engaging in some direct form of challenge. Perhaps you’ve angered the underground population and are engaging in combat with them, or you are running away from the local not-so-friendly fauna (which is giving chase!). Maybe you are climbing some vines to avoid falling down  a giant chasm, or you’ve finally geared up enough to take on that giant, hostile statue you found earlier.

Whichever “A” you are currently engaging in, the world must accommodate for it. As you might guess, it is challenging to construct the world in such a way, but through much research, testing and iterating we’ve arrived at a workflow that we are quite happy with for KYORA. It of course helped that we built a similar game before, but KYORA definitely comes with its own set of unique challenges.

What goes up…

Even though KYORA is also a 2D game, there is one major difference when comparing the play space to Core Keeper: gravity.

Every single dynamic object wants to fall downward, all the time. This means it is very easy for everything in the game to end up in “a pile at the bottom” as we like to put it. To counter this we need creatures that are able to navigate the world, but we also want to be mindful of it when designing the terrain itself. Things like avoiding certain types of slopes, adding “fall stops” in key locations and in general not making everything too vertical. We are still iterating on these things, but we’re very happy with the direction we are heading in so far!

Curating caves

What would a pixel terrain game be without some spelunking? Caves play a big role in KYORA and in many ways the design is a natural extension of what we’ve done in the past, with the aforementioned gravity factor playing its part here as well in that platforming becomes a major component. Caves also serve as a nice break from digging through the underground, and as such we want them to be really fun to run around in and explore. There should be an ever-present chance to discover some unique scenery, challenge or maybe something bigger…

A peek behind the curtain

While we don’t want to dig too deep into the internals of the generation before the game is out, one aspect we’d like to talk a little about is the unique challenges that a sidescroller platformer game poses.

During the development of Core Keeper, we spent a substantial amount of time on building a set of authoring tools that we are now also utilizing for KYORA. At the core of these tools is the use of noise.

A common form of noise used for procedural generation.

Noise is great at mimicking the more random aspects of nature, and even a simple version of it can (with some basic math) result in pretty interesting shapes. In fact, for Core Keeper, most of the world was made by thresholding a single type of noise in various ways!

A screenshot of the world generation in Core Keeper as seen in our internal world explorer tool.

A screenshot of the world generation in Core Keeper as seen in our internal world explorer tool

This worked great, in particular because the tileset graphics did a lot of the heavy lifting when it came to rendering the visuals and also because a wall worked the same in all directions. This time around though, we have a much higher tile density (single pixels!), no tileset graphics and the surfaces must work well with the vertical nature of the game. This led us on a journey to improve our library of noise functions, and the short summary of it is that we’ve started to utilize functions that also tell us the gradient of the noise, or in other words the facing direction of it. This allows us to add much more detail to the terrain, like grass on the ground or rock formations in the ceiling!

An early experiment showcasing improved application of noise to generate more detailed 2D terrain.

In-game there is of course a lot more that goes on top, like spawning objects and placing points of interest, but at the base of it all this is what does the heavy lifting.

Till next time

That wraps our sneak peek on world generation. We hope that you are as excited to explore the world of KYORA as we are working on it! We have ambitious goals for what we want to build and we really want to deliver an experience that’ll keep you going, enticing you to explore just a little bit further, find that next chest to open or that next challenge to overcome.

We still have more dev blogs to share in the future, so watch this space if that is something you are interested in. Until then, if you have questions, ideas or just want to let us know what you think, drop a comment or join our official Discord channel – we always love to hear from you.

See you in the caves!

/ Felix

 

Wishlist on Steam here or using the embed below!