geometric packing game (tetris-ish) on an icosahedron
rad-cohesion docs board-subdivision.md
2.7 kB · 43 lines
Markdown

Board subdivision #

The board splits each of the 20 original icosahedron faces into k² triangles. New game in the game toolbar has an Edge subdivision k input for any whole number from 1 through 16. The same setting can be supplied on a game launch URL as ?k=7; the launch command is consumed after the board starts. New boards default to k=4, giving 16 cells per parent face and 320 cells total. In the setup dialog, choose Free Play to create an empty board at that size without a timer. The dialog initially selects the current mode and subdivision. Free Play also has a subdivision input above the shape choices: choose a size and press New empty board to stay in Free Play at the new size. The selected shape is highlighted in the tray; the Now panel appears only in Timed mode. Changing size creates a new empty board; save a layout as a scenario before replacing it if you want to keep it.

k=1 is available for experiments. Each original face is one cell. Each ordinary four-cell piece fills and immediately clears all four faces, leaving an empty board after every placement. In timed play, each placement earns the four-face Moniamond reward. The rules are unchanged for this small board.

The placement index stores legal placements for every piece and every board cell. Its memory use grows with k²; measurements of the complete board and session reached about 284 MiB of JavaScript heap at k=16 on the development host, and rose to about 557 MiB at k=22. The current browser and server limit is therefore an explicit k=16. The setup accepts every integer in that range, not a preset list. Both the game and 2D view use the selected subdivision; the 2D cell-state texture is laid out in two dimensions to avoid a narrow-texture hardware limit.

New checkpoints, local scenarios, and finished runs store their subdivision. Local libraries retain records for multiple sizes together. Public scenario and run records require an explicit subdivision, including 4 for the default board. Missing subdivision metadata is rejected. The board fingerprint and challenge identity keep each size in its own validation and leaderboard category.

For a one-time update of records from the original k=5 board, add subdivision: 5 at the top level of published scenarios and inside setup.initialBoard of finished runs. This metadata does not change board fingerprints or scenario/challenge identities, but editing a published record changes its CID. Update pinned scenario CIDs in run records and saved links to the edited revision. Existing local checkpoints, scenarios, and results must also have explicit subdivision metadata or be recreated; there is no automatic migration.