HomeGamesUpdatesPricingMethodology
Steam News26 June 20268d ago

Moving Mountains

I am back on terrain! It feels like an eternity since I last worked on it. The good thing is that, while I was away from the terrain, I had plenty of time to think about how I wanted to approach it.

Full notes

Full Supersonic Fight update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

1 fix2 additions6 changes1 removal
  • Maps
  • Performance
  • Gameplay
changedI am back on terrain! It feels like an eternity since I last worked on it.
changedThe good thing is that, while I was away from the terrain, I had plenty of time to think about how I wanted to approach it. Last week, I modelled the entire Earth. You know...like you do. That gives me my low-resolution, distant scenery.
fixedThe solution? Don't have a fixed mesh at all. Instead, use a series of ever-increasing grids that move with the camera. This technique is known as clipmapping, and it's widely used to render enormous landscapes efficiently.
changedBy doing this, the terrain is always data-driven. The highest detail stays close to the camera, where it's needed most, while distant terrain uses progressively fewer triangles.
changedHowever, implementing this wasn't just a case of creating concentric rings centred on the camera. If you do that, the terrain "swims" because the vertices are constantly moving. To avoid that, each grid has to snap to its own spacing. So the 1m grid must always align to 1m boundaries, the 2m grid to 2m boundaries, the 4m grid to 4m boundaries, and so on.
addedNo problem. Add an overlap. Each level of detail can simply extend one extra grid cell.

Supersonic Fight changes

changedI am back on terrain! It feels like an eternity since I last worked on it.
changedThe good thing is that, while I was away from the terrain, I had plenty of time to think about how I wanted to approach it. Last week, I modelled the entire Earth. You know...like you do. That gives me my low-resolution, distant scenery.
fixedThe solution? Don't have a fixed mesh at all. Instead, use a series of ever-increasing grids that move with the camera. This technique is known as clipmapping, and it's widely used to render enormous landscapes efficiently.
changedBy doing this, the terrain is always data-driven. The highest detail stays close to the camera, where it's needed most, while distant terrain uses progressively fewer triangles.
changedHowever, implementing this wasn't just a case of creating concentric rings centred on the camera. If you do that, the terrain "swims" because the vertices are constantly moving. To avoid that, each grid has to snap to its own spacing. So the 1m grid must always align to 1m boundaries, the 2m grid to 2m boundaries, the 4m grid to 4m boundaries, and so on.

I am back on terrain! It feels like an eternity since I last worked on it.

The good thing is that, while I was away from the terrain, I had plenty of time to think about how I wanted to approach it. Last week, I modelled the entire Earth. You know...like you do. That gives me my low-resolution, distant scenery.

Next comes the "middle distance": the scenery that exists outside the playable area but that the player could potentially fly to. As I've mentioned before, I never wanted to just slap a satellite image onto a mesh and leave it at that. I wanted something more.

There's also the issue of triangles. You could create a giant mesh, but where do you put the detail? How far does it need to extend before the player starts noticing that it's low resolution?

The solution? Don't have a fixed mesh at all. Instead, use a series of ever-increasing grids that move with the camera. This technique is known as clipmapping, and it's widely used to render enormous landscapes efficiently.

By doing this, the terrain is always data-driven. The highest detail stays close to the camera, where it's needed most, while distant terrain uses progressively fewer triangles.

However, implementing this wasn't just a case of creating concentric rings centred on the camera. If you do that, the terrain "swims" because the vertices are constantly moving. To avoid that, each grid has to snap to its own spacing. So the 1m grid must always align to 1m boundaries, the 2m grid to 2m boundaries, the 4m grid to 4m boundaries, and so on.

Great! That solves the swimming.

Except now gaps appear between the different levels of detail.

No problem. Add an overlap. Each level of detail can simply extend one extra grid cell.

Great!

Except now the overlapping vertices no longer line up with the next LOD, creating vertical cracks between the meshes.

No problem. Instead of sampling their own height data, the edge vertices sample the height of the next LOD instead.

Once that was working, I had satellite images slapped onto a mesh.

But that's still not enough. I want terrain that holds up when you're flying low, not just from a distance.

That's where I am now.

Here's a preview of what that extra detail adds:

There's still plenty to do, but it's finally starting to look like the terrain system I had in my head.

If you'd like to follow the development of Supersonic Fight, you have a couple of options:

  • Discord - Join the community, chat with me, ask questions, and see work-in-progress as it happens.

  • Substack - Prefer to read at your own pace? I also write regular development articles with behind-the-scenes stories and technical deep dives.

Whichever you choose, I'd love to have you along for the journey.

-Rich

Source

Steam News / 26 June 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.