Skip to content

Manual and mixed layouts

Automatic layout is a good starting point when you know the contents but not their arrangement. Keep more control when the way you use the game calls for it: a card area on the left, a compartment block you have already designed, or a tray with an exact footprint.

You can fix just those decisions and leave others open. A completely manual project is useful when you already know the entire layout. Both approaches use the same box, material, and component information from your project.

Use an automatic project when BGI should still search any of the layout. Choose a constraint that describes what actually matters:

Keep this decisionUseWorked example
An assembly at a particular positionfixed_origin_mm, or fixed_assembly_origins for fixed assembliesA fixed and an automatic grid
A requirement in a particular position within a supported patternfixed_slotsA fixed position in a crossing layout
A finished block of compartments, with its dividers and sizesfixed_subtreesFixed card and dice blocks
A fixed outer division with areas still to arrangeinterior_templateA card column beside automatic areas

These choices are different. A fixed compartment block can move as a unit within its surrounding grid; a fixed frame preserves the positions and sizes of its regions. Separate assemblies have separate floors and walls. A fixed block within one assembly shares that assembly’s construction.

The project still uses layout.mode: auto: run the same search and selection process as before. Fixed choices are constraints on that search. They do not need a separate build followed by an attempt to join output files.

With layout.mode: manual, you provide the compartment tree and every assembly’s position. BGI then makes the panels, joints, and cutting paths from that arrangement.

A tree starts with either one compartment or a split. A split divides its space into first and second along X (left to right) or Y (front to back). The parent dimensions include the divider between its children.

For the cards and tokens in Full example, you could choose the following assembly instead of its automatic one. This is a replacement assemblies section, not a complete file:

assemblies:
- id: insert
kind: grid
construction: open_grid_box
assembly: glue_allowed
members: [cards, tokens]
interior:
id: compartments
kind: split
axis: x
clear_mm: [113, 95, 32]
first:
id: card-compartment
kind: compartment
clear_mm: [70, 95, 32]
contents: [cards]
second:
id: token-compartment
kind: compartment
clear_mm: [40, 95, 32]
contents: [tokens]

The two widths and the 3 mm divider add up to 70 + 3 + 40 = 113 mm inside. Both compartments share the 95 mm depth and 32 mm clear height. With the floor and outer walls, the assembly measures 119 × 101 × 35 mm. The token compartment is larger than its minimum requirement because this division gives both compartments the same depth.

Replace the layout section too:

layout:
mode: manual
construction_mode: full_box
placements:
- id: insert
origin_mm: [1, 1]
rotation_deg: 0

The origin places the assembly’s outside corner 1 mm from the left and front of the game box. Use local_groups instead of full_box when placing several assemblies or existing containers, and give each one a placement. Dimensions and clearances explains the coordinate and size conventions.

A manual project already contains the chosen arrangement, so build it directly:

Terminal window
bgi build game.bgi.yaml --output insert-bundle

Review the output as described in Choose and build a layout, then calibrate and make the parts. If you later want automatic alternatives, change the intended automatic interior and the top-level layout section together. A saved candidate JSON is an output recipe, not a manually editable compartment tree.

A removable tray uses kind: tray and requires space around its walls for removal. It can contain the same supported manual compartment divisions as a grid. You also specify its placement and, for a stack, its layer and support. Arrange designed trays explains the requirements and how BGI can compare placements once the tray designs are complete.