# モジュールについて

## モジュールとは

jgame.jsは標準的な構成以外に、いくつかのモジュールによる機能拡張をサポートしています。

version 0.4現在、まだ貧弱なモジュール機能しか無いため新規モジュールの開発を推奨出来る状態ではありませんが、既存のモジュールを利用して特別な機能を付与させる事は出来ます。

## jgb2モジュール

jgb2というモジュールを利用する事で、box2dによる物理エンジンをjgame.jsに取り込む事が可能です。
https://github.com/tsugehara/jgb2
動作にはbox2dwebが別途必要になります。

jgb2はサンプルにも収録されている、jgame.jsで一番最初にサポートされたモジュールであり、一番期待されているモジュールでもあります。
モジュールの利用を検討する場合、まずこのモジュールを試験的に導入してみるのがいいでしょう。

## ImageFilter

ImageFilterというモジュールを利用する事で、描画した内容の加工が出来るようになります。
ver1.0現在jgame.js本体に結合されています。追加ダウンロードの必要はありません。詳しくはAPIリファレンスをご覧ください。

ImageFilterモジュールはblurやグレースケールといった、一般的な画像加工の手段を提供します。

## jgengine

jgengineというモジュールを利用する事で、基本的なゲームエンジン部分を置換したゲームが作れるようになります。
https://github.com/tsugehara/jgengine

フレーム単位でゲームを管理したい、描画ループとメインループを別にしたいといった要望に応えます。
また、Gmaeクラスの継承方法のサンプルとしても活用出来ます。

## BML

BMLというモジュールを利用する事で、弾幕シューティングで利用する弾丸をjgame.js内に呼び出すことが出来ます。
https://github.com/tsugehara/BML
これは、bulletml.jsをjgame.jsに移植したものです。

BMLは元々jgame.jsのパフォーマンス検証用として作られました。以下のサンプルが、jgame.jsとBMLモジュールによって実装されています。
http://tsuge.sub.jp/jgame.js/BML/index.html

## レーダーAIモジュール

Rader AIというモジュールを利用する事で、逐次実行とレーダーによる基本的なAIのひな形をjgame.jsに取り入れる事が出来ます。
https://github.com/tsugehara/rader-ai

Rader AIモジュールはあくまでもAIのひな形であるため、ゲームに関する情報や、AIが思考した結果の行動結果などはゲーム側で作る必要があります。
AIについてすでにある程度知識がある開発者向けのモジュールです。

## gl2d

gl2dというモジュールを使うとwebglで描画出来るようになるといいですね。
https://github.com/tsugehara/gl2d

残念ながら完成していません。

## モジュール以外のライブラリ

jgame.js専用のモジュール以外に、いくつか利用を推奨しているライブラリもあるため、下記にて簡単に紹介します。

- SoundJS
  http://www.createjs.com/#!/SoundJS
  SoundJSはサウンド再生を強力にサポートしてくれるライブラリです。5.1chなど、リアルなサウンドサポートには有用なライブラリです。
- typescript-astar
  https://github.com/tsugehara/typescript-astar
  経路探索アルゴリズムの一つ、A*をTypeScriptに移植したものです。
- AutoSugoroku
  https://github.com/tsugehara/AutoSugoroku
  自動的にすごろくマップを作るためのライブラリです。