Minilop Retroware

MPAGD kit

MPAGD SHMUPKIT

A Multi Platform Arcade Game Designer project for creating vertical shoot 'em ups, starting with the ZX Spectrum.

Get it on itch.io

What is in it

  • Player ship with left and right movement and upward thrust.
  • Player missiles, fired with a key press.
  • Enemies with movement patterns built from 16 directions.
  • An enemy spawner that controls which enemies appear.
  • A scrolling starfield in the main loop.
  • Lives, a game-over message and a restart screen.
  • Level and attack-wave progression.
  • Key redefinition in the intro menu.
  • A sprite counter and a documented set of global variables.

Dev guide

  1. MPAGD Shmupkit Dev Guide
  2. Variables Reference
  3. Game Initialisation Event
  4. Intro Menu Event
  5. Restart Screen Event
  6. Main Loop 1
  7. Main Loop 2
  8. Initialise Sprite Event
  9. Player Event
  10. Player Missile Event
  11. Enemy Spawner Event
  12. Enemy Event
  13. Enemy Missile Event
  14. Kill Player Event
  15. Lost Game Event

How the kit runs your game

Each frame follows the same path. Select an event to see what it does.

Start up

Every frame: the main loops

Every frame: each sprite

When the game ends

Game Initialisation

The L variable is used to keep track and progress the Levels/Attack Waves of the game, after the player successfully survives a Level it increments to the next on, so, naturally, we want to start at Level 1 (L=1)

Read the Game Initialisation guide

Intro Menu

This is pretty standard MPAGD intro menu, but I've added the redefine keys commands, always let your player redefine their keys!

Read the Intro Menu guide

Initialise Sprite

The important thing here is that we include 'ADD 1 TO S' so that every sprite that gets initialised is added to the Sprite Counter (S) - we use this throughout Shmupkit to ensure we keep track of how many Sprites are currently on Screen, since MPAGD has a maximum of 12 sprites on screen at any one time, HOWEVER, I...

Read the Initialise Sprite guide

Main Loop 1

I've tried to keep the main loop as simple as possible, I've added a starfield travelling downward using the STAR DOWN command.

Read the Main Loop 1 guide

Main Loop 2

Nothing to see here!

Read the Main Loop 2 guide

Player

The player event is quite straightforward. There are controls for left and right movement, thrust upward with the up key, this is restricted to half way up the screen but obviously you can change this.

Read the Player guide

Player Missile

The player Missile is defined in Spite Type 1. It uses a simple 16x16 sprite image, and is launched when the player presses the fire key.

Read the Player Missile guide

Enemy Spawner

This is the engine room of Shmupkit. The Spawner itself is a blank sprite, and it's event controls which enemies should be spawned, where, how many and sets up all the parameters that control the enemy which are passed to the enemy event.

Read the Enemy Spawner guide

Enemy

Aliens perform a movement pattern which are a combination of directional movements, Direction 0-15, each one representing a point on a 16 point compass, and a number of repetitions.

Read the Enemy guide

Enemy Missile

Enemy missiles travel down the screen quite quickly, when they are spawned by an Enemy we pass the enemies direction of travel to the missile and then make the missile veer either left or right accordingly, so if the enemy was going left when they fired the missile then the missile will also veer left.

Read the Enemy Missile guide

Kill Player

What happens when a player is killed?, we decrement their lives and update the lives counter on screen

Read the Kill Player guide

Lost Game

A simple GAME OVER message, similar to the GET READY one in the Restart Screen Event:

Read the Lost Game guide

Restart Screen

This event runs whenever the game first starts or restarts after the player is killed.

Read the Restart Screen guide

Global variables

The variables Shmupkit uses, with the free ones left for your game.

AFree for your own use
BFree for your own use
CEnemy colour
DKills to get bonus
E# enemies in wave
FEnemies left
GEnemy release delay
HEnemy weapon fire probability
IX distance for enemy weapon triggering
JEnemy sprite type
KEnemy image
LLevel/wave
MPlayer x for use in other events
NPlayer y for use in other events
OFree for your own use
PPoints for a kill
QHeight for alien weapon release
RFree for your own use
SSprite counter
TTrigger
UFree for your own use
VFree for your own use
WEnemy weapon
ZMusic (reserved)