Phaser AE

Rim shooters

Pro packv3.0.0-32DArcade

The rules of tube and rim shooters: a claw on the near rim of a web of lanes, enemies climbing toward it from the far end, and a superzapper for emergencies. Webs, enemies, levels, power-ups and the bonus round are all data, and two classic games ship as presets built from their released source code.

This is a Pro pack. Upgrade to Phaser Pro to use it in your games.See Phaser Pro →

Released October 14, 2026 · updated October 20, 2026

Rim shooters: 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

The playfield is a web: any open or closed silhouette of lanes, running from a near rim to a far end. Lanes are numbered, depth runs from 0 at the rim to 1 at the far end, and a closed web wraps round. The claw steps exactly one lane per tap, accelerates when held, or glides to a lane under a pointer or spinner, and always settles on a lane centre. It fires repeatedly down its lane with a cap on shots in flight, and with the right power-up it jumps above the rim under gravity.

Enemy kinds each run one of eight behaviours, with every parameter exposed. Flippers climb by a climb program, straight, random, spiral, chase, zigzag or avoid, then chase along the rim. Tankers split into their cargo. Spikers lay spikes and retreat. Fuseballs ride lane edges and can only be hit mid-cross. Pulsars electrify their lane on the level's pulse. Sparks run the rim, mirrors reflect shots back down the lane, and UFOs hover above the rim zapping lanes. Demon heads and mutant flippers are flipper kinds with extra hit and rim parameters, so a new enemy is usually a new set of numbers.

Around that sit the rule sets that make a full game: a superzapper with one full clear and then single random kills each level, power-up tokens that fly toward the rim after every so many kills, the fly-down between levels where a spike in your lane kills you, and a warp bonus round of rings that can skip levels. Everything runs headless at a fixed step, reports events through drain, and is the same for a seed and an input sequence.

Features

  • Any web — open or closed, up to 256 lanes, from 37 and 16-web libraries or generateWeb's polygons, stars, ellipses, lines, arcs, zigzags and spirals.
  • A precise claw — one lane per tap with queued taps, held acceleration, pointer or spinner targeting, rapid fire and an optional jump.
  • Eight enemy behaviours — flippers, tankers, spikers, fuseballs, pulsars, sparks, mirrors and UFOs, plus enemies that fire up their lane.
  • Climb programs — straight, random, spiral, chase, zigzag and avoid, set per kind and per level.
  • Superzapper — a full clear then single random kills each level, optionally recharged after a death.
  • Power-ups — particle laser, jump, an autonomous helper droid, superzapper recharge, bonus points, warp tokens and a rare clear-the-level bonus, in a sequence you set.
  • Fly-down and bonus round — a dive between levels past the spikes, and a ring run that warps levels ahead.
  • Levels as data — enemy totals, timed or quota releases, the most on the web at once, speeds, fire, initial spikes, pulse rate and power-up rate per level, with a loop point after the last.
  • Scoring and starts — kind scores, spike hits, extra lives, and skill-step start levels with a bonus on clearing them.
  • Drawing helpers — webView and perspective for presenters, and validation for any web.

Good for

  • Tube shooters in the style of the 1981 arcade Tempest, with its sixteen wells and skill contour.
  • Neon tube shooters in the style of Tempest 2000, with power-ups, a helper droid and a warp bonus round.
  • Tube shooters of your own design, with a custom roster, generated webs and your own progression.
  • Short arcade sessions on tiny or flat webs, with quota releases and few lives.
  • Spinner or pointer controls, since the claw can glide to an absolute lane as well as step.

Make it yours

tempest2000Preset takes lives, the extra-life interval, power-ups on or off, the bonus round, a speed scale, the webs and a seed; tempestPreset takes lives, the extra-life interval, an easy, medium or hard difficulty, the webs and a seed. Any field of the returned config can then be replaced: the web library and the web per level, palettes, enemy kinds and every behaviour parameter, the level list, the claw, hit tolerance, spikes, the superzapper, lives, power-ups, fly-down, bonus round, start levels, timings and message texts. withWebs puts any list of webs on every level of a definition.

The same rules run very different games. One is the classic sixteen-well arcade climb with its own enemy contour and skill-step starts. Another is a six-lane open zigzag with two enemy kinds of your own, quota releases, no superzapper and two lives. A third keeps the classic level contour but plays it on a 24-lane generated star.

A quick look

A game from the preset, the frame loop and the helpers for drawing the web:

const rs = game.rimShooter;
const g = rs.createRimShooter(rs.tempest2000Preset());     // or rs.tempestPreset()
g.reset(1);                                                   // a start level
g.tick(dt, { move: -1 | 0 | 1, target: laneOrNull, fire, zap, jump, aimX, aimY });
for (const e of g.drain()) { /* level-start, message, enemy-killed, split, token, power, zap, flydown, ring, player-died ... */ }
const s = g.state;                                            // claw, enemies, shots, spikes, tokens, droid, score, lives, level ...
const view = rs.webView(g.web);                               // unit-space rim, eye, far ratio for drawing
const scale = rs.perspective(depth, view.far, camera);        // where a depth sits between the rim and the eye

Works with

Good to know

  • The pack draws nothing; your presenter reads the state and uses webView and perspective.
  • One player; the sequel's duel and other modes, two-player alternation, attract mode, sound and the high-score table are not modelled.
  • The bonus round is a ring run standing in for the sequel's track-following rounds.
  • Each web's eye position and depth ratio are judged from the sources and screenshots, not taken from the cabinet's camera arithmetic.
  • It is not for free-roaming or scrolling shooters, or for radial formation shooters.

More Arcade packs

Show all →