Alien Invasion!

Alien Invasion!

Download link: download [1.16 MB]


Alien Invasion! is a side-scroller shoot-em-all arcade game that was made for a school assignment on object oriented programming. It was written in C++ using pure Win32 API and GDI. The game is built on top of a simple 2D engine called the XEngine which I made just for this occasion. Unlike many earthly games, the player assumes the role of an invading flying saucer commander and his goal is to eliminate all defending earth forces by shooting them while trying not to get shot.

While the game features only two short levels the user can create own levels. New levels can be created in Notepad and added to the game easily. See level creation guide at the end of this page.

Alien Invasion! - gameplay
Gameplay screenshot.
Alien Invasion! - main menu
Main menu.

Installation instructions

  • Use the download link on the top of this page, save and extract the .zip file anywhere you like and run.
  • Should run on any version of Windows.


  • In main menu: use arrow keys to navigate the menu, press Enter to select option.
  • In game: use arrow keys to move the ship, press Space to fire.

Create custom levels

You can create custom levels easily by following this guide. Levels for this game are simple text files and you can edit them using Notepad (or your favourite text editor). Levels are stored in the Data\levels\ sub-folder. The very first level of the game must be named level1.txt.

Each level file starts with three lines followed by an empty line:

  1. Line 1: This is the title of the level which is displayed before the level starts.
  2. Line 2: File name of the level that follows after this level (eg. Data\levels\level2.txt). If this is the last level of the game leave this line empty.
  3. Line 3: This line specifies the background image that scrolls from right to left in the background. The game uses BMP files. Put background files in the Data\backtround\ sub-folder. For example if you want to use Data\backtround\mybg.bmp file as the level bacground, type bg/bybg on the third line (notice the forward slash in the level file).

After the first three lines (and an empty line) you can define an arbitrary number of enemies. Enemies are spawned at the right edge of the screen and travel from right to left. Each enemy is defined by three lines of text followed by an empty line:

  1. Line 1: This number defines the number of pixels from the top edge where the enemy will be spawned.
  2. Line 2: This number defines the time in seconds when the enemy will be spawned. The time is relative to the spawn time of the last enemy spawned before (or to the begining of the level when this is the first enemy).
  3. Line 3: This line specifies the type of the enemy. Possible types are: turbo, scout, monster, scout_f and monster_f. Experiment and see how different enemies behave.