A physical level-design toolkit — the blue set. Fifteen parts, one spool of azure, and every kind of water a table needs: river, lake, ford, pool, waterfall, fountain. Plates and tiles plug together so the ground stops sliding around; everything else is an RPG tile you set down and pick up mid-scene. The plug grid is the base layer. The face of a tile is free.
One connector, one grid, one height. Every part in the system obeys these four numbers, which is what makes a wall printed today fit a tower printed next year.
One grid square, one mini. Wall height is also 25 mm, so 1U cubed is a cube — stacks, decks and floors all land on multiples of the same number.
Pegs sit at half-square intervals. Walls land on grid lines; furniture lands on square centres — both hit the same peg field, so nothing needs its own baseplate.
A LEGO stud is Ø4.8 × 1.8 and there is no reason to be cleverer than that. Socket Ø5.1 × 2.2, 0.4 mm deeper than the peg so it always bottoms on the face. That is the entire mechanical vocabulary of the system.
Walls are 4 mm thick and straddle the grid line. A room's inside dimension is n×25 − 4 mm, which is still comfortable for 25 mm bases.
Fifteen parts, all of them printed in the same azure. Codes are permanent — a part number never changes meaning, so a build list written today still works after the set grows.
Tuned for a Creality Ender-3 V3 SE with the stock 0.4 mm nozzle, in PLA. Two numbers drive everything: the socket diameter, which you tune once with the fit comb, and the 0.8 mm minimum feature the nozzle imposes on every piece of surface detail in the set.
×250 tall. All four print plates in the blue run were laid out for exactly this bed — four 100 mm plates go on in a 2×2 with 6 mm to spare.
Stock brass. Everything in the set is designed around it; no part needs a smaller one, and a 0.6 would lose the contour grooves.
Short filament path, so retractions are small — 0.8 mm is plenty. Good news for the fountain, which is all small islands and travel moves.
Run it before the first 100 mm plate. Big flat first layers are the one thing this machine needs a true bed for, and the plates are your datum for the whole set.
A 0.4 mm nozzle lays a bead about 0.42 mm wide. Anything you want to actually see needs two of them side by side. Every piece of detail in the set was measured against that; four things failed and were resized.
| Feature | Was | Now | Why it had to change |
|---|---|---|---|
| Sea contour groove | 0.5–2.5 | 0.9 mm | A fixed height band cuts a groove whose width depends on the slope — too fine on the flanks, a puddle on flat water. The band is now scaled by the local gradient, so the groove is 0.9 mm wide everywhere. |
| Foam blobs | 0.68 | 0.96 mm | The smallest ones were a single bead wide and would have printed as fuzz. |
| Fountain spray | 0.85 | 1.2 mm | Sub-millimetre spheres in mid-air do not survive; they string. |
| Fountain falls | 1.0 | 1.3 mm | Thin enough to print, too thin to survive being handled by players. |
| Setting | Value | Why |
|---|---|---|
| Layer height | 0.20 mm | Peg height 1.8 = 9 clean layers |
| …for sea tiles | 0.12 mm | B-17 / B-18 only. A real displaced surface terraces badly at 0.2, and terracing fights the contour grooves |
| Perimeters | 3 | Sockets need wall to grip against |
| Infill | 15% grid | Walls stay light; plates stay flat |
| Top / bottom | 4 / 3 | Peg tops must not pillow |
| Supports | none | Nothing overhangs past 45°, by design |
| Brim | off / 3mm | Only for the 100 mm baseplates if edges lift |
| Material | PLA | PETG creeps and the clutch goes slack |
| Speed | 80 mm/s | The SE will do 250; it will not do 250 and hold a 0.9 mm groove. Outer wall 40 |
| Bed / nozzle | 60 / 210 °C | PLA on the PC spring steel plate. No enclosure needed |
| Plate time | ~55 min | One 4×4 baseplate. A 4×4 sea plate at 0.12 is closer to 2½ h |
| Symptom | Fix |
|---|---|
| Walls fall off | Socket too big — drop 0.1 mm |
| Plates crack | Socket too tight — add 0.1 mm, chamfer the mouth |
| Pegs look squashed | Over-extrusion; add a 0.6 mm top chamfer, slow top layers |
| Baseplates rock | Bed not flat — re-run CR Touch, print plates first, they're the datum |
| Grooves vanish | Slowing down is the fix, not more perimeters. Outer wall to 40 mm/s |
| Sea tile curls at a corner | 100 mm of flat PLA on an open machine — brim 5 mm, and keep the door of the room shut |
Nine parts printed in one azure spool, in an order that gets something usable on the table after 45 minutes. Water is the right family to start with: it is all flat plates, it needs no paint to read as water, and a plain baseplate in blue is open sea — so the cheapest part in the set is also the biggest piece of terrain.
Want to see it before you commit filament? Open the 3D viewer — the first two scenes are this batch and nothing else: the parts laid out flat, and the whole run assembled on a table.
Water gets three scales of relief, all of it free because it is all in XY: a rolling swell (0.55 mm, broad and soft), wave lines across it the way a map draws water (0.9 mm wide, 0.95 mm proud), and a few sharper crests on top. Plus the 2 mm recess below the bank. Straight off the bed that reads as water; a dry-brush of white over the crests is the only optional step.
The ford stones (B-14) and the shore edge (B-13) want a grey or sand dry-brush to separate them from the water. They are the only parts in the batch that are not meant to be blue.
The sea tiles (B-17 / B-18) are a real displaced surface, so shallow slopes will show layer terracing. Print those two at 0.12 mm and leave everything else at 0.20 — it costs about forty minutes on the 4×4 and it is the difference between water and a contour map.
Two river plates, a ford and four shore strips already build the Mill Ford layout above. Add the waterfall riser and a river can drop a level — which is when the height rule starts paying for itself.
Forty-eight tiles that would come off the same spool. Azure is not only water — it is also every kind of ice, and it is the colour a table already reads as arcane. Most of these are surface only: the same 4 mm plate outline you are already printing, with a different face on it. Those are close to free, because the face of a tile is the one place this system has resolution to spare.
Everything is one parametric OpenSCAD file. Change U at the top and the entire system rescales — 1-inch grid for hex-and-chit purists, 15 mm for a travel set.
peghold.scad // whole system, one file
U = 25; // one square
WALL_H = 25; // one storey
T = 4; // wall thickness
PEG_D = 4.0; // the connector
SOCKET_D = 4.30; // <- the one number you tune
// render a single part:
part("W-07"); // 2U wall with a doorway
part("B-01"); // 4x4U baseplate
part("P-01"); // round table
// or lay out a whole print plate:
plate(["W-02","W-02","W-02","W-02","W-04","W-04"]);