第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版マップデータを相互に変換することができます。