SpaceInvaders icon indicating copy to clipboard operation
SpaceInvaders copied to clipboard

A Haskell game written in Yampa

SpaceInvaders

Build Status Version on Hackage

This is a Haskell Space Invaders game implemented using the Functional Reactive Programming library Yampa.

The game has been created for educational purposes, but tries to feature a substantial amount of the complexity often found in real arcade games. For example, differentiated subsystems for physics/collisions, input, rendering/multimedia, logic, etc.

SpaceInvaders on Debian

Installation

The game is available on hackage and you can install it with*:

$ cabal update
$ cabal install SpaceInvaders
$ export PATH="$HOME/.cabal/bin:$PATH"
$ spaceInvaders

If you want to explore the code and possibly make changes, do the following:

$ cabal update
$ cabal unpack SpaceInvaders        # or git clone https://github.com/ivanperez-keera/SpaceInvaders.git
$ cd SpaceInvaders*                 # Game resources are here
$ cabal install
$ export PATH="$HOME/.cabal/bin:$PATH"
$ spaceInvaders

*Additional notes: For the use of the above installation instructions you need GHC and the command-line interface for cabal. On debian/ubuntu, you can install them with:

$ sudo apt-get install ghc cabal-install

Documentation

To try and make things as clear as possible, the code includes a much haddock documentation and comments as we could reasonably fit. You can compile those with:

$ cabal unpack SpaceInvaders        # or git clone https://github.com/ivanperez-keera/SpaceInvaders.git
$ cd SpaceInvaders*                 # Game resources are here
$ cabal haddock --haddock-executables

Related slides and projects

Educators

If you find this game attractive and would like to use it to teach functional programming or other subjects, we'd be very happy to know about it. We can provide extra material that you can show to students (videos, screenshots, etc.).

Help and collaboration

You can collaborate at least in two ways:

  • File an issue.
  • Write documentation (send a link and/or a pull request).

We would like to call on Haskell programmers, game developers and anyone with an interest in Functional Reactive Programming and/or Game Programming to review the code, ask for clarification when it is not clear enough, and help us improve the game, and the state of FRP/Yampa programming as well.

Author

  • Henrik Nilsson
  • Antony Courtney

Maintainer

  • Ivan Perez