Sprites for shoot ’em ups

In a shmup everything moves fast, so sprites have to read at a glance. A top-down camera, a clear silhouette and strong colours do most of the work.

A spaceship under thrust, rendered by Pixor
An explosion, rendered by Pixor
A power orb pulsing, rendered by Pixor
Viewtop-down
Size48 px ships, 16–32 px bullets and pickups
Sides1
Shoot 'em up ship: the sheet this sample project renders

Sample project

Shoot 'em up ship: the .pixor project and its library model (CC0). The sheet on the left is what it renders.

What a shmup needs

A shoot ’em up needs a player ship, waves of enemies, a few large bosses, bullets, pickups and a lot of explosions. Backgrounds scroll underneath. Because everything moves quickly and the screen gets crowded, each sprite has to be readable from its outline and colour alone.

Ships are hard to draw by hand from straight above, because the shape has to suggest depth without perspective. A 3D model rendered from above gives you correct shading on every panel for free.

The camera

Use a top-down view. The camera looks straight down at the ship, which faces up the screen. For a horizontal shmup, the same idea applies with the ship facing right.

48 px suits a player ship: big enough for a cockpit, wings and engine glow, small enough to leave room to dodge. Small enemies can be 32 px; bosses can be much larger. Bullets and pickups are usually 16 to 32 px. See sprite sizes.

One side is enough for most ships. If you want banking frames, add a few cameras or animate the roll on the model.

Scale and pivot

Keep one pixels-per-metre scale for regular ships so they relate to each other. Bosses can use their own project if they need to be shown larger than life. Put the pivot at the centre of the ship, which is usually where the game checks for hits. Pixor fixes the pivot to one pixel, so the ship does not wobble between frames.

Animation

Ships need only a few loops: engine thrust, a hit flash and an explosion. A thrust loop of four frames is enough. Explosions can be longer, as they play once. Pickups can spin, bob or pulse to draw the eye. Pixor holds flicker down between frames, so small, fast loops stay steady. See animation.

Palette

Shmups depend on contrast. Keep backgrounds darker and lower in saturation, give the player ship its own colour, and make enemy bullets the brightest thing on screen. Selective outlines help ships stand out from busy backgrounds. Light bands give metal panels crisp, readable shading. Pixor has seven palettes built in and reads Lospec .hex and GIMP .gpl files. See palette ramps.

Free library assets that fit

Setting it up in Pixor

  1. Import your model, or open the shmup sample.
  2. In the Scene step, click the camera “South” in the Outliner. Its “Game” setting sets it up for a kind of game in one click; choose a shmup.
  3. Check View, Pitch, Width and Height. One camera is usually enough.
  4. In the Action step, pick the animation, such as the ship’s thrust.
  5. In the Style step, pick the look.
  6. Export writes the sheet. Pixor can also export a GIF for sharing; see exports.

Questions

Why only one side?

In most vertical shmups the player's ship always faces up the screen and enemies face down. One camera covers that; the engine can rotate or flip sprites for the rest.

Can I show the ship banking left and right?

Yes. Animate the bank on the model and render it as its own animation, or render the ship from a few slightly different angles by adding cameras.

What size should bullets be?

Small, but bright and high in contrast. They are often the most important thing on screen, so they need to read before anything else.

Read next

Try it on your own model, free in your browser, or get the full version.

Try in browser Get Pixor