Map Editor · Draw Groups
How Drawgroups and Displaygroups Work in DSMapStudio
How Drawgroups and Displaygroups Work in DSMapStudio
You placed an object, saved, loaded the game — and it's not there. Nine times out of ten the object exists and is correctly positioned; it just isn't being drawn, because its draw groups don't line up with the area's display groups. This is FromSoftware's system for deciding what renders where, and it's the single most confusing part of map editing. Once the model clicks, "my object is invisible" stops being a mystery and becomes a one-field fix.
What they are
A FromSoftware map is split into many pieces, and the game doesn't render them all at once — far too expensive. Instead, every object and every piece of collision carries a set of group flags: a long row of on/off slots (a bitfield across several integers, giving many possible groups). Two kinds use the same slots:
- Display groups live on collision — the surfaces you walk on. They answer: "While standing here, what's allowed to be visible?"
- Draw groups live on objects, map pieces, and enemies. They answer: "Which areas is this thing allowed to be visible from?"
Neither is a position or a distance — they're matching tags. The game uses them to switch whole chunks of the map on and off as the player moves.
The rule
An object is drawn when one of its draw groups matches one of the display groups currently active, and the active set comes from the collision the player is standing on. The chain:
- The player stands on a piece of collision.
- That collision's display groups become the active set.
- Every object whose draw groups share at least one slot with that set is rendered and activated.
- Objects with no overlap aren't drawn — they effectively don't exist for the player there.
In one line: collision display groups ∩ object draw groups ≠ ∅ → the object appears. Empty overlap means invisible. That intersection is the whole system.
Draw vs display
| Draw groups | Display groups | |
|---|---|---|
| Set on | Objects, map pieces, enemies | Collision (the floor) |
| Answers | "Where can this be seen from?" | "What's visible while standing here?" |
| Drives | Whether the object renders/activates | Which draw groups are active for the player |
| If mismatched | Object invisible / never spawns | Player sees nothing from that spot |
Same slot numbering, so "matching groups" just means turning on the same slot(s) on both sides.
Why your object is invisible
Add a new object — or duplicate one and move it somewhere new — and it keeps whatever draw groups it was created with. If those don't overlap the display groups of the collision the player will actually stand on in the new spot, it never renders. That's how a freshly placed enemy can be perfectly positioned yet completely absent in-game: not deleted, not mispositioned, just no group in common with where the player is. The opposite bug — an object showing up where it shouldn't — usually means draw groups that are too broad, overlapping display groups across multiple areas.
The easy fix — copy a neighbor's groups
You rarely need to reason about specific slots. Copy the draw/display groups from an object that already belongs in the area. Pick a nearby existing object or enemy that renders correctly, read its draw groups, and give yours the same set — because that neighbor already matches the local collision's display groups, yours will too. This is the deeper reason place enemies recommends duplicating a nearby enemy: duplication carries the right groups along for free, so the copy renders where the original did.
Editing groups in DSMapStudio
Select an object and find its draw groups (or a collision's display groups) in the properties panel — they're part of the object's MSB data, shown as a grid of toggles representing the slots. Toggle a slot to add/remove the object from that group. To match a neighbor, read its enabled slots and set the same ones. Substantially reworking a map's layout means revisiting groups so every newly placed object shares a slot with the display groups of wherever the player stands to see it. Save and test — if something's still missing, its groups are the first thing to check.
That's the system behind every "why won't my object show up." Put it to work in place enemies, give each placed object a unique entity ID, and return to the Map Editor hub. Still invisible after matching groups? The troubleshooting hub covers the wider set.