Resource gathering + programming game
Go to file
2021-09-15 06:39:21 -05:00
.github/workflows create initial CI workflow 2021-08-29 17:32:30 -05:00
app factor out remaining UI + app stuff 2021-08-23 16:52:40 -05:00
data add the Blocked command and a rangefinder entity for the capability 2021-09-14 22:24:49 -05:00
example convenience definition 2021-09-13 10:04:48 -05:00
images use a more exciting and up-to-date image for the README 2021-09-05 21:40:49 -05:00
src/Swarm remove unused code 2021-09-15 06:10:48 -05:00
.gitignore ignore HIE and stan stuff 2021-09-04 09:21:12 -05:00
.hlint.yaml add a .hlint.yaml 2021-08-27 22:30:31 -05:00
.stan.toml exclude some stan observations 2021-09-15 06:39:21 -05:00
CHANGELOG.md new name: swarm 2021-08-23 11:47:04 -05:00
LICENSE clean up .cabal file and add LICENSE 2021-08-26 21:05:46 -05:00
README.md note polymorphism in the README 2021-09-09 14:37:14 -05:00
ROADMAP.md cross some finished things off the ROADMAP 2021-09-09 16:52:39 -05:00
stack.yaml tweaks to world, shift to spawn base at a tree 2021-09-04 07:19:22 -05:00
swarm.cabal load recipes from a data file 2021-09-13 10:04:35 -05:00

Swarm

Swarm is a 2D programming and resource gathering game. Program your robots to explore the world and collect resources, which in turn allows you to build upgraded robots that can run more interesting and complex programs.

The implementation is still in a very early stage, but planned features include:

  • 2D, infinite, procedurally generated worlds
  • Simple yet powerful programming language based on the polymorphic lambda calculus + recursion, with a command monad for describing first-class imperative actions
  • In-game tutorial
  • Multiple game modes:
    • In Classic mode, you start with the ability to produce only very basic, limited robots; collecting resources allows you to bootstrap your way into programming more sophisticated robots that can explore more of the world, collect more resources, etc.
    • Hardcore mode is like Classic mode, but you start with only a limited number of robots. If they get stuck or you run out of resources, it's game over!
    • Sandbox mode places no restrictions: program robots to your heart's content using whatever language features you want, without worrying about collecting resources.
    • In Challenge mode, you attempt to program robots in order to solve pre-designed puzzles or challenges.
    • Future versions might also have multiplayer modes, with co-op or PvP play over a network...?

Installing

Warning: Swarm is still in a very early stage; it's still missing many of the planned features and has no help or tutorial system at all. But you can program cute little robots, and hey, that's all that really matters, right?

The recommended way to install Swarm at the moment is as follows:

  1. Clone the Swarm repository, e.g.

    git clone https://github.com/byorgey/swarm.git
    
  2. Get the ghcup tool.

  3. Use ghcup to install the stack tool:

    ghcup install stack
    
  4. Now use the stack tool to build and run Swarm:

    cd /path/to/the/swarm/repo
    stack run
    
  5. Go get a snack while stack build downloads a Haskell compiler and builds all of Swarm's dependencies.

  6. Have fun!

Contributing

If you want to help out, you're most welcome! There are lots of ways to contribute, regardless of your Haskell background. For example, even someone with no Haskell experience whatsoever could still help with e.g. game design, playtesting, and level design for challenge mode.

Eventually, this space will probably describe a lot more specific kinds of tasks, there will be an issue tracker with things labeled as good first ways to contribute, etc. For now, though, if you're interested to help out, just get in touch (see my email in my GitHub profile, or contact me via IRC---byorgey on Libera.Chat).