RSSAmplifier

Blog

Frozen Fractal : Development blog

Frozen Fractal is the alter ego of Thomas ten Cate, independent and freelance game developer.

frozenfractal.comRSS feed ↗20 posts

Latest posts

Around The World, Part 33: Clouds

Honestly, I’ve been looking forward to this for so long. Clouds are just so extraordinarily beautiful, diverse and interesting – not to mention technically challenging to get right. Just the right mix for the technical artist in me! Clouds come in many different shapes and sizes: Source: Wikimedia Commons by Valentin de Bruyn , CC-BY-SA 3.0 In this post, I’ll be focusing on the…

Around The World, Part 32: It's full of stars

In the previous post , I implemented a pretty daytime sky. But as soon as the sun sets and any remaining glow disappears, it’s pitch black. Of course, our procedurally generated world deserves to have procedurally generated stars in it! My initial hunch was to implement stars by adding them into the sky shader. That is, given a pixel of sky, we need a piece of code that tells us whether a…

Around The World, Part 31: Clear blue sky

Around The World will be played from a third-person chase camera, so most of the time, about half the screen will be filled with sky. How do we make that sky look good? You may already seen some pretty skies in previous screenshots, but I wasn’t completely satisfied and decided to start over. I’ll do this in three phases: Make a clear sky that works up to and including sunset.…

Around The World, Part 30: Making better waves

I previously blogged about how I’m modelling and rendering water waves in the game, but that was in the previous incarnation on a sphere. I’ve finally ported that over to the current version, and made some considerable improvements along the way. People told me it looks good, and I tend to agree. Let’s dive in! Reflections Even if a water surface is perfectly still, you can still…

Around The World, Part 29: One year in

Exactly one year ago this Valentine’s Day, I started development on Around The World. Let’s look back on the past, but more importantly, look forward at what’s still ahead. “Wait,” you ask, “haven’t you been at this for far longer than one year?” Yes, that’s true. The first post in this series was published in November 2023, over two years ago.…

Around The World, Part 28: Scaling up

Even though the in-game world is fairly small compared to Earth, I want it to feel big. Part of that is being able to see things that are far away. For context: by now, I have settled on a third-person “chase camera” rather than a top-down view. It feels so much more immersive, and makes the gameplay (in particular, matching up maps to your surroundings) more interesting as well. Remember that my…

Around The World, Part 27: Planting trees

In the previous post , I determined what kind of vegetation should grow where in my procedurally generated world. Now it’s time to actually plant those plants! As I mentioned last week, I figured out a list of tree species that belong to each “plant functional type” in the BIOME1 system. I made sure to get a set of distinctive-looking trees, so now it was time to fire up Blender,…

Around The World, Part 26: Biomes

I should be working on gameplay, but I got tired of looking at drab grey terrain, so I decided to beautify it first by adding some vegetation. In a way, this is in line with my plan to add a solid technical foundation for the game before stacking too much gameplay on top, because I’m not sure that the hardware will be able to render all those trees in a huge open world. Let’s take a…

Around The World, Part 25: Placing ports

In the previous post , I promised to start placing some ports in our procedurally generated world. That turned out to be a bit more work than I expected. First off, what are our requirements? Ports must be on a coast. Two ports must not be too close to each other. Ports must be distributed around the world, according to some distribution that I can configure. Ports must be reachable by sea (do not…

Around The World, Part 24: Local terrain

Now that we have a plausible looking height map for the entire world, it’s time to zoom in and see what the terrain looks like up close. I did this before , when I was still working on a sphere. I started out this time using the same approach, but the implementation I ended up with this time is quite different. Let’s start by simply interpolating the global height map using bilinear…

Around The World, Part 23: Hydraulic erosion

As I mentioned last time , I’m currently working on a full rewrite of the game, with a focus on building a solid technical foundation first. But because much of that is boring work, I allowed myself a fun side quest: hydraulic erosion. In nature, erosion is a hugely important factor in shaping landscapes. And arguably the most significant form of erosion is hydraulic erosion , that is,…

Around The World, Part 22: Dropping the ball

I’ve done something that common wisdom in software development says you should never ever do: I started over. Let me explain why. This might get a bit technical… Stumbling around Progress on the game had been rather slow for a few months. This was in part due to lack of time, but it was also because of the code itself, and my feelings about it. I was getting increasingly annoyed by the fact…

Around The World, Part 21: Visibility

In a game focused on exploration, we need to have a way to decide what the player can and cannot see. With a first-person or third-person 3D view, visibility comes for free: anything below the horizon, and anything behind something else, is not visible. With a top-down perspective, we need to do some more work. Visibility Here’s the test scene I’ll be using: Please ignore the black…

Around The World, Part 20: Two steps forward, one step back

Work on the game has been slow due to lack of time, but worse, I’ve let it drift off in the wrong direction. I need to be more careful about scope creep. But first, let’s talk about the progress that I am happy about. No more ECS In a previous post , I described my newly written entity-component system (ECS). I had some reasonable arguments for structuring the game as an ECS, most…

Why my apps will soon be gone from the Google Play Store

The first real money I ever made from game development was on Android. It was in 2013, when Android was still the underdog compared to the iPhone, and was being touted as a great platform for developers. I’d taken two weeks to build Patchy , a retro arcade game revamped for touch controls, and published it on the Google Play Store without any hassle. Since then, I’ve also published…

Around The World, Part 19: Constructing languages

I’m having a bit of an “off” day today, so let’s do something fun, even if it’s rather low priority for the game: generating foreign languages. The idea is that the player starts out in a region where they speak the local language, which will be represented as English (or some other real-world language, if the game ever gets translated). However, as the player…

Around The World, Part 18: Charting the seas

Maps will be an important part of the game. Let’s take a look at how we can draw those! By “maps”, I don’t mean your usual in-game map, which is always there in the corner of the screen, tracks your position and orientation, knows all parts of the world, and is never wrong. No, I’m talking about the kind of maps that sailors in the age of discovery actually used:…

Around The World, Part 17: World generation in the prototype

The code repository in which I’m developing Around The World is called aroundtheworld4 . That might make you wonder: what happened to the first three? Today, let’s take a look at aroundtheworld2 . This was the version I made in 48 hours for the Alakajam game jam, and the only one that has been publically released. I’ve been referring to it on this blog as “the game jam…

Around The World, Part 16: A matter of scale

All else being equal, I prefer games (and books, and movies) to be realistic, rather than making things up on the spot. But of course, all else is rarely equal. Today, I’ll be taking away some of the realism of my procedural world generator to accommodate gameplay. The trouble Douglas Adams might have written: Earth is big. You just won’t believe how vastly, hugely, mind-bogglingly big…

Around The World, Part 15: Making waves

I’ve been investing a lot of effort in the generation of plausible land. But the game is all about sailing, so most of the screen will be filled with water, not land. It’s time to take that smooth blue plane that served as the sea, and make it look better! The rendering of the water will largely be done in a shader. Godot shows changes to shader code live in the editor itself, but it…