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:
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).

(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:
Character stat changes
Movement and behavior
Any other important background logic
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)
Cells can have multiple Portals—which are just position+rotation markers that say what’s connected to what.
Rooms (no portals): fully destroyed when unloaded
Hallways (with portals): leave their collision behind, so characters can keep walking even if the next room isn’t loaded yet
This keeps transitions smooth and natural without needing everything visible all the time.
In Fluffrooms, Level 1 uses a different approach: a dynamic grid system for open world generation.
Based on your player location, a grid is generated around you
Cells spawn in this grid: could be landscape, hallways, special locations like campsites, etc.
It works great for exploration-heavy levels

(image showing a Big Open world cell)
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)
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.
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
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
Furrier
2025-04-13 18:21:29 +0000 UTCSwlightman
2025-04-13 11:32:54 +0000 UTCFurrier
2025-04-07 10:02:43 +0000 UTCArchimedes
2025-04-06 17:48:28 +0000 UTC