Skip to content

akashic init

sh
akashic init [<options>]
akashic init [<options>]

新しく Akashic で動作するゲームをカレントディレクトリに生成します。 このコマンドを実行すると、以下のような対話型のインターフェースが表示され、ゲーム画面の幅・高さおよびゲームの FPS を入力できます。

sh
$ npm install -g @akashic/akashic-cli
$ cd GAME_HOME
$ akashic init
width: (320)
height: (320)
fps: (30)
$ npm install -g @akashic/akashic-cli
$ cd GAME_HOME
$ akashic init
width: (320)
height: (320)
fps: (30)

また、本コマンドは、カレントディレクトリが空でない場合、エラーで失敗することがあります。 (生成されるファイル・ディレクトリが既に存在する場合、エラーでコマンドが失敗します)。

<options>に指定可能なオプションは次のとおりです。

オプション短縮名効果デフォルト値
す。指定なし
--type <type>-t<type> の値に応じたゲームが作成されます。詳細については後述します。javascript
--force-f生成されるファイル・ディレクトリが既に存在する場合でも、エラーにせず上書きします。指定なし
--yes-y対話型インターフェースを表示せずに、デフォルトの設定でゲームを生成します。指定なし
--list-l--type オプションで利用可能なテンプレートのリストを表示します。指定なし
--repository <reponame>-rテンプレートを検索できるリポジトリを指定します。指定なし

--type オプション

<type> に指定できる値は、 以下の通りです。指定しない場合、 javascript が指定されたものとして扱われます。

  • javascript
  • javascript-minimal
  • javascript-shin-ichiba-ranking
  • typescript
  • typescript-minimal
  • typescript-shin-ichiba-ranking

これとは別に、<type>に github:<owner>/<repository> と指定することで GitHub (github.com) からテンプレートを取得することができます。

またローカルマシン内のデータや、独自の Web サーバ上のファイルをテンプレートとして使うこともできます。

javascript

下記のディレクトリ・ファイルを含む JavaScript で書かれたゲームが生成されます。

GAME_HOME
 +- image/
 +- text/
 +- audio/
 +- script/
  +- main.js
 +- game.json
 +- package.json
GAME_HOME
 +- image/
 +- text/
 +- audio/
 +- script/
  +- main.js
 +- game.json
 +- package.json

script/main.js を編集することでゲームの作成が可能です。 これらのディレクトリ・ファイルの詳細は  init で作られるファイル  の節を参照してください。 このゲームではサンプルとして以下のような処理が行われています。

  • スプライトの表示
  • 音を鳴らす
  • タッチイベント定義

javascript-minimal

最低限の処理しか記述されていない空のゲームが生成されます。 script/main.js を編集することでゲームの作成が可能です。

javascript-shin-ichiba-ranking

ニコ生ゲームのランキングに対応したゲームの雛形が生成されます。 script/main.js を編集することでゲームの作成が可能です。基本的に script/_bootstrap.js を編集する必要はありません。 このゲームでは、script/main.jsmain 関数の引数 param に以下の値が新たに付与されています。

ランキングモードに対応したニコ生ゲームの作り方については、こちらを参照してください。

typescript

TypeScript で書かれたゲームと、ビルドに必要なディレクトリ・ファイルが生成されます。 これらをビルドすることで、game ディレクトリ以下に Akashic で動作するゲームを生成します。 ビルドの方法は、生成される README.md を参照してください。

ゲームの内容は、--type javascript を指定した場合に生成されるゲームと同一です。

typescript-minimal

--type tyepescript と同様に、TypeScript で書かれたゲームと、ビルドに必要なディレクトリ・ファイルが生成されます。

ゲームの内容は、--type javascript-minimal を指定した場合に生成されるゲームと同一です。

typescript-shin-ichiba-ranking

--type tyepescript と同様に、TypeScript で書かれたゲームと、ビルドに必要なディレクトリ・ファイルが生成されます。

ゲームの内容は、--type javascript-shin-ichiba-ranking を指定した場合に生成されるゲームと同一です。

GitHub リポジトリからのテンプレート生成

--type github:<owner>/<repository> と指定した場合、GitHub からテンプレートを取得することができます。private repository など認証が必要な場合は akashic configinit.github.protocolssh に設定してください。

sh
akashic config set init.github.protocol ssh # 初回のみ。認証を必要としない場合は不要。
akashic init -t github:your-orgs/your-repo
akashic config set init.github.protocol ssh # 初回のみ。認証を必要としない場合は不要。
akashic init -t github:your-orgs/your-repo

また ghe:<owner>/<repository> と指定することで GitHub Enterprise からテンプレートを生成できます。 GitHub Enterprise の URL は akashic config により設定できます。

