#

## jgame.jsとは

jgame.jsとは、ファミコン時代から続く日本のお家芸とも言えるゲーム作成を、web環境で実現するためのJavaScriptで動作するフレームワークです。
現在市場に多く出ている最大30fps程度のflashゲームではなく、家庭用ゲーム機で動いているような60fpsの本格的なゲームを作るために作られました。

より詳しい情報は、sourceforge.jpにて提供されているプロジェクトWebサイトをご参照ください。
http://sourceforge.jp/projects/jgame-js/

## 本リファレンスの役割

本リファレンスでは、jgame.jsで利用される各クラスのパラメータなどを解説しています。
簡単な利用ガイドもつけていますが、あくまでもリファレンスであるため、チュートリアルとしてではなくクラスの挙動を詳細に確認するための参考文献としてご利用ください。

## 利用ガイド

### 最初の一歩

もし、あなたがはじめてjgame.jsに触れるのであれば、本リファレンスではなくまずはサンプルを見る事を推奨します。
http://jgame-js.sourceforge.jp

一通りサンプルをご覧になった後は、実際にjgame.jsをダウンロードして、手元においてみてください。
また、サンプルのHello Worldを実際に作って実行してみる事を推奨します。

Hello Worldが実行出来たら、リファレンスを読む準備が整いました。
クラスの検討がついていれば直接各クラスの説明を、まだクラスの検討がつかない場合は以下を参考に色々なクラスの説明をご覧ください。

### キャラクターを動かしたい

jgame.jsのキャラクターは２種類あります。
最も基本的なキャラクターはSpriteクラスです。
Spriteをより発展させ、日本のRPGでよく見られる足踏みなどをデフォルトで行うようにしたのがCharacterです。
これらのクラスを画面上に配置すれば、キャラクターはゲームに登場します。なおキャラクターを自由に動かすためにはアニメーションが必要ですが、アニメーションについては別項を参照してください。

### マップを作りたい

マップを作る際はTileクラスが参考になります。

### 文字を描きたい

文字を描くならLabelクラスをご一読ください。
なお、画像を文字として扱う（ビットマップフォント）機能は現在サポートされていません。

### 図形を描きたい

図形は円を描く機能と、四角形を描く機能がShapeクラスで提供されています。
これ以外の複雑な図形については、HTML5のCanvasの説明を見ながら、別途自分でクラスを作る必要があります。

### アニメーションをさせたい

アニメーションの処理で最も有用な文書はTimelineです。サンプルを見直すと、Timelineの有効な活用方法を見る事が出来ます。
また、Timelineクラスは元々enchant.jsという別プロジェクトで提供されていた物をjgame.jsに取り込んでいるため、もしもこのリファレンスの情報が不足していたらtl.enchant.jsというものを調べてみると、有用な知識を入手出来るでしょう。
tl.enchant.jsについては、下記の記事などがいいでしょう。
http://wise9.jp/archives/7418

### キーボード入力を処理したい

キーボードの処理は、GameクラスのinputDown、inputUpのイベントが担当しています。
イベントの仕組み自体はTriggerクラスが参考になるでしょう。
また、それらのイベントでどのようなパラメータが受け取れるかは、InputKeyboardEventクラスの解説が役に立ちます。

### マウスやタッチ入力を処理したい

マウスとタッチは、jgame.jsでは合わせてPointingEventと呼ばれています。
これらのイベントは、キーボートと同じようにGameクラスのinputDown、inputUp、それからinputMoveイベントで処理されています。
また、ゲーム全体ではなくキャラクター個別にタッチ処理を行いたい場合、EクラスのinputDown、inputUp、inputMoveイベントが有用です。
これらのイベントでどのようなパラメータが受け取れるかは、InputPointEventクラスの解説が役に立ちます。

### レイヤーを使いたい

レイヤーの利用はLayerクラスの記述が役に立ちます。
レイヤーは便利な仕組みですが、ソフトウェアでエミュレートされた機能であるため、速度を最大限まで追求する場面（例えば戦闘の場面など）で速度低下の原因になります。注意して利用してください。

### シーンを使いたい

タイトル画面と実際のゲーム画面など、シーンを切り替えたいケースでは、Sceneクラスの機能が役立ちます。

### リソースについて知りたい

画像はGameクラスのrメソッドと、Resrouceクラスで処理されています。
画像の読み込み処理はLoadingSceneクラスが参考になります。

### サウンドを再生したい

jgame.jsではSimpleSoundに最低限のサウンドサポート機能が搭載されています。
しかしサンプルにも記載がありますが、SoundJSなど別ライブラリを利用する方が綺麗な音を出しやすいでしょう。

### より綺麗な描写を研究したい

このリファレンスにはありませんが、プロジェクトのWikiで描かれているsetDrawOptionについてという項目が参考になるかもしれません。
jgame.jsはHTML5で提供されるCanvasに依存するライブラリであるため、Canvasについて研究する事も有用です。
画像を加工したい場合、ImageFilterの記述が役に立つかもしれません。

### 衝突判定をしたい

簡単な衝突判定はJGUtilクラスのintersectやgetDistanceで出来るかもしれません。
複雑な衝突判定は、Eクラスのx, y, width, heightフィールドの値を基に、独自で計算する必要があります。

### 画像が欲しい

制作チームの力不足で、現在jgame.jsはデフォルトの素材を提供出来ておりません。画像については用意していただく必要があります。
参考までに、インターネット上で「ゲーム 素材」などと検索すると、RPGツクールなどのために公開されている素材を見つける事が出来ます。

### TypeScriptについて知りたい

残念ながらこのリファレンスでは解説されていません。
フレームワークのdoc/build.txtに最低限の説明がありますが、TypeScriptについては別の文献で学ぶ必要があります。

### スマートフォンで動かしたい

動くように作っていますが、製作チームの主に資金的な力不足でテストが出来ていません。
スマートフォンで実行して、その結果をフィードバックいただければ大変開発の助けになります。

## 注意事項

本リファレンスは、jgame.jsにおける開発優先の方針のため、必ずしも最新の内容を記述する事を保証する事はありません。

本リファレンスを参考にしつつ、実際に動作テストを行い、挙動がおかしい場合にはメーリングリストなどに問い合わせてみる事をお勧めします。