# Snek
![Snek icon, Miia from Mon Musu](assets/icon.jpg)

A "simple" Snake, done as my final JS class project

[Original subject](https://perso.liris.cnrs.fr/pierre-antoine.champin/enseignement/intro-js/s6.html)

## Features
- 60 FPS 2D animations
- arcade and speedrun game modes
- touchscreen and controller support
- playable at [snek.codinget.me](https://snek.codinget.me)

## Dev dependencies
- All the POSIX tools, most importantly a POSIX-compliant shell, `echo`, `rm`, `seq` and `sed`
	- Busybox is known to work
	- GNU Coreutils are known to work
	- On Windows, WSL is known to work
- Imagemagick, with the `convert` tool in the PATH
- Make
- Node.js and npm, both in the PATH
	- Node.js 10 and 12 are known to work
	- node-gyp and python are required for the database

## Running the game (dev)
- `git clone` this repo
- `npm install` the dependencies (this will also build the ressources and initialize the database)
- `npm start` the server

## Running the game (prod)
- Get the [Dockerfile](https://gitdab.com/Codinget/Snek/raw/branch/master/Dockerfile)
- `docker build` it
- `docker run -it -p80:3000` the container
- ideally, put it behind a reverse proxy

## License
[MIT](https://opensource.org/licenses/MIT)
