マップ作成

マップ定義の概要

マップは"map"ディレクトリの中に1マップあたり1ディレクトリとして作成します。

マップディレクトリ内には、必ずmap.xmlというXMLファイルが必要です。
また、使用する画像ファイルなどは同じディレクトリ内に格納してください。

map.xmlはマップ定義を記述するXMLファイルです。文字コードはUTF-8で記述します。
以下のような内容になっています。

map.xml
<map>
  <name>マップ名</name>
  <author>作者名</author>
  <bgm>BGM情報</bgm> <-- オプション -->
  <player>自機情報</player> <-- オプション -->
  <pitch>ピッチ情報</pitch> <-- オプション -->
  <color>色情報</color> <-- オプション -->
  <chipdata>マップチップ情報</chipdata>
  <source>マップソース情報</source>
</map>

オプションと書かれているものは、必要な場合のみ記述すれば良い要素です。
以下、各要素に記述する内容について説明します。

name - マップ名

マップ選択画面のリスト上で表示されるマップの名前を記述します。
長過ぎると表示しきれないので注意。

author - 作者名

マップ作成者の名前を記述します。今のところどこにも使用されていません。

bgm - BGM情報

プレイ中に流すBGMを設定します。BGMが必要ない場合は記述する必要はありません。
BGMは、自機がスタートラインを通過する際に演奏をスタートします。

bgm要素記述内容
<bgm volume="ボリューム(0~100)">BGMファイル名</bgm>

player - 自機情報

自機に関する情報を記述します。

player要素記述内容
<player>
  <vx>速度</vx>
</player>
要素説明
vx自機が右に進む速度の数値。デフォルトは1(1秒で60ピクセル進む)。

pitch - ピッチ情報

最高音・最低音を決める方法を設定します。

pitch記述内容
<pitch max="最高ピッチ" min="最低ピッチ">ピッチ決定方法</pitch>
ピッチ決定方法説明
Fixed 音楽ファイルを使用する場合には、音楽中の最高音・最低音に従う。
それ以外の場合には、属性max, minで指定したピッチに従う。
Variable プレイヤーが設定した最高音・最低音に従う。属性max, minは不要。

pitchの記述が無い場合は、マップソース情報でtype=Music(音楽ファイルを使用する)にした場合はFixed、それ以外の場合はVariableになります。
属性max, minを記述する場合には、最高音・最低音のピッチ(周波数)を数字で記述します。

color - 色情報

前景色(foreground)・背景色(background)・強調色(strong)の3つの色を指定します。
各色は以下の箇所を指します。

color記述内容
<color>
  <foreground>前景色</foreground>
  <background>背景色</background>
  <strong>強調色</strong>
</color>
要素説明
foreground 鍵盤の黒鍵部分、プレイヤー、プレイヤー情報部分の背景などに使用される色。デフォルトは黒。
background 鍵盤の白鍵部分、ステージの背景、プレイヤー情報部分の文字などに使用される色。デフォルトは白。
strong 鍵盤上での現在の位置、ミニマップ上での現在の位置表示に使われる色。デフォルトは赤。

色の指定の仕方はこちらを参照のこと。

Sample

上の画像のように指定するには、color要素に以下のように記述します。

color要素サンプル
<color>
  <foreground>Black</foreground>
  <background>White</background>
  <strong>Red</strong>
</color>

chipdata - マップチップ情報

マップチップとは、マップを構成する単位です。
各マップチップには番号が振られており、マップソースではこの番号の並びを指示します。
このマップチップとマップソースから得られる情報を組み合わせることで、マップが完成します。

それぞれのチップにはhardness(硬さ)が設定されており、これが0だと自機との衝突判定無し、1以上で衝突判定有りになります。自機のHPは
<新しいHP> = <今までのHP> - <衝突チップのhardness>
で計算されます。

マップチップ情報では、マップチップに使用する色・画像と硬さを指定できます。

chipdata記述内容
<chipcata width="1チップの横幅" height="1チップの縦幅">
  <type>種類</type>
  <name>名前</name>
  <chip> <!-- chip情報。ColorsかImageの場合に必要数繰り返す -->
    <color>色</color>
    <hardness>硬さ</hardness>
  </chip>
</chipdata>

width, height

1チップあたりの横幅と縦幅をピクセルで指定します。
チップの大きさはデフォルトでは16px×16pxです。
あまり小さなサイズにするとマップの描画が重くなるので注意が必要です。

type・name

種類・名前には以下のいずれかを指定します。
いずれにおいても、0番のチップはマップ上で描画されず、背景がそのまま見えます。

typename説明
BuiltinBinary 0番(背景)と1番(前景)の2つのチップから成るマップチップ。
背景は無色、前景は色情報で指定した前景色になる。
硬さは0番が0(衝突判定無し)、1番が1(衝突判定有り)
Colors チップの色と硬さを指定するマップチップ。何個でも使用できる。
ただし0番の色は無視され、無色になる。
Image マップチップの
画像ファイル名
チップの画像と硬さを指定するマップ。
ただし0番の画像は無視され、無色になる。

chip

チップの種類がColorsかImageの場合に、チップ数分だけ記述します。

type=Builtin, name=Colorsの場合

各チップのcolor(色)とhardness(硬さ)を必要数記述します。
XML中でのchipの順番がマップチップの順番と一致します。すなわち、最初に記述したchip要素が0番目のチップ、次に記述したchip要素が1番目のチップ、…となります。
※ chipの記述が無い場合、0番の色は無色、硬さは0、1番の色は黒、硬さは1の2つからなるマップチップとなります。

type=Imageの場合

各チップのhardness(硬さ)を必要数記述します。
XML中でのchipの順番がマップチップの順番と一致します。すなわち、最初に記述したchip要素が0番目のチップ、次に記述したchip要素が1番目のチップ、…となります。
※ chipの記述が無い場合、0番の硬さは0、それ以外のチップの硬さは1となります。

Sample

Binary

大きさ10px×10pxの2つのチップから成るマップチップ。
色は<color>で指定されたもの。 チップの硬さは0番(背景)は0、1番(前景)は1で固定。

Binaryマップチップサンプル
<chipdata width="10" height="10">
  <type>Builtin</type>
  <name>Binary</name>
</chipdata>

結果(color要素でbackground=White, foreground=Blackとした場合)

チップ番号01

無色

前景色
硬さ01

Colors

色と硬さを指定した16px×16pxの3つのチップから成るマップチップ。硬さは0番が0、1番が1、2番が2。

Colorsマップチップサンプル
<chipdata width="16" height="16">
  <type>Builtin</type>
  <name>Colors</name>
  <chip> <!-- 0番目のチップ --> </chip>
  <chip> <!-- 1番目のチップ -->
    <color>#00cccc</color>
    <hardness>1</hardness>
  </chip>
  <chip> <!-- 2番目のチップ -->
    <color>#0000cc</color>
    <hardness>2</hardness>
  </chip>
</chipdata>

結果

チップ番号012

無色

#00cccc

#0000cc
硬さ012

Image

画像を指定したサイズ24px×24pxで区切ったタイルをチップとするマップチップ。
画像ファイル(mapchip.png):

Imageマップチップサンプル
<chipdata width="24" height="24">
  <type>Image</type>
  <name>mapchip.png</name>
  <chip />
  <chip><hardness>2</hardness></chip>
  <chip><hardness>2</hardness></chip>
  <chip><hardness>1</hardness></chip>
  <chip><hardness>1</hardness></chip>
  <chip><hardness>2</hardness></chip>
</chipdata>

結果

チップ番号012345
画像
硬さ022112

source - マップソース情報

マップチップをどのように並べるかを決める情報です。
マップソースからは数字の並びであるマップ情報を取得します。
← 各数字がマップチップのチップ番号を表しています。

source記述内容
<source>
  <type>マップソースの種類</type>
  <name>マップ情報を記載したマップソースのファイル名</name>
  <mapping>マップソースと番号の対応付け</mapping>
</source>

type

マップソースの種類(Type)として指定できるのは以下の3種類です。

種類説明
Image画像でどのようなマップにするかを指定します。
Text文字列でどのようなマップにするかを指定します。
Music音楽ファイルからマップを生成します。

マップソースの種類として何を指定するかによって、マップソースファイル(name)に指定するもの、対応付け(mapping)で指定するものが変わります。

Image

画像でマップの内容を記述します。
1ピクセルが1マップチップを表し、ピクセルの色がマップチップの番号に対応します。

要素記述する内容
nameマップ情報を表す画像ファイル名(png)
mappingマップチップの番号順に対応する色で塗りつぶした画像ファイル名(png)

Sample

例えば、上に示したマップ情報を得るには、以下のような画像を用意します。

画像ファイル対応付けの画像ファイル
ファイル名map.pngmapping.png
ファイル
拡大したもの

黄色が0番、黒が1番、赤色が2番を表します。
map.xmlには以下のように記述します。

Imageソースサンプル
<source>
  <type>Image</type>
  <name>map.png</name>
  <mapping>mapping.png</mapping>
</source>

Text

テキストでマップ情報を記述します。
1文字が1マップチップを表します。文字にはスペースと制御文字以外が使用できます。

要素記述する内容
nameマップ情報を記述したテキストファイル名
mappingテキストファイル中の文字を対応するマップチップの番号順に並べたもの

Sample

例えば、上に示したマップ情報を得るには、以下のようなテキストファイルを用意します。

map.txt

map.txt
######
#**###
*..***
*.....
..*...
.*#***
*#####
######

