Skip to content

Grid Placement v6.3.0

Actor-Free Placement

When placement needs no actor at all, and how a rule that does need one refuses instead of placing.

Status
Current
Version
v6.3.0
Source updated
2026-10-29
Generated on
2026-10-29

6.3. These pages document the 6.3 release, where placeable is now entry (what changed) and PlacementOwner is deprecated (migration). Still on 6.2? Your version's guides ship inside the plugin itself, under addons/grid_placement/guides/; the 6.2 URLs on this site now redirect to this series.

Development docs. This page describes the unreleased 6.3 build.

Not every placement needs a character. A level editor, a city builder's grid, a room-stacking demo, or a sandbox with no inventory can place objects with nothing bound to placer_root. In 6.3 that is a supported state, not a misconfiguration: session.get_placer_root() returns null and placement works.

The rule is simple: a placer is required exactly when an enabled rule says it is. PlacementRule.requires_placer() returns false by default; rules that read the acting node for range, inventory or spending answer true — for example SpendMaterialsRuleById.

Ask the session, do not guess

var requirement:StringName = session.placer_requirement()
# "" -> this session places fine with no actor
# "spend_materials" -> that enabled rule cannot run without one

placer_requirement() resolves through the same tiers the validator runs, so a rule the profile ignores never demands a placer.

What each state does

State Behavior
No placer, no enabled rule needs one commits normally; reports name no placer
No placer, an enabled rule needs one the commit lane refuses with a typed reason and mutates nothing
Placer bound, rule needs it the rule runs against that node

The refusal is shared by the single-press and drag-release lanes so both describe the gap the same way:

No placer assigned and rule 'spend_materials' requires one. Assign the
positioner's placer_root or call PlacementSession.set_placer_root().

Setup health

Editor setup health reports an unbound placer as optional, with the reason that it is needed only when an enabled rule requires a player. PlacementOwner warnings and a missing-placer runtime issue appear only when the configuration actually demands an actor, so an actor-free scene does not start with a warning it cannot act on.

Choosing

  • No actor-dependent rules? Bind nothing. Delete the placer assignment and the 6.2 PlacementOwner node if you still have one.
  • Range, inventory or cost rules? Bind a placer, and expect a typed refusal rather than a silent placement whenever it is missing or freed.

Do not invent a dummy player node to satisfy the old requirement: nothing in 6.3 reads a placer that no enabled rule asked for.

Using this in a game?

Grid Placement v6.3.0 — full source, playable demos, commercial license

The guide above is the same setup the shipped demos use. Try the build in your browser before you buy it.