XaiJu
Furrier
Furrier

patreon


DevBlog - Dynamic way to make Levels

Hi!

Let me tell you about my Level Generation methods! 💡

For Harem and Frost, I wanted to create dynamic levels with a high amount of detail.
Having many characters interacting and allowing you to customize environments was super important to me. 🛋️

So the usual way of building worlds wasn’t the best fit—
Instead, I experimented a lot with Level Streaming, and ended up with something pretty neat! Here's how it works:

🚪 Level Streaming

When the game launches, it starts in a mostly empty base world.

Then, using the GameMode class, a new level is loaded asynchronously (without a loading screen). This streaming level can be anything, but usually it's just a backdrop—fog, ambient stuff, etc.

And then the magic begins! ✨

Inside that streaming level is a Seed Actor—this holds instructions on what to create.
In the case of Harem, it spawns the Palace, which itself is split up into cells (more on that next).

🧱 The Cell Method

(Image showing a single Cell)

Each cell is basically a room. Rooms can be loaded or unloaded depending on where the player is.

Every cell stores the items you placed, and when a cell unloads, all its characters and objects are saved to the HaremWorldManager. This manager simulates things like:

That way, even though only a few rooms are visible at a time, your whole palace is alive in the background—without slowing down the game!

(gif showing Cell Gen Process)

⚙️ Technical Bits: Portals & Persistence

Cells can have multiple Portals—which are just position+rotation markers that say what’s connected to what.

This keeps transitions smooth and natural without needing everything visible all the time.

🗺️ The Grid Method (Fluffrooms LVL 1)

In Fluffrooms, Level 1 uses a different approach: a dynamic grid system for open world generation.

(image showing a Big Open world cell)

🧱 Grid-Based Room Placement

The Grid Method isn’t just for open-world stuff—it’s also used when placing rooms!

When a new room is placed, it checks the nearby grid to see how much space is available (since there might be hallways or other rooms nearby). Based on that, it generates a room shape that actually fits into the remaining space.

One of the hardest parts was detecting "islands"—tiny areas not connected to the door.
To solve this, I actually borrowed the idea behind the Flood Fill algorithm (yeah, the one from MS Paint! 🎨), and implemented a blueprint version of it in Unreal. Worked like a charm! 😄

(Its currently used on the Shops in LVL2)

🧰 World Customization

Using the Build Menu, you can place or remove any object you've found in-game.
When you place something, it's saved to the cell structure, and even when not loaded, it continues to "exist" and simulate in the background.

🎨 Performance-Friendly Customization

I switched from Dynamic Material Instances to using Primitive Data for coloring and textures.

Why? Because thousands of material instances kill your framerate 😵‍💫

With primitive data, I can store variables directly on mesh components (static or skeletal), and access them in the shader.
This means:
No performance drop
Full customization freedom

🧱 Build Your Own Cells

You can unlock and place Cell Seed Actors anywhere—at portals, or out in the world.

This lets you replace entire rooms or create new ones using things you find.
Start with a basic palace, and slowly transform it into your own custom space—any look, any vibe, any character you want!

I hope this gives you an idea of how the system works, and how your palace can truly become whatever you want it to be 🏰💕

♥u,
Your furrier

DevBlog - Dynamic way to make Levels DevBlog - Dynamic way to make Levels DevBlog - Dynamic way to make Levels DevBlog - Dynamic way to make Levels

Comments

yay :3

Furrier

Looking so amazing, Great Job Furrier ^^

Swlightman

I am glad you like those, If you ever have any questions or want me to cover a specific topic let me know :3

Furrier

I kinda love the tech bits honestly

Archimedes


More Creators