finds.dev← search

// the find

OndrejNepozitek/Edgar-Unity

★ 906 · C# · MIT · updated Apr 2026

Unity Procedural Level Generator

Edgar is a Unity plugin for procedural 2D dungeon generation that uses a graph-based approach: you define a level graph (how many rooms, how they connect), and it fills in room templates you've authored by hand. It's aimed at game developers who want structural guarantees — boss room always at the end, shop always in the middle — while still getting layout variety. The .NET core algorithm lives in a separate library, so the Unity layer is mostly editor tooling and post-processing hooks.

The graph-based constraint model is the genuinely useful idea here — most proc-gen tools give you a random blob and make you prune it; this one lets you specify the topology upfront and solves for a valid layout. The separation between Edgar-DotNet and the Unity layer is clean architecture: the algorithm isn't tangled into MonoBehaviours. The post-processing hook system is practical — you get a callback after placement with the full generated layout, which is how you'd actually spawn enemies, loot, and lighting without fighting the generator. Documentation is thorough with worked examples that mirror real games (Dead Cells, Enter the Gungeon), which saves a lot of guesswork.

The hard cap of ~30 rooms is a real constraint, not a soft recommendation — the constraint solver gets exponentially slower as the graph grows, and the docs admit some graphs may simply fail to generate. Coroutines (to avoid freezing the main thread during generation) are paywalled behind the PRO version, which is a strange choice to lock away — any production game needs this. The alpha tag on v2 isn't cosmetic; the README warns about breaking API changes and recommends not touching the installed package directory, which is a sign the abstraction isn't stable yet. It's also strictly 2D tilemap; if your art direction moves toward 3D or non-tilemap rendering, you're on your own.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →