マップは"map"
ディレクトリの中に1マップあたり1ディレクトリとして作成します。
マップディレクトリ内には、必ずmap.xml
というXMLファイルが必要です。
また、使用する画像ファイルなどは同じディレクトリ内に格納してください。
map.xml
はマップ定義を記述するXMLファイルです。文字コードはUTF-8で記述します。
以下のような内容になっています。
オプションと書かれているものは、必要な場合のみ記述すれば良い要素です。
以下、各要素に記述する内容について説明します。
マップ選択画面のリスト上で表示されるマップの名前を記述します。
長過ぎると表示しきれないので注意。
プレイ中に流すBGMを設定します。BGMが必要ない場合は記述する必要はありません。
BGMは、自機がスタートラインを通過する際に演奏をスタートします。
<bgm volume="ボリューム(0~100)">BGMファイル名</bgm>
自機に関する情報を記述します。
<player>
<vx>速度</vx>
</player>
要素 | 説明 |
---|---|
vx | 自機が右に進む速度の数値。デフォルトは1(1秒で60ピクセル進む)。 |
最高音・最低音を決める方法を設定します。
<pitch max="最高ピッチ" min="最低ピッチ">ピッチ決定方法</pitch>
ピッチ決定方法 | 説明 |
---|---|
Fixed |
音楽ファイルを使用する場合には、音楽中の最高音・最低音に従う。 それ以外の場合には、属性max, minで指定したピッチに従う。 |
Variable | プレイヤーが設定した最高音・最低音に従う。属性max, minは不要。 |
pitchの記述が無い場合は、マップソース情報でtype=Music(音楽ファイルを使用する)にした場合はFixed、それ以外の場合はVariableになります。
属性max, minを記述する場合には、最高音・最低音のピッチ(周波数)を数字で記述します。
前景色(foreground)・背景色(background)・強調色(strong)の3つの色を指定します。
各色は以下の箇所を指します。
<color>
<foreground>前景色</foreground>
<background>背景色</background>
<strong>強調色</strong>
</color>
要素 | 説明 |
---|---|
foreground | 鍵盤の黒鍵部分、プレイヤー、プレイヤー情報部分の背景などに使用される色。デフォルトは黒。 |
background | 鍵盤の白鍵部分、ステージの背景、プレイヤー情報部分の文字などに使用される色。デフォルトは白。 |
strong | 鍵盤上での現在の位置、ミニマップ上での現在の位置表示に使われる色。デフォルトは赤。 |
色の指定の仕方はこちらを参照のこと。
上の画像のように指定するには、color要素に以下のように記述します。
<color>
<foreground>Black</foreground>
<background>White</background>
<strong>Red</strong>
</color>
マップチップとは、マップを構成する単位です。
各マップチップには番号が振られており、マップソースではこの番号の並びを指示します。
このマップチップとマップソースから得られる情報を組み合わせることで、マップが完成します。
それぞれのチップにはhardness(硬さ)が設定されており、これが0だと自機との衝突判定無し、1以上で衝突判定有りになります。自機のHPは
<新しいHP> = <今までのHP> - <衝突チップのhardness>
で計算されます。
マップチップ情報では、マップチップに使用する色・画像と硬さを指定できます。
1チップあたりの横幅と縦幅をピクセルで指定します。
チップの大きさはデフォルトでは16px×16pxです。
あまり小さなサイズにするとマップの描画が重くなるので注意が必要です。
種類・名前には以下のいずれかを指定します。
いずれにおいても、0番のチップはマップ上で描画されず、背景がそのまま見えます。
type | name | 説明 |
---|---|---|
Builtin | Binary | 0番(背景)と1番(前景)の2つのチップから成るマップチップ。 背景は無色、前景は色情報で指定した前景色になる。 硬さは0番が0(衝突判定無し)、1番が1(衝突判定有り) |
Colors | チップの色と硬さを指定するマップチップ。何個でも使用できる。 ただし0番の色は無視され、無色になる。 |
|
Image | マップチップの 画像ファイル名 |
チップの画像と硬さを指定するマップ。 ただし0番の画像は無視され、無色になる。 |
チップの種類がColorsかImageの場合に、チップ数分だけ記述します。
各チップのcolor(色)とhardness(硬さ)を必要数記述します。
XML中でのchipの順番がマップチップの順番と一致します。すなわち、最初に記述したchip要素が0番目のチップ、次に記述したchip要素が1番目のチップ、…となります。
※ chipの記述が無い場合、0番の色は無色、硬さは0、1番の色は黒、硬さは1の2つからなるマップチップとなります。
各チップのhardness(硬さ)を必要数記述します。
XML中でのchipの順番がマップチップの順番と一致します。すなわち、最初に記述したchip要素が0番目のチップ、次に記述したchip要素が1番目のチップ、…となります。
※ chipの記述が無い場合、0番の硬さは0、それ以外のチップの硬さは1となります。
大きさ10px×10pxの2つのチップから成るマップチップ。
色は<color>
で指定されたもの。
チップの硬さは0番(背景)は0、1番(前景)は1で固定。
<chipdata width="10" height="10">
<type>Builtin</type>
<name>Binary</name>
</chipdata>
結果(color要素でbackground=White, foreground=Blackとした場合)
チップ番号 | 0 | 1 |
---|---|---|
色 | ![]() 無色 |
![]() 前景色 |
硬さ | 0 | 1 |
色と硬さを指定した16px×16pxの3つのチップから成るマップチップ。硬さは0番が0、1番が1、2番が2。
<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>
結果
チップ番号 | 0 | 1 | 2 |
---|---|---|---|
色 | ![]() 無色 |
![]() #00cccc |
![]() #0000cc |
硬さ | 0 | 1 | 2 |
画像を指定したサイズ24px×24pxで区切ったタイルをチップとするマップチップ。
画像ファイル(mapchip.png):
<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>
結果
チップ番号 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
画像 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
硬さ | 0 | 2 | 2 | 1 | 1 | 2 |
マップチップをどのように並べるかを決める情報です。
マップソースからは数字の並びであるマップ情報を取得します。
← 各数字がマップチップのチップ番号を表しています。
<source>
<type>マップソースの種類</type>
<name>マップ情報を記載したマップソースのファイル名</name>
<mapping>マップソースと番号の対応付け</mapping>
</source>
マップソースの種類(Type)として指定できるのは以下の3種類です。
種類 | 説明 |
---|---|
Image | 画像でどのようなマップにするかを指定します。 |
Text | 文字列でどのようなマップにするかを指定します。 |
Music | 音楽ファイルからマップを生成します。 |
マップソースの種類として何を指定するかによって、マップソースファイル(name)に指定するもの、対応付け(mapping)で指定するものが変わります。
画像でマップの内容を記述します。
1ピクセルが1マップチップを表し、ピクセルの色がマップチップの番号に対応します。
要素 | 記述する内容 |
---|---|
name | マップ情報を表す画像ファイル名(png) |
mapping | マップチップの番号順に対応する色で塗りつぶした画像ファイル名(png) |
例えば、上に示したマップ情報を得るには、以下のような画像を用意します。
画像ファイル | 対応付けの画像ファイル | |
---|---|---|
ファイル名 | map.png | mapping.png |
ファイル | ![]() |
![]() |
拡大したもの | ![]() |
![]() |
黄色が0番、黒が1番、赤色が2番を表します。
map.xml
には以下のように記述します。
<source>
<type>Image</type>
<name>map.png</name>
<mapping>mapping.png</mapping>
</source>
テキストでマップ情報を記述します。
1文字が1マップチップを表します。文字にはスペースと制御文字以外が使用できます。
要素 | 記述する内容 |
---|---|
name | マップ情報を記述したテキストファイル名 |
mapping | テキストファイル中の文字を対応するマップチップの番号順に並べたもの |
例えば、上に示したマップ情報を得るには、以下のようなテキストファイルを用意します。
map.txt
######
#**###
*..***
*.....
..*...
.*#***
*#####
######
.
が0番、#
が1番、*
が2番を表しています。
map.xml
には以下のように記述します。
<source>
<type>Text</type>
<name>map.txt</name>
<mapping>.#*</mapping>
</source>
音楽ファイルからマップを生成します。
マップチップにはBinary, Colors, Imageが使用可能です。
2番のチップのhardness(硬さ)は0にするようにして下さい。
マップチップとの対応付けには以下を参考にしてください。
チップ番号 | マップの箇所 |
---|---|
0 | 穴 |
1 | 壁 |
2 | 音の中心, マップチップがBinaryの場合は使用しません |
音楽ファイルにはMIDIファイル(フォーマット0/1)か、MMLファイルが使用できます。
MIDIファイルやMMLファイルのフォーマットは参考文献を参照してください。
MIDIファイルは一般的なMIDIシーケンサでも作成できます。
今のところ、いずれもピッチベンドには対応していません。
要素 | 記述する内容 |
---|---|
name | マップ情報生成に使用する音楽ファイル名(mid / mml) |
mapping | 使用しません |
音楽ファイルとして以下を用意します。
t120o4l4v15
ccggaagrffeeddcr
(ggffeedr)ccggaagrffeeddcr
これを用いたmap.xml
のマップソース部分、及びマップチップ部分は以下のようになります。
<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
とマップチップとの対応は、以下のようになります。
チップ番号 | 色 |
---|---|
0 | White(#ffffff) |
1 | Black(#000000) |
2 | Red(#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 |