Commit ec250ecb authored by Chris Molozian's avatar Chris Molozian Committed by Mo Firouz
Browse files

Add Lua script runtime for custom code. Allow users to store publicly readable data. Merged #70

Fetch users by handle.
Add friend by handle.
When listing leaderboards, optionally filter by ID.
parent 6fd1a4bd
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -5,13 +5,23 @@ The format is based on [keep a changelog](http://keepachangelog.com/) and this p

## [Unreleased]
### Added
- Lua script runtime for custom code.
- Node status now also reports a startup timestamp.
- New matchmaking feature.
- Optionally send match data to only a subset of match participants.
- Optionally send match data to a subset of match participants.
- Fetch users by handle.
- Add friend by handle.
- When listing leaderboards, optionally filter by ID.
- Allow users to store publicly readable data.

### Changed
- The build system now suffixes Windows binaries with `exe` extension.

### Fixed
- Set correct initial group member count when group is created.
- Do not update group count when join requests are rejected.
- Use correct type in leaderboard record write best operation.
- Correctly store global storage data.

## [0.12.2] - 2017-04-22
### Added
+2 −0
Original line number Diff line number Diff line
@@ -66,6 +66,8 @@ $(PLATFORMS):
		echo "  Packaged '${OUTDIR}-$@-${arch}'";\
	)

windows: BINNAME := $(BINNAME).exe

.PHONY: relupload
relupload: JQ := $(shell jq --version)
relupload: TOKEN :=
+29 −10
Original line number Diff line number Diff line
@@ -2,31 +2,42 @@

> Distributed server for social and realtime games and apps.

### Features

* **Users** - Register/login new users via social networks, email, or device ID.
* **Storage** - Store user records, settings, and other objects in collections.
* **Social** - Users can connect with friends, and join groups. Builtin social graph to see how users can be connected.
* **Chat** - 1-on-1, group, and global chat between users. Persist messages for chat history.
* **Multiplayer** - Realtime, or turn-based active and passive multiplayer.
* **Leaderboards** - Dynamic, seasonal, get top members, or members around a user. Have as many as you need.
* **Runtime code** - Extend the server with custom logic written in Lua.

