All Projects
MeowEditor

MeowEditor

C#SCPSLNetworkingBuilt From Scratch

Imagine primitives on SCP:SL, but turbocharged. More of them, running faster, with a fraction of the usual cost. That's MeowEditor — a ground-up rethink of how primitive-based maps should work inside SCP: Secret Laboratory.


Why Do Servers Struggle With Primitives?

Honestly? Because everyone's been approaching it wrong. Primitives in SCP:SL aren't particularly optimized out of the box — the base game was never designed to handle hundreds of thousands of them in a single scene. Most existing solutions just throw more hardware at the problem and hope it holds together.

After digging into exactly why things fall apart at scale, a few patterns became clear. The server is doing work it doesn't need to do. The client is being trusted with more than it should be. And the data formats being used are bloated for no good reason. MeowEditor was built to fix all three of those problems at once.


The Core Idea

Here's the key insight behind MeowEditor: instead of having the server actually spawn every primitive and sync that state to clients the normal way — what if we make the client think they were spawned, while the server handles almost none of that overhead?

That's the heart of it. MeowEditor offloads the heavy lifting to the client side, wrapping everything in a custom sync layer so the server stays lean while the client renders the full scene. The result is a system that can push primitive counts that would completely destroy a standard setup — and keep both server and client stable while doing it.


What Makes It Special

The client-side rendering approach is only part of the story. The other half is the data pipeline — specifically, how maps are stored and loaded.

175k primitives packed into a 2.68MB asset bundle

That file above contains roughly 175,000 primitives packed into a single AssetBundle. The resulting file size? 2.68MB. That's not a typo. Through a combination of packing algorithms and data compression techniques, what would normally be an enormous scene description becomes something that loads fast and transfers cheaply. On top of that, additional runtime algorithms further improve client-side performance once the bundle is actually running.

But here's where it gets genuinely interesting — MeowEditor isn't locked to a single input format. The building pipeline is flexible enough to import from multiple sources:

PNG files — yes, actual image files. MeowEditor can interpret pixel data and convert it directly into primitive geometry:

PNG to primitives conversion example

Roblox maps — models and level geometry exported from Roblox can be parsed and rebuilt as SCP:SL primitives:

Roblox map imported into MeowEditor

That flexibility is what makes MeowEditor more than just a renderer — it's a full conversion and building pipeline. Anything that can be expressed as geometry can theoretically be brought into SCP:SL through it.


The Bigger Picture

MeowEditor exists because ATOH needed it. Running tower obby maps with thousands of platforms, hazards, and decorative primitives at a scale where real players could actually enjoy them without lag — that wasn't possible with any existing tooling. MeowEditor was built to make it possible, and it delivered.

The combination of client-side rendering, aggressive data packing, flexible import formats, and tight integration with the ATOH plugin's Bridge components is what makes the whole Aftermath map experience work the way it does. It's not magic. It's just a lot of engineering that nobody else bothered to do.