In this update4
Full notes
Full Sinking Eternity update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Events
- Maps
- Performance
- Gameplay
Sinking Eternity changes
Hey everyone, I hope you're doing great!
This weekly update happens right in the middle of the Steam Summer Sale, so I'm not sure how many people will see it haha :)
For this week's update, I thought it could be fun to talk a bit about some of the hardest things I've had to build since I started working on Sinking Eternity about three years ago.
World Design
Designing the world required much more planning than I originally expected.
One of my main goals was to make the ocean feel vast and mysterious. When the player stands on the starting islands, there are very few things visible above the surface. I wanted the world to feel like it stretches endlessly in every direction.
The challenge with an underwater game is that players need to feel free to explore, without however having to search every single patch of sand to find an important cave or story location.
To solve this, I ended up relying on a combination of natural terrain flow, carefully placed cliffs and landmarks, some waypoints, and narrative hints spread throughout the story. The goal is to gently support the player without making exploration linear.
Open World Performance
This was probably one of the biggest technical challenges of the project.
The world extends for kilometers/miles in every direction, including vertically. During early testing, I quickly discovered that thousands of objects scattered throughout the world were still affecting performance, even when they were completely outside the player's view.
With thousands of plants, rocks, fish, sea creatures, and other objects, traditional optimizations like LODs weren't enough by themselves.
To solve this, I built a lightweight system that activates and deactivates every object in the world based on its distance from the player. The objects are split into 100 different update groups, and the game cycles through one group every few frames instead of checking everything at once. This spreads the workload over time and avoids large performance spikes.
Some systems, such as fish and sea creatures, continue updating their logic even when they aren't rendered, so they can still move naturally and be in the correct location when the player reaches them.
Fish Schools
I really wanted schools of fish with hundreds of fish swimming together, but that ended up being very expensive on the CPU.
Even though it looks simple, every fish has to follow the group's movement, keep a safe distance from other nearby fish, face the correct direction, and avoid leaving the water or swimming through the sea floor.
When several schools are visible at the same time, that's over 250 fish performing those calculations simultaneously.
To optimize this, each school has a leader that handles the more complex navigation. The first few fish closely follow that leader, while the remaining fish update less frequently and continue swimming smoothly between logic updates. This greatly reduced the CPU cost while keeping the schools looking natural.
Just to give you an idea, I think I spent weeks working only on the fish schools before I was happy with the result haha.
I still keep working hard on the game, and things are progressing well. Most of my work this past week has been polishing, like improving particle effects, animations, and many smaller details throughout the game.
Thanks so much for all your support! We're still on target for a launch by the end of the summer, and I can't wait to finally let everyone explore the game world.
Source
Changelog.gg summarizes and formats this update. How we read updates.
