![Logo](https://github.com/rak/rak/raw/master/logo.png)

# User guide
[![Hex.pm](https://img.shields.io/hexpm/dt/rak.svg?style=flat-square)](http://hexdocs.pm/rak)
[![Travis](https://img.shields.io/travis/rak/rak.svg?style=flat-square)](https://travis-ci.org/rak/rak)
[![Coveralls github](https://img.shields.io/coveralls/github/rak/rak.svg?style=flat-square)](https://coveralls.io/github/rak/rak)
[![Discord](https://img.shields.io/discord/395472218525794304.svg?style=flat-square)](https://discord.gg/jAuGsV)

Rak is an Elixir-based framework to help you build, run and maintain custom-built, fault-tolerant game server clusters.

## Features
  
  - Composable: new projects ship with customizable defaults
  - Transparent: just a pinch of syntactic sugar on top of the Elixir we all love
  - Ecosystem-driven: rich library of dependencies and tools to ease up development and operations

Rak's goal is to allow developers to quickly get started, while
allowing for quick and iterative customization at any level. This will both allow Rak to remain small and light while allowing quick-paced development of game servers.

## Installation

### Requirements

  - Erlang/OTP 20 or above
  - Elixir 1.5 or above

## Installation

```shell
mix archive.install https://github.com/rak/rak/raw/master/rak_new.ez
```

## Creating a new project

Once you have the command-line installed, you can now create a project:

```shell
mix rak.new my-game
cd my-game
```

## Configuration

## Application API and Supervision

### Adding 

## Modules

### Creating a new module

### Module structure

### Messages

## Components

### Network layer

### Message

### Session

## Ecosystem

## Client integration

## Deployment

### Service discovery

### Docker