Table of Contents

Customizing Abstract Play

Abstract Play lets you tune how games look on your account: player piece colours, board drawing colours, optional board layout tweaks, and (advanced) per-game CSS. Settings are saved to your profile and follow you across devices when you are logged in.

Questions? Join Discord in #customization (pinned posts have extra links).

Opening the Customize screen

The page shows a live preview of a sample board for that game (loaded from the site’s thumbnail JSON when available).

Global defaults vs this game

Use the scope control at the top:

Player colours

Build a palette of colours used for player pieces:

Some games show Developer hints under the palette (which slot maps to which player). Those come from the game author, not from wiki palette tables.

My preferred colour

Choose My preferred colour so your pieces use that slot when the game allows. You can set a global default or override it for the current game only.

Board colours

Under Board Colours, pick a property (background, board, strokes, borders, labels, annotations, fill) and set its colour. Help text under each property explains what it affects in the renderer.

These map to the drawing colour context used when the board is rendered.

Board and pieces (advanced)

Expand Board and pieces for renderer overrides:

Fix any preflight errors before saving. The saved render block has a size limit (~8 KiB); trim glyph maps if save is rejected.

Reset board layout overrides clears render overrides for the current scope without deleting your colours.

Custom CSS (advanced)

Expand Custom CSS on the Customize screen to add CSS scoped to this game’s board. Saved CSS is stored on your account when you click Save Settings. Scope selectors to the board wrapper, e.g. div.board._meta_complica (replace complica with the game’s meta id).

Audience: You should already be comfortable with HTML/CSS and your browser’s developer tools. The board DOM is not a stable API — class names, ids, and SVG structure can change as the renderer evolves. Prefer Player colours, Board colours, coordinate label size, and glyph replacements on the Customize screen before reaching for CSS.

Before you write CSS

A second SVG (svg#theStackSVG) appears for some stacking renderers; most games only use theBoardSVG.

CSS variables you may set on the board container (names may change over time):

Do not paste CSS you do not understand. Abstract Play is not responsible for broken layouts from custom CSS. For help, use #customization on Discord.

Custom CSS examples

Paste snippets into the Custom CSS box on Customize, then Save Settings. Adjust selectors for your game and inspect the live board if something does not match.

Change a piece colour (find the symbol id via devtools — inspect a piece → follow href to defs):

symbol#aprender-glyph-82ae1f37b40e1 *[data-playerfill=true] {
    fill: #0f0;
}

Labels (prefer Coordinate label size when opacity/font size is enough):

g#labels text {
    opacity: 0.5;
    stroke: black;
    fill: white;
    font-family: cursive;
}

Gridlines:

g#gridlines line {
    stroke: red;
    stroke-width: 3;
}

Background image (on the board wrapper or the SVG — test which fits your layout):

div.board._meta_complica {
    background-image: url(https://example.com/your-texture.jpg);
}
svg#theBoardSVG {
    background-image: url(https://example.com/your-texture.jpg);
}

This is separate from site theme colours (light/dark chrome), which you can adjust from the navbar theme control — that changes page chrome, not the game board palette.

Implementation details (how CSS is loaded in React, account vs localStorage, renderer wiring): https://docs.abstractplay.com/front/subsystems/customize/

Saving and sharing settings

Power users can edit Settings JSON directly (including render.board, render.glyphmap, render.options) and paste a full blob, then save.