環境設定処理
「enforce」では、ゲームの設定に関する情報を「src/environ.coffee」と、「lib/config.ini」に集約させています。
environ.coffee
「src/environ.coffee」では、ゲームの環境設定を行います。
# static values setting ***********************************************************************************
DEBUG = true # デバッグモード
SCREEN_WIDTH = 600 # 画面の幅
SCREEN_HEIGHT = 864 # 画面の高さ
BGCOLOR = "black" # 背景色
OBJECTNUM = 256 # キャラの最大数
FPS = 60 # FPS
GRAVITY_X = 0.0 # box2d用水平方向重力
GRAVITY_Y = 9.8 # box2d用垂直方向重力
GAMEPADMIX = true # キーボードとゲームパッド1の情報を合成する
WEBGL = false # WebGL使用設定
# preloading image list ***********************************************************************************
MEDIALIST = {
bear : 'media/picture/chara1.png'
}
各変数を説明していきます。
- DEBUG
- デバッグフラグ。
これが「true」の時は、画面に表示されているスプライトにサイズを示す赤い枠が付きます(enchant.jsの場合のみ)。
そして、デバッグ用チェックライト関数「JSLog()」が使えます。 - SCREEN_WIDTH、SCREEN_HEIGHT
- ゲームの画面サイズ。
オリジナルのenchant.jsでは、画面が左寄せになっているのですが、enforceで使っているものはセンタリングするように修正してあります(tmlib.jsは標準でセンタリングされる)。 - BGCOLOR
- 背景色です。
HTMLのカラー指定と同じ方法で指定します。 - OBJECTNUM
- ゲームで使用するオブジェクト数を指定します。
enforceでは、ここで指定した数のオブジェクトをゲーム起動時に予め確保してしまいます(スプライトはオブジェクト生成時)。 - FPS
- ゲームのFrame Per Secondsを指定します。
enchant.jsではAndroidだと指定したFPSよりも速い速度で実行されます(原因不明)。 - GRAVITY_X、GRAVITY_Y
- box2dの物理スプライトで使用される重力パラメーターです。
- GAMEPADMIX
- trueにすると、キーボード操作の情報とゲームパッド1の情報を合成して、どちらで操作してもゲームパッド1の情報が更新されるようになります。
- WEBGL
- trueにすると、enchant.jsを使用するときに、gl.enchant.jsが読み込まれます。
最後の「MEDIALIST」はゲーム内で使う、画像・サウンド・3Dモデルをプリロードするリストを定義します。
ここに記述されていないメディアファイルは使うことが出来ません。
ここに記述されているメディアファイルはプリロードされます。
ゲームスクリプト内で使用するときは、連想配列のキーで指定します。
基本的にメディアファイルは「game01/media」の下の、画像は「picture」、サウンドは「sound」、3Dデータは「model」に格納して使います(これは強制ではないですが、サンドボックスの中にしか置けません)。
各変数は変更後に再コンパイルで適用されます。
config.ini
「lib/config.ini」では、使用するライブラリの選択を行います。
[ENVIRON]
LIBRARY=enchant
TITLE=GAME TITLE
LIBRARY
使用するスプライトライブラリを指定します。
- enchant
- 株式会社ユビキタスエンターテインメントが作成したゲーム用ライブラリ、enchant.jsを使用します。
- tmlib
- 個人でゲームライブラリを作成しているphi(ファイ)さんがメンテナンスしている、tmlib.jsを使用します。
現在のenforceでは、tmlib.jsを使うと下記のようないくつかの制限事項があります。
・isWithIn(object, distance)が使えない
・デバッグモード時にスプライト枠が出ない
・WebGLが使用出来ない
TITLE
ブラウザに表示するタイトルを指定します。
<title></title>タグで指定したのと同じ状態になります。