第3版マップデータ使用方法 - Ryo-9399/mc_canvas GitHub Wiki
使用方法
起動オプションオブジェクトの "advanced-map"
プロパティに、専用のマップデータオブジェクトを記述します。
使用例1: スクリプトを実行した位置にゲームを表示します。
new CanvasMasao.Game({
}, null, {
"advanced-map": { // (マップデータオブジェクト)
}
});
使用例2: 文字列を指定することでURLとみなし、指定したJSONファイルを読み込みます。(ローカルでのテストプレイはできません)
new CanvasMasao.Game({
}, null, {
"advanced-map": "MyMapdata.json"
});
使用例3: 従来のパラメータと併記できます。ただし、 "advanced-map"
プロパティを指定した場合、従来のレイヤーデータは無視されます。
new CanvasMasao.Game({
"time_max": "600", // 制限時間の指定。
"mizutaro_attack": "3", // 在来種(後述)ミズタロウの攻撃方法の指定。
"firebar1_type": "77", // 在来種(後述)反時計回りファイヤーバーの仕掛け種別指定。
"map0-0": "................", // レイヤーの指定は無視される。
"layer0-0": "..0102030405060708090a0b0c0d0e0f" // 背景レイヤーの指定も同様に無視される。
}, null, {
"advanced-map": { // (マップデータオブジェクト)
}
});
使用例4: 従来の起動オプションと併記できます。
new CanvasMasao.Game({
}, null, {
"advanced-map": { // (マップデータオブジェクト)
},
"width": 160, "height": 128, // 画面サイズの指定。
"highscoreCallback": function(score) { // ハイスコアコールバック関数の指定。
},
"userJSCallback": function(g, mode, viewX, viewY, ap) { // MasaoJSSコールバック関数の指定。
}
});
マップデータオブジェクトの詳細
下記のコード例のコードをそのまま使用しないでください。実際のJSONファイルにコメントは記述できないためエラーになります。
ルートオブジェクト
{
"stages": [
// ステージオブジェクトの配列。
],
"customParts": {
// カスタムパーツ定義の連想配列。
}
}
オブジェクトの最上位には、 ステージオブジェクト の配列と カスタムパーツ定義 の連想配列を指定します。 "customParts"
プロパティは省略可能です。
ステージオブジェクトは配列になっており、上から順にステージ1、ステージ2、...の指定となります。空の配列は指定できません。
ステージオブジェクト
マップデータの主な内容です。
{
"size": {
"x": 180, // マップの横幅。
"y": 30 // マップの縦幅。
},
"layers": [
// レイヤーオブジェクトの配列。
]
}
ステージオブジェクトには、マップサイズと レイヤーオブジェクト の配列を指定します。
マップサイズはオブジェクトで、ブロック単位の横幅と縦幅を整数で指定します。横幅は16以上、縦幅は10以上です。それ以外の数値を指定した時の動作は未定義です。
レイヤーオブジェクト
{
"id": "MyMainLayer", // レイヤーの識別子。
"type": "main", // レイヤーのタイプ。
"src": "pattern.gif", // 画像ファイルのURL。
"map": [
// マップデータの指定。
]
}
"id"
プロパティ、 "src"
プロパティは省略可能です。
"type"
プロパティには "main"
または "mapchip"
を指定します。
"type"
プロパティに"main"
を指定した場合、このレイヤーオブジェクトは 標準レイヤー になります。 標準レイヤーは、レイヤーオブジェクトの配列に1つだけ存在しなければなりません。 存在しない場合や、複数存在するときの動作は未定義です。"src"
プロパティには、標準レイヤーの画像ファイルURLを指定します。省略した場合は、パラメータ"filename_pattern"
で指定するURLを参照します。
"type"
プロパティに"mapchip"
を指定した場合、このレイヤーオブジェクトは 背景レイヤー になります。背景レイヤーは、レイヤーオブジェクトの配列に0個以上指定します。"src"
プロパティには、この背景レイヤーの画像ファイルURLを指定します。省略した場合は、パラメータ"filename_mapchip"
で指定するURLを参照します。- レイヤーオブジェクトの添字はレイヤーの重なり順序を表します。従って、標準レイヤーより先に指定することで、このレイヤーを標準レイヤーより手前に表示することができます。
"map"
プロパティには、整数または文字列の2次元配列を指定します。
"type"
プロパティに"main"
を指定した場合、要素は従来マップデータの各文字の文字コード(例:'A'
→65
)、または カスタムパーツ のキー文字列になります。- 多様な仕掛け・敵を表す整数コードもあります。詳細は 標準パーツコードの一覧 を参照してください。
"type"
プロパティに"mapchip"
を指定した場合、要素はレイヤー番号になります(例:"7f"
→127
)。文字列の指定はできません。
カスタムパーツ定義
キーにカスタムパーツの名前、値にオブジェクトを指定する連想配列です。
カスタムパーツは、既存のパーツのプロパティを変更して新しく独自のパーツを作る機能です。作ったパーツは標準レイヤーの要素に指定できるようになります。
{
"MyFirebar": {
"extends": 85, // 元にする整数コード(またはカスタムパーツのキー文字列)。
"properties": {
// 変更するプロパティ群。
}
}
}
"extends"
プロパティには、カスタムパーツの元にする整数コード、またはその他のカスタムパーツのキー文字列を指定します。
"properties"
プロパティには、元にするパーツから変更するプロパティを連想配列で指定します。
標準搭載されているパーツについては 標準パーツコードの一覧 を参照してください。
第2版マップデータからの変換方法
Sideで第2版マップデータを読み込むことで第2版マップデータと第3版マップデータを相互に変換することができます。