{"id":18078140,"url":"https://github.com/ivanperez-keera/spaceinvaders","last_synced_at":"2025-04-12T11:52:06.191Z","repository":{"id":66270866,"uuid":"46055555","full_name":"ivanperez-keera/SpaceInvaders","owner":"ivanperez-keera","description":"A Haskell game written in Yampa","archived":false,"fork":false,"pushed_at":"2024-03-07T11:01:36.000Z","size":3019,"stargazers_count":26,"open_issues_count":4,"forks_count":15,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-03-26T06:34:35.931Z","etag":null,"topics":["frp","functional-reactive-programming","game","haskell","opengl","yampa"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivanperez-keera.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-12T13:43:58.000Z","updated_at":"2024-10-11T05:10:15.000Z","dependencies_parsed_at":"2024-10-31T12:22:51.390Z","dependency_job_id":null,"html_url":"https://github.com/ivanperez-keera/SpaceInvaders","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanperez-keera%2FSpaceInvaders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanperez-keera%2FSpaceInvaders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanperez-keera%2FSpaceInvaders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanperez-keera%2FSpaceInvaders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivanperez-keera","download_url":"https://codeload.github.com/ivanperez-keera/SpaceInvaders/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248565013,"owners_count":21125413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frp","functional-reactive-programming","game","haskell","opengl","yampa"],"created_at":"2024-10-31T12:12:45.702Z","updated_at":"2025-04-12T11:52:06.177Z","avatar_url":"https://github.com/ivanperez-keera.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpaceInvaders\n\n[![Build Status](https://travis-ci.org/ivanperez-keera/SpaceInvaders.svg?branch=master)](https://travis-ci.org/ivanperez-keera/SpaceInvaders)\n[![Version on Hackage](https://img.shields.io/hackage/v/SpaceInvaders.svg)](https://hackage.haskell.org/package/SpaceInvaders)\n\nThis is a Haskell Space Invaders game implemented using the Functional\nReactive Programming library Yampa.\n\nThe game has been created for educational purposes, but tries to feature a\nsubstantial amount of the complexity often found in real arcade games. For example,\ndifferentiated subsystems for physics/collisions, input, rendering/multimedia, logic, etc.\n\n![SpaceInvaders on Debian](screenshots/gameplay.gif?raw=true)\n\n## Installation\n\nThe game is available on [hackage](https://hackage.haskell.org/package/SpaceInvaders) and you can install it with*:\n\n```\n$ cabal update\n$ cabal install SpaceInvaders\n$ export PATH=\"$HOME/.cabal/bin:$PATH\"\n$ spaceInvaders\n```\n\nIf you want to explore the code and possibly make changes, do the following:\n\n```\n$ cabal update\n$ cabal unpack SpaceInvaders        # or git clone https://github.com/ivanperez-keera/SpaceInvaders.git\n$ cd SpaceInvaders*                 # Game resources are here\n$ cabal install\n$ export PATH=\"$HOME/.cabal/bin:$PATH\"\n$ spaceInvaders\n```\n\n*__Additional notes__:\nFor the use of the above installation instructions you need [GHC](https://www.haskell.org/ghc/) and the [command-line interface for cabal](https://github.com/haskell/cabal/tree/master/cabal-install). On debian/ubuntu, you can install them with:\n\n```\n$ sudo apt-get install ghc cabal-install\n```\n\n## Documentation\n\nTo try and make things as clear as possible, the code includes a much haddock\ndocumentation and comments as we could reasonably fit. You can compile those with:\n\n```\n$ cabal unpack SpaceInvaders        # or git clone https://github.com/ivanperez-keera/SpaceInvaders.git\n$ cd SpaceInvaders*                 # Game resources are here\n$ cabal haddock --haddock-executables\n```\n\n## Related slides and projects\n\n* Paper: [The Yampa Arcade, by Antony Courtney, Henrik Nilsson, and John Peterson](http://www.cs.nott.ac.uk/~psznhn/papers.html#hw2003). Used to explain FRP to new audiences.\n* Talks: [The Yampa Arcade, Haskell Symposium 2003](http://www.cs.nott.ac.uk/~psznhn/Talks/HW2003-YampaArcade.pdf).\n* Talks: [FRP Games and Music, 2016](http://www.cs.nott.ac.uk/~psznhn/Talks/7digital-July2016-IntroductionToFRPAndYampaThroughGamesAndMusic.pdf) (also available as [handout](http://www.cs.nott.ac.uk/~psznhn/Talks/7digital-July2016-IntroductionToFRPAndYampaThroughGamesAndMusic-4up.pdf)). Makes some comparisons with Cycle.js and XStreams.\n* Talks: [Lectures on FRP, 2010](http://www.cs.nott.ac.uk/~psznhn/ITU-FRP2010/ITU-FRP2010.html). Includes SpaceInvaders as an example.\n* Projects: [Yampa](http://github.com/ivanperez-keera/Yampa), the Arrowized Functional Reactive Programming implementation created by Henrik Nilsson and Antony Courtney.\n* Projects: [Haskanoid](https://github.com/ivanperez-keera/haskanoid), a game that uses SDL multimedia, wiimote and kinect. It's cross platform and works in desktop, mobile, and [web](http://ivanperez-keera.github.io/haskanoid/haskanoid.jsexe/index.html) (compiled with [GHCJS](https://github.com/ghcjs/ghcjs)).\n* Projects: [Magic Cookies](https://github.com/keera-studios/magic-cookies), a commercial FRP game written in Haskell using Yampa available on [iTunes](https://itunes.apple.com/us/app/magic-cookies/id1244709871) and [Google Play for Android](https://play.google.com/store/apps/details?id=uk.co.keera.games.magiccookies\u0026hl=en).\n\n## Educators\n\nIf you find this game attractive and would like to use it to teach functional\nprogramming or other subjects, we'd be very happy to know about it. We can\nprovide extra material that you can show to students (videos, screenshots,\netc.).\n\n## Help and collaboration\n\nYou can collaborate at least in two ways:\n\n* File an [issue](https://github.com/ivanperez-keera/SpaceInvaders/issues).\n* Write documentation (send a link and/or a pull request).\n\nWe 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.\n\n## Author\n\n* Henrik Nilsson\n* Antony Courtney\n\n### Maintainer\n\n* Ivan Perez\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanperez-keera%2Fspaceinvaders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanperez-keera%2Fspaceinvaders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanperez-keera%2Fspaceinvaders/lists"}