Phaser AE

Screwed plates

Free packv3.0.0-12DPhysics

Plates screwed to a board in layers: the mechanic every screw puzzle shares. It answers what is covered, what is held, what swings and what falls, on real rigid-body physics, and leaves the rules of a particular game to the pack or game on top.

This is a Free pack. Every phaser.io account can use it in their games.

Released October 19, 2026

Screwed plates: a screenshot of its demo
A note about these graphics

Expansion packs don't come with graphics. This screenshot is one way of drawing what the pack does, made for its demo: none of the sprites, tiles or backgrounds in it are in the pack.

That's by design. A pack is a game's logic, mechanics and effects, and it works with whatever art you give it. Some packs draw effects, backdrops or 3D scenes of their own, but none carries a game's sprites.

So the look is yours. Make the art on phaser.io, bring your own, or let your agent draw it in code: the same pack can look like anything.

What it does

You create a stack from a spec: the board's holes, the plates and the screws. A plate is any polygon, concave too, on a layer, with holes of its own; a screw sits in a board hole and fastens every plate whose hole lies over it, within a tolerance. A screw is covered while a plate on a higher layer lies over its head, and it cannot come out until that plate has gone.

Take screws out and the physics takes over. A plate held by two or more screws stays put; held by one, it swings round it; held by none, it falls off the board. The plates are real rigid bodies on a physics-2d world that belongs to the stack, so they turn and settle as a player expects, and a plate balanced over its last screw gets a small push rather than standing there for ever. A screw that is out can be put into a free hole, or moved straight from one hole to another, and fastens whatever plates line up there.

The stack knows nothing of colours, boxes, moves or winning. It reports what happened as events (a screw out, a screw in with the plates it fastened, a plate pivoting, falling or gone) and says where everything is: plates() with their outlines, holes, state, centre and angle, and screws() with their positions, the plates they fasten and whether they are covered. Your game draws them.

Features

  • Plates of any shape — any polygon, concave included, with holes of its own, on layers.
  • Coverage — a screw is covered while a higher plate lies over its head, worked out from where the plates are now.
  • Held, pivoting, falling, gone — each plate's state follows from its screws, on real rigid bodies.
  • Moving screws — remove, place into a free hole, and move from one hole to another, each fastening what lines up.
  • Free holes — free(hole) and freeHoles() find holes with no screw and no plate's solid part over them.
  • Events — out, in, pivot, fall and gone, drained after each step.
  • Validation — create throws listing every problem, and validate returns them as sentences.
  • Colours as data — plates and screws carry a colour for rules that sort by it.

Good for

  • Screw-sorting puzzles — tap screws out into colour boxes, with the screw-sort rules.
  • Screw-moving puzzles — move screws between holes until every plank falls, with the screw-relocate rules.
  • Screw puzzles with rules of your own — a different win, scoring or parking rule on the same plates and screws.
  • Bolted pieces in other puzzles — a panel held by screws that swings loose and drops as they are taken out.

Make it yours

The spec is the configuration, and the pack has no options of its own: the board's size, holes anywhere on it, any number of plates on any number of layers, any number of screws, tolerance (12 units) for how near a plate's hole must be to a board hole to fasten there, and gravity (900).

Two different uses: a sorting game where bars, squares and discs in four layers are held by coloured screws that the player taps out, and the rules on top decide where each screw goes; and a relocation game where planks lie across a grid of holes with two spare holes, and the player moves screws into the spare holes so that one plank drops while another is caught.

A quick look

A bar on two screws, one taken out so it swings on the other:

const stack = game.plateStack.create({
    width: 600, height: 800,
    holes: [{ id: 'h1', x: 120, y: 200 }, { id: 'h2', x: 480, y: 200 }, { id: 'h3', x: 560, y: 600 }],
    plates: [{ id: 'bar', layer: 0, points: [[100, 180], [500, 180], [500, 220], [100, 220]], holes: [[120, 200], [480, 200]] }],
    screws: [{ id: 'a', hole: 'h1' }, { id: 'b', hole: 'h2' }],
});
stack.remove('a');                 // the bar swings on b
game.step('stack', dt => stack.step(dt));
for (const e of stack.drain()) if (e.kind === 'fall') thud();

Works with

  • screw-sort — the rules of a screw-sorting game on these plates.
  • screw-relocate — the rules of a screw-moving game on these plates.
  • physics-2d — the rigid-body world each stack plays on, and the pack for bodies and joints in general.

Good to know

  • Plates pass over and through each other: they hang from their screws and collide with nothing, as plates on separate layers do in these games.
  • Coverage is worked out from where the plates are now, so a swinging plate can cover a screw for a moment.
  • It is 2D, in the board's own units with y down, and it draws nothing.

More Physics packs

Show all →