Phaser AE

First-person weapon art

Pro packv3.0.0-02D and 3DLookNew

The weapon in the player's hands, drawn as period pixel art: nineteen weapons across four sets, each with the hands that hold it, a muzzle flash and a kick when it fires, and a picture of it lying on the floor to pick up.

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

Released October 24, 2026

First-person weapon art: 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

A first-person shooter needs its weapons on screen before anything else looks finished. This pack has them ready. It covers every weapon the corridor and sector shooter sets use, from fists and knives to a rotary gun and a fire staff, each in the hands of its own set: olive combat sleeves for the classic set, armoured gauntlets with glowing trim for the modern one, shirt cuffs for the corridor raid, leather bracers for the crypt.

Each weapon is one picture, and its frames are built from it when it loads, so they line up exactly. A gun flashes at the muzzle and kicks, then kicks further as the flash dies. An automatic alternates two flashes while the trigger is held. A blade or a fist strikes and comes back, and the staff bursts into flame at its crystal and glows. One call picks the frame to show from the weapon's own recoil, so the animation follows the shots. A second picture shows each weapon lying on its side, for the pickup on the floor.

Weapons are found by name. A set's own weapon ids find their own art, and any other id finds the closest by the words in it: a heavy shotgun wears a shotgun, a magic wand the staff, an SMG the machine gun.

Features

  • Nineteen weapons, four sets — fists, knife, dagger, blade; pistols and a revolver; shotgun, scattergun and blunderbuss; chaingun, rotary gun, machine gun, nail gun and plasma rifle; rocket and grenade launchers; a crossbow and a fire staff.
  • Hands that match the set — combat sleeves, armoured gauntlets, shirt cuffs or leather bracers.
  • Frames that fire — idle, flash and kick for guns, alternating flashes for automatics, strikes for blades and fists, a burst and glow for the staff.
  • Three kinds of flash — gunpowder, plasma and magic.
  • Pickups — each gun lying on its side, ready for a billboard in the world.
  • Found by name — exact matches for the preset sets, a sensible guess for anything else.
  • Frame by recoil — one call turns the arsenal's recoil into the frame to show.

Good for

  • A corridor or sector shooter — the weapons of corridor-shooter and sector-shooter in hand straight away.
  • A prototype or a jam game — weapons that look the part while the real art is made, then replaced key by key.
  • A shooter with its own weapon list — name-matching dresses most weapons without any mapping.

Make it yours

Choose the set to look in first, or name the picture for each weapon yourself, so a game can mix a classic pistol with a crypt crossbow. The atlas keys for views and pickups take any prefix. The kick (how far a shot knocks the gun down) and the size of the muzzle flash are options. Every picture is painted under a key a game can paint over with its own art later. The pictures themselves stay as they were drawn: for weapons in another palette, make them again from the prompts.

A quick look

Load the classic set's weapons, then show the right frame as the arsenal fires.

const art = await game.weaponArt.load(['pistol', 'shotgun', 'chaingun'], { set: 'classic' });
const gun = game.spawn({ texture: art['shotgun']!.key, x: 480, y: 420, width: 480, height: 320, layer: 'hud' });
game.frame('gun', () => {
    const info = art[arsenal.current.id]!;
    gun.frame = game.assets.frames(info.key) + game.weaponArt.frame(info, arsenal.view, game.time);
});

Works with

Good to know

  • The pictures were made once with an image model and ship with the pack as 256-colour PNG data, about 650 KB in all. They are not generated at run time, and the same prompts give different pictures if made again.
  • Decoding the pictures needs a browser; on a server or in tests the frames exist but are blank.
  • Views are 384 by 256 pixels and pickups 128 by 64.
  • The muzzle flash sits at the highest point in the middle of the picture, which is the tip of any weapon that points ahead.

More Look packs

Show all →