data.txt 雛形(右クリック保存)
譜面データファイル。
テキストファイルであり、以下の形式で作成する。
↓は、改行である。
head=ssr1↓
&title=データのタイトル↓
&music_by=作曲者名(省略可)↓
&data_by=データ作成者名(省略可)↓
&back=背景コード(1,2)(背景を使用しない場合不要)↓
&back_alpha=背景の不透明度(0~100)(背景を使用しない場合不要)↓
&level1=第1譜面の難易度(1~10)(第1譜面が無い場合不要)↓
&level2=第2譜面の難易度(1~10)(第2譜面が無い場合不要)↓
&level3=第3譜面の難易度(1~10)(第3譜面が無い場合不要)↓
&format=譜面フォーマット(1,2)↓
&start_time=演奏開始時間(秒)(譜面フォーマット2の場合不要)↓
&unit_time=単位時間(秒)(譜面フォーマット2の場合不要)↓
&scroll_time=譜面速度(秒)↓
&seq1=↓
(第1譜面データ)↓
&seq2=↓
(第2譜面データ)↓
&seq3=↓
(第3譜面データ)↓
|
head=ssr1
1行目にはこのファイルヘッダを、必ずこの通りに記述する。
title項は、通例として使用曲の曲名をそのまま使う場合が多い。
data_by項のデータ作成者とは、貴方の事である。
back=1 とすると、back.jpgを背景とする。
back=2 とすると、back.swfを背景とする。
back_alphaは、背景の不透明度である。100の時に普通に表示されるが、それによってノートが見えなくなっても困るので、不透明度を減らす事によって色を薄くする。
背景を使用しない場合はこれらの項は記述しない。
1つのデータファイルには3つの譜面を記述することが出来る。
それぞれ、level1項=第1譜面(LIGHT)、level2項=第2譜面(NORMAL)、level3項=第3譜面(MANIAC)、という名前がついている。
それぞれの譜面について、存在しないならばその項は記述しない。
存在するのならば、難易度を1~10の範囲で記述する。数が多いほど難しいという意味である。
譜面データは2種類のどちらかの形式(フォーマット)で書く事が出来る。
format=1 の時、フォーマット1で記述する。これは、1拍ずつのデータを順番に書き連ねていく形式であり、譜面を考えながらでも効率よく作成が出来る。途中でテンポが変わる曲には正しく対応できない。
format=2 の時、フォーマット2で記述する。これは、ノート1つごとに絶対時間を細かく記述する形式であり、何らかの方法(ツール等)で時間の計算が出来ることが前提となっている。計算さえ正しければテンポ変化にも対応出来る他、フォーマット1では使えない「譜面速度変化」「時間停止」のイベントが使用できる。
フォーマット1での記述
まず、1拍の長さを決定する。
1拍とは譜面の最小単位であり、たとえば4分音符だけで構成出来るデータであれば、1拍の長さは4分音符になる。ひとつでも8分音符が混ざっていれば、最小は8分音符になるので、1拍の長さは8分音符である。
1拍の実時間が、単位時間(unit_time項)となる。
これを計測する。この計測が正しく出来ないとまともなデータにはならない。
計測のために、曲から始点と終点を選ぶ。
曲の速度(テンポ)が変わらず、拍子がはっきりしており、かつ、なるべく長い部分を選ぶ。
(4拍ぶんを計測して4で割るよりも、200拍ぶんを計測して200で割ったほうが遥かに信頼出来る結果になるため)
MP3DirectCutなど、音声ファイルの「5.127秒地点」のように細かい計測が出来るソフトを使い、始点と終点の間(区間)の時間を計測する。
その区間が1拍の長さの何倍かを数え、区間の実時間から割ることで、単位時間が求められる。小数を丸めないこと。
始点時間 + (単位時間 × 拍数) ≒ 終点時間
となる事を確認すること。誤差は最低でも0.1秒以下に。
例:
使用曲の中で「始点2.612秒」から「終点32.104秒」を「54拍」(4分音符×54)ぶんの長さとして計測する。
(32.104[秒] - 2.612[秒]) ÷ 54[拍] = 0.5461481[秒]
という計算により、この曲の単位時間は0.5461481秒となる。
次に、演奏開始時間(start_time項)を決める。
譜面データは、演奏開始時間以降にしか設定できない。
譜面データの一番最初にノートを置いた場合、それは演奏開始時間と同じ時間に現れることになる。
問題がなければ、先に使った始点をそのまま使うと良い。
演奏開始時間から単位時間をどれだけ足しても、実際の拍とずれていない事が絶対条件である。
次に、譜面速度(scroll_time項)を決める。
これは、ノートが1拍ぶん移動するのに要する時間であり、大きいほどノートは遅いという事になる。
通常、先に求めた単位時間をそのまま使う。これにより、連続したノートがちょうど並ぶような速度になる。
この速度を基本として、速度を2倍にしたい場合は譜面速度を2で割る。速度を半分にしたい場合は2倍にする。
譜面データ(seq1~seq3項)は、以下のように記述する。
1拍目のデータ,2拍目のデータ,3拍目のデータ, … |
このように、その拍に存在するノートの情報を、1拍ごとに半角のカンマで区切って書き連ねていく。
ノートのない拍は、何も書かない。
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。
データの内容は以下である。
| データ | 内容
|
|---|
| 1 | [S]ノート
| | 3 | [E]ノート
| | 2 | [↓]
| | 4 | [←]
| | 6 | [→]
| | 8 | [↑]
|
1拍に複数のノートがある場合は、その全てを記述する(「24」「861」など)
3つ以上の同時押しは殆どのパターンがキーが反応しないので、正しく押せるのか確認しておくこと。
データを2つ並べると、ロングノート開始の意味になる。同種のデータが次に単独で現れるまでの間を結ぶ、ロングノートとなる。
(「22」は[↓]ロングノートの開始。次に「2」が来るまでの間続く)
(「22448」(↓と←のロングノート開始+↑単独)というような記述も可能)
ロングノートの次に単独ではなく、同種のロングノートが来ないようにする事。
(「22」の次にまた「22」は駄目)
以上を踏まえて、例えばこのように記述する。
&seq1=
4,,4,,6,,,,
4,,4,,6,,,,
2,,2,,28,,28,,
4,,6,,4466,,,46, (「44」から「4」までの間のロングノート) | 見やすくするために、8拍ごとに改行している。
|
フォーマット2での記述
フォーマット2の場合、単位時間という概念は無いが、譜面速度(scroll_time項)を求める必要がある。
フォーマット1と同じように計測し、決定すること。譜面速度はイベントにより変更が可能である。
譜面データ(seq1~seq3項)は、以下のように記述する。
1つ目のノートの到達時間(秒)/1つ目のノートの内容,
2つ目のノートの到達時間(秒)/2つ目のノートの内容,
3つ目のノートの到達時間(秒)/3つ目のノートの内容,
: |
このように、ノート1つのデータごとに半角カンマで区切り、さらにその中で、半角スラッシュで区切って記述する。
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。
ノートの内容は以下である。(フォーマット1とほぼ同じ)
| データ | 内容
|
|---|
| 1 | [S]ノート
| | 3 | [E]ノート
| | 2 | [↓]
| | 4 | [←]
| | 6 | [→]
| | 8 | [↑]
| | c/新しい譜面速度(秒) | 譜面速度変更イベント
| | s/停止時間(秒) | 時間停止イベント
|
フォーマット1と違い、1つのノートのデータに、複数のノート情報を記述する事は出来ない。
同じタイミングで複数のノートが到達する場合は、同じ時間を指定して行を分ける。
21.727180/24,
ノート2と4をまとめて書く事は出来ない。
この場合は…
21.727180/2,
21.727180/4,
このように、同じ時間で2行に分ける。 |
ロングノートについてはフォーマット1と同じである。
cイベントにより、指定した時間に譜面速度を変更する。
スラッシュが1つ増えるので、実際には
このように記述する。
譜面速度が変化した瞬間、全てのノートの座標の再計算が行われるので、極端な話、全てのノートがワープする。
プレイしづらくなるので、ノートの無い部分で使うべきである。
sイベントにより、指定した時間に、時間を停止する。
スラッシュが1つ増えるので、実際には
このように記述する。
この例では、曲の28.〜秒地点に達したら、3秒間の間、曲が停止し、画面(ノートの動き)が停止する。
3秒後、曲は停止された箇所からふたたび再生され、ノートも動き出す。
曲の演奏箇所がワープするわけではない事に注意。
(この例では、28秒地点まで再生し、3秒停止し、また28秒地点から再開する)
以下は例である。
いちいち手計算しながら時間を求めるという手間はありえないので、何らかのツールなどで計算する事が前提となっている。
&seq1=
2.612000/2,
2.885074/4,
3.158148/2,
3.431222/44,
3.704296/6,
4.250444/6,
4.796592/8,
4.796592/2,
5.069666/6,
5.342740/8,
5.615814/c/0.273074,
5.888888/4,
: |
|
|