Skip to main content

Boards

Board geometry decides how tiles connect. TileTangle can render classic 15×15 grids, sparse graphs, or layered 3D stacks. Explore a few shapes below; open the full Playground to tweak everything.

Board Shapes
3W
3W
3W
3W
3W
3W
3W
3W
3W
3W
2W
2W
2W
2W
2W
2W
2W
3W
3W
2W
3L
2L
3L
2W
3W
3W
2W
2L
2L
2W
3W
3W
2W
2L
2W
2L
2W
3W
3W
2W
2L
2W
3W
3W
2W
3L
2L
3L
2W
3W
3W
2W
2W
2W
2W
2W
2W
2W
3W
3W
3W
3W
3W
3W
3W
3W
3W
3W
Inactive cells show as dimmed; labels indicate 2L/3L/2W/3W bonuses.
2W
3W
2L
3L
W = word multiplier, L = letter multiplier.
Open in PlaygroundStarts with hex adjacency enabled.

Rectangular layouts

The simplest layout is a RectBoardLayout with a width × height. Rect boards support bonus grids, anchor discovery, and cross-checks out of the box. A JSON excerpt:

"board_layout": {
"type": "rect",
"width": 15,
"height": 15,
"bonuses": {"(7,7)": {"word_mul": 2}}
}

Rect boards can accept a graph overlay to remove cells or add custom edges without rebuilding the whole state.

Graph overlays (holes, hex, custom adjacencies)

Setting type: "graph" replaces the implicit north/east/south/west adjacency with an explicit node and edge list. Nodes are stored in render order (x/y coordinates drive the UI) while edges carry optional dir tags that the engine and UI use to label lines.

"board_layout": {
"type": "graph",
"width": 9,
"height": 9,
"nodes": [{"x": 4, "y": 0}, {"x": 5, "y": 0}, {"x": 4, "y": 1}],
"edges": [
{"a": 0, "b": 1, "dir": "E"},
{"a": 0, "b": 2, "dir": "SE"}
]
}

This variant covers hex grids, triangular boards, and arbitrary graphs (e.g., puzzles carved into regions). All move generation, adjacency validation, and CPU search routines operate on the same graph abstraction, so custom geometry retains full solver support.

3D layers

For towers or cube variants, use type: "3d" with an additional depth field. The engine flattens the layers internally (each cell knows its z index) and the Playground exposes a slice selector for visualization.

"board_layout": {
"type": "3d",
"width": 5,
"height": 5,
"depth": 3,
"bonuses": {"(2,2,1)": {"letter_mul": 3}}
}

Rules and dictionaries remain unchanged—3D boards reuse the same validation hooks, scoring multipliers, and AI search heuristics. You can still apply graph overlays on top of 3D slices for tunnels or missing cells.

Dive deeper