.が0番、#が1番、*が2番を表しています。
map.xmlには以下のように記述します。

Textソースサンプル
<source>
  <type>Text</type>
  <name>map.txt</name>
  <mapping>.#*</mapping>
</source>

Music

音楽ファイルからマップを生成します。
マップチップにはBinary, Colors, Imageが使用可能です。 2番のチップのhardness(硬さ)は0にするようにして下さい。
マップチップとの対応付けには以下を参考にしてください。

チップ番号マップの箇所
0
1
2音の中心, マップチップがBinaryの場合は使用しません

音楽ファイルにはMIDIファイル(フォーマット0/1)か、MMLファイルが使用できます。
MIDIファイルやMMLファイルのフォーマットは参考文献を参照してください。
MIDIファイルは一般的なMIDIシーケンサでも作成できます。
今のところ、いずれもピッチベンドには対応していません。

要素記述する内容
nameマップ情報生成に使用する音楽ファイル名(mid / mml)
mapping使用しません

Sample

音楽ファイルとして以下を用意します。

map.mml (きらきら星)
t120o4l4v15
ccggaagrffeeddcr
(ggffeedr)ccggaagrffeeddcr

これを用いたmap.xmlのマップソース部分、及びマップチップ部分は以下のようになります。

Musicソースサンプル
<source>
  <type>Text</type>
  <name>map.mml</name>
</source>
<chipdata width="16" height="16">
<type>Builtin</type>
<name>Colors</name>
  <chip />
  <chip>
    <color>Black</color>
    <hardness>1</hardness>
  </chip>
  <chip>
    <color>Yellow</color>
    <hardness>0</hardness>
  </chip>
</chipdata>

ゲーム画面は

のようになります。

音楽ファイルを使う場合、生成されるマップを画像ファイルにしたものが <ユーザディレクトリ>\AppData\Roaming\PitchPitch 以下にmusic.pngとして、
またファイルを読み込んだ結果得られるピッチ情報がmusic.txtとして保存されます。
上のサンプルの場合、music.pngのようになります。
music.pngとマップチップとの対応は、以下のようになります。

チップ番号
0White(#ffffff)
1Black(#000000)
2Red(#ff0000)

色指定方法

色の指定は、頭に"#"を付けた16進数6桁でRGBを表す(赤の場合、#ff0000でR=255、G=0、B=0を表す)か、下のテーブルに示した色名を記述します。

名前 名前 名前
Black  DimGray  Gray 
DarkGray  Silver  LightGray 
Gainsboro  WhiteSmoke  White 
Maroon  DarkRed  Red 
Brown  Firebrick  IndianRed 
Snow  LightCoral  RosyBrown 
MistyRose  Salmon  Tomato 
DarkSalmon  Coral  OrangeRed 
LightSalmon  Sienna  SeaShell 
SaddleBrown  Chocolate  SandyBrown 
PeachPuff  Peru  Linen 
Bisque  DarkOrange  BurlyWood 
Tan  AntiqueWhite  NavajoWhite 
BlanchedAlmond  PapayaWhip  Moccasin 
Orange  Wheat  OldLace 
FloralWhite  DarkGoldenrod  Goldenrod 
Cornsilk  Gold  Khaki 
LemonChiffon  PaleGoldenrod  DarkKhaki 
Olive  Yellow  LightGoldenrodYellow 
Beige  LightYellow  Ivory 
OliveDrab  YellowGreen  DarkOliveGreen 
GreenYellow  Chartreuse  LawnGreen 
DarkSeaGreen  LightGreen  DarkGreen 
Green  ForestGreen  LimeGreen 
Lime  PaleGreen  Honeydew 
SeaGreen  MediumSeaGreen  SpringGreen 
MintCream  MediumSpringGreen  MediumAquamarine 
Aquamarine  Turquoise  LightSeaGreen 
MediumTurquoise  DarkSlateGray  Teal 
DarkCyan  Cyan  Aqua 
PaleTurquoise  LightCyan  Azure 
DarkTurquoise  CadetBlue  PowderBlue 
LightBlue  DeepSkyBlue  SkyBlue 
LightSkyBlue  SteelBlue  AliceBlue 
DodgerBlue  SlateGray  LightSlateGray 
LightSteelBlue  CornflowerBlue  RoyalBlue 
Navy  MidnightBlue  DarkBlue 
MediumBlue  Blue  Lavender 
GhostWhite  SlateBlue  DarkSlateBlue 
MediumSlateBlue  MediumPurple  BlueViolet 
Indigo  DarkOrchid  DarkViolet 
MediumOrchid  Purple  DarkMagenta 
Fuchsia  Magenta  Violet 
Plum  Thistle  Orchid 
MediumVioletRed  DeepPink  HotPink 
LavenderBlush  PaleVioletRed  Crimson 
Pink  LightPink