# tracer

**Diclaimer:**

Tracer is an ongoing project, which is still under heavy development.

## About the project

This is my first attempt at a game, which is not a clone or port of anything.

I've been working on it since February 2018 and is to date not finished. The
game itself is written entirely in [Haskell](https://haskell.org), using my own
game engine [Affection](https://github.com/nek0/affection).

I aim to get the game into a presentable, playable state in September 2018 for
the conference [Datenspuren](https://datenspuren.de/2018). But there is still
quite a lot to do until then...

## About the game

In this game you play an anonymous hacker/spy for hire. You have recently been
hired to steal the database of a company. The database is stored offline 
on-site at the company's headquarters, where you set out to intrude using means
of social engineering.

## Building

For building the game you need an installation of `ghc` and `cabal-install`.

### NixOS

There is a `shell.nix` file to build you a nix-shell environment as build
environment. There is only one assumption in this file:

Aou have to have a recent version of
[Affection](https://github.com/nek0/affection) lying right beside the project
folder. I have not yet released the needed version of the engine on hackage.

To get the build environment, just run

```
nix-shell shell.nix
```

in a console from the project's folder.

After the environment has been built, run 

```
cabal run
```

to build and run the game's executable.


### Other GNU/Linux systems

#### System dependencies

To get the build environment, make sure you have a recent version (>= 8.4.3)
of `ghc` installed acompanied by a matching `cabal-install`. Both of these are
available from <https://haskell.org> in a bundle called `haskell-platform`. You
can also check your system's package manager for it.

Additionally you need the development libraries for:

* sdl2
* libglew

#### Haskell sandbox

Before you install any haskell packages I recommend highly to build a sandbox
for the project. To do this, invoke

```
cabal sandbox init
```

in a terminal in the project folder.

After that you need to add the source location for the game engine to the
sandbox, which you need to have cloned on your disc beforehand. This is done by

```
cabal sandbox add-source /path/to/affection/
```

Now your sandbox is ready for installing all haskell dependencies by invoking

```
cabal install --only-dependencies -j
```

This may take some time, depending on your hardware.

#### Compiling the game

To compile the game, run

```
cabal build
```

in the sandbox.

#### Running the game

To run the game, invoke

```
cabal run
```

in the sandbox.