sh
akashic config set init.ghe.host your.company.com # 初回のみ
akashic init -t ghe:your-orgs/your-repo
akashic config set init.ghe.host your.company.com # 初回のみ
akashic init -t ghe:your-orgs/your-repo

akashic init では以下の設定を利用します。設定は akashic config コマンドを利用して行います。

プロパティ名内容デフォルト値
init.repositoryテンプレート配信サーバの URL。空文字列の時はサーバを利用しません。空文字列
init.defaultTemplateTypeテンプレートの種類が省略されたときに利用するテンプレート名。javascript
init.localTemplateDirectoryローカルファイルシステムでテンプレートを保存する場所。$HOME/.akashic-templates/
init.github.hostGitHub のホスト名。github.com
init.github.protocolGitHub からプロジェクトを clone する際のプロトコル。https または ssh が指定可能。https
init.ghe.hostGitHub Enterprise のホスト名。指定なし
init.ghe.protocolGitHub Enterprise からプロジェクトを clone する際のプロトコル。https または ssh が指定可能。https

ローカルマシンや Web サーバ上のテンプレートからの生成

開発ツール » akashic init テンプレート利用ガイド を参照してください。

アクセス確認と保存

-t gihtub:ghe:-r オプションで URL へアクセスする場合はプロンプトにて確認を行います。 プロンプトにて URL へのアクセスを許可した場合は、$HOME/.akashicrc へ最大 4 件保存します。5 件目を保存する場合は、最初の 1 件目が削除されます。 また、保存されている値とオプションで指定された値が同じ場合は、確認のプロンプトをスキップします。

init で作られるファイル

内容はテンプレートに依存します。 javascriptjavascript-shin-ichiba-ranking で生成される主なファイル・ディレクトリは以下のとおりです。

image ディレクトリ

画像素材を配置するディレクトリ。

サポートされる拡張子は png/jpg であり、拡張子と画像フォーマットは一致している必要があります。それ以外の拡張子のファイル、または "." から始まるファイルは無視されます。

text ディレクトリ

テキスト素材を配置するディレクトリ。

サポートされる拡張子は特に指定がないため、 "." から始まるファイル以外はすべて取り込まれます。 取り込まれないファイルを指定する方法は検討中。

audio ディレクトリ

音楽、効果音など、音素材を配置するディレクトリ。

サポートされる拡張子は .ogg, .m4a と .aac であり、拡張子とファイルフォーマットは一致している必要があります。それ以外の拡張子のファイル、または "." から始まるファイルは無視されます。

他の素材と異なり、音素材は、ファイル名の拡張子部分のみが異なる複数のファイルをまとめて取り扱います。 ゲームの実行環境に応じて適切な形式が自動的に選択されます。 主要な実行環境をサポートするために、次のいずれかの組み合わせでファイルを置いてください。

  • Ogg Vorbis 形式 (.ogg) と M4A 形式 (.m4a)
  • Ogg Vorbis 形式 (.ogg) と AAC 形式 (.aac)

script ディレクトリ

スクリプト素材を配置するディレクトリ。

サポートされる拡張子は.js と.json であり、拡張子とファイルフォーマットは一致している必要があります。それ以外の拡張子のファイル、または "." から始まるファイルは無視されます。

慣習として、各 Scene を実装するファイルは、このディレクトリ内に "Scene.js" という接尾辞をつけて配置される事が推奨されます(例: titleScene.js, battleScene.js)。

main.js ファイル

ゲームの処理が記述されているファイル。

このファイルを編集することによってゲームを作成することが可能です。

_bootstrap.js ファイル

--type javascript-shin-ichiba-ranking を指定した時(もしくは --type typescript-shin-ichiba-ranking を指定後ビルドした時)のみ作られるファイルです。 このファイルがエントリーポイントとなりますが、ゲーム開発者がこのファイルを編集することは基本的にありません。 ここで行っていることは、以下の通りです。

  • セッションパラメータの取得
  • main.js に自動的に遷移

game.json ファイル

ゲームの各種情報を記述するファイル。

akashic init --type javascript-minimal を実行した直後は以下のような内容になっています。 (ただし width, height, fps は init で指定した値)

json
{
  "width": 480,
  "height": 480,
  "fps": 30,
  "assets": {
    "mainScene": {
      "type": "script",
      "path": "script/main.js",
      "global": true
    }
  }
}
{
  "width": 480,
  "height": 480,
  "fps": 30,
  "assets": {
    "mainScene": {
      "type": "script",
      "path": "script/main.js",
      "global": true
    }
  }
}

詳細な仕様はリファレンス » game.json の仕様を参照してください。