<p align="center">
<img src="img/akashic-sandbox.png"/>
</p>

# Akashic Sandbox

Akashic Sandboxは、 [Akashic Engine](https://akashic-games.github.io/) を使って作成されたゲームの動作確認ツールです。

## インストール

Node.js が必要です。次のコマンドでインストールできます。

```
npm install -g @akashic/akashic-sandbox
```

## 利用方法

```
akashic-sandbox [-p <port>] [--cascade<cascade-path>] [<path>]
```

で、 `<path>` に置かれているAkashicのゲームを起動できます。
出力される案内にしたがって、Webブラウザで `http://localhost:3000/game/` を開いてください。

`<path>` には `game.json` が存在する必要があります。省略された場合、 `<path>` はカレントディレクトリ (`.`) です。
`-p` オプションを指定すると、サーバのポート番号を変更できます。たとえば `-p 3100` とした場合、 Webブラウザで開くURLは `http://localhost:3100/game/` になります。

`--cascade <cascade-path>` を与えると、 `path` にある game.json に対して `<cascade-path>` にある game.json がカスケードされます。
`--cascade` を複数指定した場合、指定した順でカスケードされます。

Akashic Engineの詳細な利用方法については、 [公式ページ](https://akashic-games.github.io/) を参照してください。

## Akashic Engine 2.0 を利用したコンテンツの起動方法

`game.json` に以下の記述を追加すると、対象のゲームを Akashic Engine 2.0 として実行します。

```js
{
..
	"environment": {
		"sandbox-runtime": "2"
	}
}
```

## 表示オプション

* http://localhost:3000/game/?profiler=1 にアクセスすると、プロファイラー表示モードでゲームを実行することができます
* http://localhost:3000/game/?fit=1 にアクセスすると、画面を最大まで拡大した状態でゲームを実行することができます
* http://localhost:3000/game/?bg=1 にアクセスすると、バックグラウンドとゲームに色をつけた状態でゲームを実行することができます

## デベロッパーメニュー

* ゲーム画面右上の歯車マークをクリックするとデベロッパーメニューが開きます。
* http://localhost:3000/game/?devmode=disable にアクセスするとデベロッパーメニューを無効化できます。

## 設定ファイルの利用

コンテンツの `game.json` と同じディレクトリに `sandbox.config.js` を置いた場合、実行時の挙動をカスタマイズできます。

```js
var config = {
	/** ゲーム実行時にeventsの同名メンバーをイベントとして送信します */
	autoSendEventName: "event0",
	/** ゲーム実行時にデベロッパーメニューを開きます */
	showMenu: true,
	/** デベロッパーメニューに登録済みのイベントとして表示します */
	events: {
		event0: [32, null, "9999", {foo: "foo"}, false],
		event1: [32, null, "9999", {var: "var"}, false]
	}
}
module.exports = config;
```

## ビルド方法

**akashic-sandbox** はTypeScriptで書かれたJSモジュールであるため、ビルドにはNode.jsが必要です。

`npm run build` にてビルドできます。

```sh
npm install
npm run build # src/以下をビルド
```

## 内部モジュールの更新方法

akashic-sandbox は、以下の内部モジュールのコードをリポジトリ内に直接保持しています。
* @akashic/engine-files

また、これらのコードには Akashic Engine v1 系と v2 系が存在します。

akashic-sandbox の開発者がこれらのコードを更新するには次のコマンドを実行してください。

```sh
npm run update
```

## 内部モジュールの動作確認方法

akashic-sandbox を用いて内部モジュール (とくに [engine-files](https://github.com/akashic-games/engine-files)) の動作確認を行いたい場合、以下の手順を行ってください。

* 別で生成した engine-files のビルド成果物 `engineFilesV{version}.js` を `./js/v2/` または `./js/v1` にコピーします。
  * バージョンが異なる場合は `./engine-src/engineFilesVersion.json` をビルドした engine-files に合わせてください。

## テスト方法

1. [TSLint](https://github.com/palantir/tslint "TSLint")を使ったLint
2. [Jasmine](http://jasmine.github.io/ "Jasmine")を使ったユニットテスト

が実行されます。

```sh
npm test
```

## ライセンス

本リポジトリは MIT License の元で公開されています。
詳しくは [LICENSE](./LICENSE) をご覧ください。

ただし、画像ファイルおよび音声ファイルは
[CC BY 2.1 JP](https://creativecommons.org/licenses/by/2.1/jp/) の元で公開されています。