For more information have a look at the [documentation](https://heroiclabs.com/docs/) and for a quick list of build targets run `make help`.

If you encounter any issues with the server you can generate diagnostics for us with `nakama doctor`. Send these to support@heroiclabs.com or [open an issue](https://github.com/heroiclabs/nakama/issues).

### Start server

Have a look at our [documentation](https://heroiclabs.com/docs/start-server/) for a full introduction on how to run Nakama in development and/or production.
Have a look at our [documentation](https://heroiclabs.com/docs/running-nakama/) for a full introduction on how to run Nakama in development and/or production.

To start a server locally and bind it to all network interfaces once it's installed and on your path - `nakama`. The server output will show how it's been configured by default.
To start a server locally and bind it to all network interfaces once it's installed and on your path - run `nakama`. The server output will show how it's been configured by default.

```
$> nakama
[I] Nakama starting at=$$now$$
[I] Node name=nakama-97f4 version=$$version$$
[I] Data directory path=$$datadir$$
[I] Dashboard url=http://127.0.0.1:7351
[I] Client port=7350
[I] Startup done
{"level":"info","ts":"$$timestamp$$","msg":"Node","name":"nakama-97f4","version":"$$version$$"}
{"level":"info","ts":"$$timestamp$$","msg":"Data directory","path":"$$datadir$$"}
{"level":"info","ts":"$$timestamp$$","msg":"Database connections","dsns":["root@localhost:26257"]}
{"level":"info","ts":"$$timestamp$$","msg":"Evaluating modules","count":0,"modules":[]}
{"level":"info","ts":"$$timestamp$$","msg":"Ops","port":7351}
{"level":"info","ts":"$$timestamp$$","msg":"Dashboard","url":"http://127.0.0.1:7351"}
{"level":"info","ts":"$$timestamp$$","msg":"Client","port":7350}
```

### Run Nakama with Docker

Follow the [guide](https://heroiclabs.com/docs/setup/docker) to run Nakama (and CockroachDB) in Docker.
Follow the [guide](https://heroiclabs.com/docs/install/docker/) to run Nakama (and CockroachDB) in Docker.

<a href="https://heroiclabs.com/docs/setup/docker"><img src="https://upload.wikimedia.org/wikipedia/commons/7/79/Docker_%28container_engine%29_logo.png" width="170"></a>
<a href="https://heroiclabs.com/docs/install/docker/"><img src="https://upload.wikimedia.org/wikipedia/commons/7/79/Docker_%28container_engine%29_logo.png" width="170"></a>

Nakama Docker images are available on [Docker Hub](http://hub.docker.com/r/heroiclabs/nakama/). If you'd like to publish your own Docker image have a look at our [Docker README](https://github.com/heroiclabs/nakama/blob/master/install/docker/README.md).

@@ -34,6 +45,14 @@ Nakama Docker images are available on [Docker Hub](http://hub.docker.com/r/heroi

Nakama can be deployed to any cloud with Docker Cloud such as AWS, Google Cloud, Azure, Digital Ocean or your own private cloud. You'll need to setup Docker Cloud and provision separate nodes for Nakama and CockroachDB.

### Production deployments

Nakama server uses cockroachdb as its database server. You're responsible for the [uptime](https://en.wikipedia.org/wiki/Uptime), [replication](https://en.wikipedia.org/wiki/Replication_(computing)), [backups](https://en.wikipedia.org/wiki/Backup), logs, and upgrades of your data.

You also need to update the Nakama server with every new release and configure the server to auto-scale. If you use our Docker releases follow along with the "latest" image tag and check for new releases once a month.

[Using our managed cloud service](https://heroiclabs.com/managed-cloud/) helps save you time, development costs, and eliminates managing your own clusters which is simpler and cheaper as you grow. We recommend our [Managed cloud](https://heroiclabs.com/managed-cloud/) if you're running production games or apps.

### Contribute

To build the codebase you will need to install these dependencies:
+10 −8
Original line number Diff line number Diff line
hash: 150ab75d51b17b2fb2b097193ea43bac8e07dfcb8ce0905c115be7e71639f506
updated: 2017-04-13T23:43:22.128299698+01:00
hash: eaca7acd10cdfdd13ddd0fcf302c626a8b7a450c13970abbbd1fac319f02c2ad
updated: 2017-05-24T13:55:34.751285113+01:00
imports:
- name: github.com/armon/go-metrics
  version: 97c69685293dce4c0a2d0b19535179bbc976e4d2
@@ -9,6 +9,8 @@ imports:
  version: 9a6736ed45b44bf3835afeebb3034b57ed329f3e
  subpackages:
  - '...'
- name: github.com/fatih/structs
  version: a720dfa8df582c51dee1b36feabb906bde1588bd
- name: github.com/go-gorp/gorp
  version: 4deece61034873cb5b5416e81abe4cea7bd0da72
- name: github.com/go-yaml/yaml
@@ -40,16 +42,16 @@ imports:
  - sqlparse
- name: github.com/satori/go.uuid
  version: b061729afc07e77a8aa4fad0a2fd840958f1942a
- name: github.com/uber-go/atomic
  version: 3b8db5e93c4c02efbc313e17b2e796b0914a01fb
- name: github.com/uber-go/zap
  version: a2773be06b9ac7c318a3a105b5c310af5730c6b4
- name: github.com/yuin/gopher-lua
  version: b402f3114ec730d8bddb074a6c137309f561aa78
  subpackages:
  - zapcore
  - ast
  - parse
  - pm
- name: go.uber.org/atomic
  version: 4e336646b2ef9fc6e47be8e21594178f98e5ebcf
- name: go.uber.org/zap
  version: a2773be06b9ac7c318a3a105b5c310af5730c6b4
  version: fab453050a7a08c35f31fc5fff6f2dbd962285ab
  subpackages:
  - buffer
  - internal/bufferpool
+4 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ import:
  version: v2
- package: github.com/armon/go-metrics
- package: go.uber.org/zap
  version: ~1.1.0
  version: ~1.4.0
- package: go.uber.org/atomic
  version: ~1.2.0
- package: github.com/satori/go.uuid
@@ -43,3 +43,6 @@ import:
  - '...'
- package: github.com/gorhill/cronexpr
  version: ~1.0.0
- package: github.com/yuin/gopher-lua
- package: github.com/fatih/structs
  version: ~1.0.0
Loading