作成の基本
基本的な理屈
フォーマット1説明
フォーマット2説明
フォーマット3・4説明
背景について
難易度名称の変更
全体時間調整
簡易変数
Carmbeatの拡張機能
Carmbeat:J styleについて
picobeatの拡張機能
作成上の注意点
アップロードの方法
ノート別データ一覧
汎用背景集
CarmBeat本体(右クリック保存)
picobeat本体(右クリック保存)
オリジナルデータを作成するには、上の本体(carm.swf,pico.swf)の他に、以下のファイルを用意する。
それぞれ、ファイル名は変更できない。
bgm.mp3
演奏用音声ファイル。
mp3形式であり、サンプリングレートが11kHz/22kHz/44kHzのいずれかである必要がある。
曲の最後の0.1秒間は演奏されない。
data.txt 雛形(右クリック保存)
譜面データファイル。
テキストファイルであり、以下の形式で作成する。
↓は、改行である。
head=carm1↓ &title=データのタイトル↓ &music_by=作曲者名(省略可)↓ &data_by=データ作成者名(省略可)↓ &bgm_vol=演奏ファイルの音量(%)↓ &level1=第1譜面の難易度(1~10)(第1譜面が無い場合不要)↓ &level2=第2譜面の難易度(1~10)(第2譜面が無い場合不要)↓ &level3=第3譜面の難易度(1~10)(第3譜面が無い場合不要)↓ &format=譜面フォーマット(1~4)↓ &start_time=演奏開始時間(秒)(譜面フォーマット2の場合不要)↓ &unit_time=単位時間(秒)(譜面フォーマット2,3,4の場合不要)↓ &scroll_time=譜面速度(秒)↓ &gametype=picobeatのゲームの種類(1~3)↓ &seq1=↓ (第1譜面データ)↓ &seq2=↓ (第2譜面データ)↓ &seq3=↓ (第3譜面データ)↓
ヘッダ head=carm11行目には必ずこの通りに記述する。
title項は、データのタイトルである。通例として使用曲の曲名をそのまま使う場合が多い。
title項
music_by項
data_by項
music_by項は、使用楽曲の作者名を書く。
data_by項は、データ作成者を書く。貴方の事である。
picobeatでは、これらの項に使える文字が制限されている。
使える文字は以下であり、20字以下にする必要がある。
半角文字 A〜Z a〜z 1〜0 !"#$%'-=.,?@+*/_() 全角文字 あ〜ん、ア〜ン
演奏mp3ファイルの音量を指定する。
bgm_vol項
単位は%であり、変えないのならば100にする。
1つのデータファイルには3つの譜面を記述することが出来る。
level1項
level2項
level3項
それぞれ、level1項=第1譜面(LIGHT)、level2項=第2譜面(NORMAL)、level3項=第3譜面(MANIAC)、という名前がついている。
それぞれの譜面について、存在しないならばその項は記述しない。
存在するのならば、難易度を1~10の範囲で記述する。数が多いほど難しいという意味である。
譜面データは4種類の形式(フォーマット)で書く事が出来る。
format項
format=1 の時、フォーマット1で記述する。これは、1拍ずつのデータを順番に書き連ねていく形式であり、譜面を考えながらでも効率よく作成が出来る。途中でテンポが変わる曲には正しく対応できない。
format=2 の時、フォーマット2で記述する。これは、ノート1つごとに絶対時間を細かく記述する形式であり、何らかの方法(ツール等)で時間の計算が出来ることが前提となっている。
format=3か4 の時、フォーマット3・4で記述する。これは、フォーマット1に汎用性を持たせた形式である。
picobeatでは、ゲームの形式をここで設定する。(carmのように途中でゲームを変える事はできない)
gametype項
gametype=1 の時、5KEYモード(5鍵風)
gametype=2 の時、7KEYモード(IIDX風)
gametype=3 の時、9KEYモード(ポップン風)
譜面データ作成の基本的な理屈
まず、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項)を決める。
これは、ノートが50ドット移動するのに要する時間であり、大きいほどノートは遅いという事になる。
先に求めた単位時間をそのまま使ってもよい。0.2〜1くらいの範囲で適当に決めてもよい。
譜面データ(seq1~seq3項)は、以下のように記述する。
このように、その拍に存在するノートの情報を、1拍ごとに半角のカンマで区切って書き連ねていく。
1拍目のデータ,2拍目のデータ,3拍目のデータ, …
ノートのない拍は、何も書かない。
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。
データの内容は以下である。
ノート別データ一覧
1拍に複数のノートがある場合は、その全てを記述する(「zxc」「46」など)
以上を踏まえて、例えばこのように記述する。
見やすくするために、8拍ごとに改行している。
&seq1= ei,,,,,,u,, y,,,,,,e,, r,,,, ,,t,e, q!,,,q, w!,,,w, w,,,,,,r,y, q,,,,e,,u,, t,,,,q,,e, ,w,,,,,,,,
フォーマット2では、全てノートの到着時間をそれぞれ秒で指定する。
単位時間は必要ないが、譜面速度(scroll_time項)を求める必要がある。
フォーマット1と同じように計測し、決定すること。譜面速度はイベントにより変更が可能である。
譜面データ(seq1~seq3項)は、以下のように記述する。
このように、ノート1つのデータごとに半角カンマで区切り、さらにその中で、半角スラッシュで区切って記述する。
1つ目のノートの到達時間(秒)/1つ目のノートの内容, 2つ目のノートの到達時間(秒)/2つ目のノートの内容, 3つ目のノートの到達時間(秒)/3つ目のノートの内容, :
改行は全て無視されるので、見やすくするためにいくらでも改行してよい。
データの内容は以下である。
ノート別データ一覧
複数のノートが同時に来る場合は、その全てを記述する(「zxc」「46」など)
以下は例である。
いちいち手計算しながら時間を求めるという手間はありえないので、何らかのツールなどで計算する事が前提となっている。
&seq1= 20.924973/y, 21.008263/w, 21.091553/y, 21.174843/w, 21.258133/y, 21.341423/w, 21.424714/qu, 21.924455/qu, 22.424196/qu, 22.923937/qu, :
フォーマット3・4は、フォーマット1に汎用性を持たせた書式である。
フォーマット1を理解した上で読むこと。
演奏開始時間(&start_time) が必要である。
単位時間(&unit_time) は不要である。
フォーマット1が1拍(=1データ)ごとに記述するのに対して、フォーマット3・4では1行に1小節のデータ(行データ)を記述する。
行データは以下の種類がある。
いずれにも当てはまらない行や空行は無視される。
このように、行の頭に半角シャープ(#)がある場合、その行は小節時間の設定である。
#1.512642
これは1小節の長さを秒単位で記述する。1拍ではない点に注意。
この設定は何度でも行える(変更できる)。
最初の段階では小節時間は設定されていないので、最初のデータを書く前に必ず設定が必要である。
時間ではなく、BPMで小節時間を指定することも可能である。(SSROでは使用できない)
1小節が4拍(4分音符×4)の時は、このように記述する。
#BPM/160
そうでない場合は、さらに4分音符の数を書く。
この例は、BPM160であり、1小節に4分音符が3つ(3拍子)の場合である。
#BPM/160/3
いずれも小数が使える。
このように、行にいくつかの半角カンマ(,)がある場合、その行は譜面データである。
2,,4,,6,,8,
1行に1小節ぶんのデータを記述する。
記述する内容は以下である。
ノート別データ一覧
1小節がカンマの位置で分割される。フォーマット3と4で、分割のされ方が異なる。
フォーマット3と4の違いはこの点だけである。
フォーマット3の時、(カンマの数+1)に分割される。
2,4,2,4,2,4,2,4
この例ではカンマは7つであるので、8分割される。
この1小節は8拍であり、1拍は8分音符の長さということになる。
フォーマット4の時、(カンマの数)に分割される。
2,4,2,4,2,4,2,4,
上の例ではカンマは8つであるので、8分割される。
この1小節は8拍であり、1拍は8分音符の長さということになる。
最後のカンマより右に書いたデータは無視される。
1拍ぶんのデータを、さらに分割して記述する事も出来る。(SSROでは使用できない)
通常、このようなデータを記述したい場合、一番短い16分音符に合わせて16分割し、
z x c v v v v 4分音符 4分音符 4分音符 16分音符×4
のように書く必要があった。
z,,,,x,,,,c,,,,v,v,v,v,
これを、半角パイプ(「|」=BackSpaceキーの左)を使って簡略化する事が出来る。
1つの拍のデータをパイプで区切って分割する。
上の例は、このように書く事が出来る。
半角パイプが3つなので、4拍目の「v|v|v|v」は4分割される。
z,x,c,v|v|v|v,
このように、行の頭に半角文字で「C/」とある場合、その行は譜面速度の変更である。
C/0.25
譜面速度を変更できる。
このように、行の頭に半角文字で「B/」とある場合、その行は演奏開始時間の再定義である。
B/12.5
これまでのデータに関係なく、演奏開始時間を決め直して、次のデータの時間を決定する。
間奏などで間が空き、次のノートの時間までの補完が面倒な場合などに使う。
時間を遡らないようにすること。
このように、行の頭に半角文字で「/」がある場合、その行は明確にコメント行と判断され、無視される。
/コメント行だわさ
このように、「BACK」とだけ書かれた行は、1小節戻るを意味する。
BACK
z,,,, BACK x,,,, 上の例では、zとxは同時になる。 z,,z,, BACK ,x,,x, 上の例では、「z,x,z,x,」と同じ意味になる。 レーンごとに別々に打ち込みたい場合に有用である。
フォーマット4の例
&seq1= #1.5 ←ここから、1小節を1.5秒とする(この設定は必ず最初に必要) 4,6,4,6, ←4分割されるので、4分音符×4になる 2,8,2,8, 2,,2,,6,6,6,, ←8分音符を含むため、この行(小節)だけ8分割 5,5,5, ←この行(小節)だけ3連符 /第2パート ←コメント #BPM/160 ←ここから、1小節をBPM160相当に変更 B/20 ←演奏開始時間を20秒に再定義。次のデータは20秒目になる C/0.15 ←ここから、譜面速度を0.15に変更 46,,,,46,,,, 28,,,,28,,,,
プレイ中に画像などを背景(クリップ)として表示することが出来る。
data.txtの適当な場所に以下の記述をすること。
back=1の時、back.jpgを背景とする。
&back=1 &back_alpha=100
back=2の時、back.swfを背景とする。
背景のファイルを作成し、data.txtなどと同じ場所に置く事。
以下のように書く事もできる。
この場合は、相対パスや絶対パスを使った記述も可能となる。
&backfile=(ファイル名)
backとbackfileを両方書かないこと。
(SSROでは&backfileの記述は使えない)
back_alpha項は、背景の不透明度(単位%)である。100の時標準であり、ノートが見にくい場合に小さくして背景を暗くする。(Carmbeatのみ)
背景の仕様は以下である。
いずれの場合でも、jpgファイルか、40FPS/SWF6形式のswfファイルが使える。
どんなswfファイルでも利用出来るが、理想は音が発生せず、ある程度の長さでループするものである。
Carmbeat
大きさは300x400である。ただし、300x400とはFLASH全体の大きさであり、画面の上部と下部が隠れる事を考慮する必要がある。
swfの場合、本体のスプライト _root.backspr の中に読みこまれるので、ターゲットの指定の際には注意すること。
picobeat:5KEY、7KEY
大きさは200x200である。
swfの場合、本体のスプライト _root.skinspr.backspr の中に読みこまれるので、ターゲットの指定の際には注意すること。
picobeat:9KEY
大きさは90x200、全体の背景は400x300である。
ファイル名の記述は前述のようにではなく、以下のようにする。
全体の背景は、画面全体に表示される。通常の背景より手前、ノートより奥になる。
&backfile1=(左側の背景) &backfile2=(右側の背景) &backfile3=(全体の背景)
swfの場合、本体のスプライト _root.skinspr.backspr1 、 _root.skinspr.backspr2 、 _root.skinspr.backspr3 の中に読みこまれるので、ターゲットの指定の際には注意すること。
背景swfを単独で再生して正しく再生されても、背景として読み込むとおかしくなる場合がある。
また、演奏中の音と同期を取ろうとしても無理なので、どうしてもやる場合は、背景swfの(フレーム数ではなく)再生時間を厳密に計測し、それに従って画面を切り替える等で対処すること。
picobeatではデバイスフォントは表示されない場合がある。その場合は埋め込みフォントを使う事。
背景swfからは以下の変数が利用できる。
_root.BGMPOS //曲の進度(ミリ秒) _root.bgm.duration //曲の全体の長さ(ミリ秒) _root.st_life //体力(0~100) _root.st_pe //PERFECT数 _root.st_gr //GREAT数 _root.st_go //GOOD数 _root.st_ba //BAD数 _root.st_mi //MISS数 _root.st_combo //現在のコンボ数 _root.st_maxcombo //最高コンボ数 _root.st_nofnote //総ノート数 _root.st_a //簡易変数A _root.st_b //簡易変数B _root.st_c //簡易変数C _root.st_noteres[n] //n番目のノートの結果
初期では全てに 0 が入っている。 1つのノートの結果が出ると、 ノート種別番号 × 10 + 判定 の値が入る。
ノート種別番号 (Carmbeat) 1〜9 : P型ノート左から 30 : P型ノート全押し 11〜17 : B型ノート左から 18 : B型ノートスクラッチ 10 : B型ノート全押し 21〜24 : D型ノート ← ↓ ↑ → 25,26 : D型ノート 左三角、右三角 20 : D型ノート 矢印全押し 31,32 : T型ノート 赤太鼓、青太鼓 41〜46 : DR型ノート左から 40 : DR型ノート全押し 51〜66 : J styleの左上から右へ (picobeat) 1〜5 : 5keyモード左から 6 : 5keyモードスクラッチ 11〜17 : 7keyモード左から 18 : 7keyモードスクラッチ 21〜29 : 9keyモード左から例えば、carmbeatのスクラッチは18番であるので、 3つ目のノートであるこれをGREATで取った場合、 _root.st_noteres[3] = 182; という数が入る。 ノート番号の1から順に、この値が0でなくなるまで監視する事で、 ゲームの状態を背景から知る事が可能になる。
判定 1 : PERFECT 2 : GREAT 3 : GOOD 4 : BAD 5 : MISS
各譜面は、LIGHT、NORMAL、MANIAC、と名付けられているが、これを変更する事が出来る。
data.txtのどこかに以下の記述をすること。
変更しない部分は記述しない。
&difname1=(第1譜面の新しい名前) &difname2=(第2譜面の新しい名前) &difname3=(第3譜面の新しい名前)
Carmbeatでは、半角英数字8文字以内、
picobeatでは、半角英数字7文字以内を推奨する。
それ以外の文字でも使用出来るが、レイアウト等に不具合が出る可能性がある。
(そうなったとしてもゲーム自体には影響しない)
全てのノートの時間を等しく変更する事が出来る。
完成したデータで、音だけを差し替えるような場合に使う。
data.txtのどこかに以下の記述をすること。
時間は秒単位。
&timeadjust=(時間)
全てのノートを2秒遅らせたいなら、&timeadjust=2
2秒早めたいなら、&timeadjust=-2 となる。
背景swfからゲームの状態を知るために、簡易変数を利用する事が出来る。
簡易変数には、簡易変数A 簡易変数B 簡易変数Cの3つがあり、数値型変数であり、初期値は0である。
その内容は、の変数で知る事が出来る。
_root.st_a _root.st_b _root.st_c
簡易変数を操作するには、ノートとして記述する。(I=Increment D=Decrement Z=Zero の頭文字)
ノートのデータ 実行内容 $AI簡易変数A += 1 $AD簡易変数A -= 1 $AZ簡易変数A = 0 $BI簡易変数B += 1 $BD簡易変数B -= 1 $BZ簡易変数B = 0 $CI簡易変数C += 1 $CD簡易変数C -= 1 $CZ簡易変数C = 0
1拍に、普通のノートと同時に書く事も出来る。
「z」と「x」と「$AI」を「zx$AI」のように書く。
オートプレイモード
タイトル画面を出さずに、自動的にオートプレイを開始させるモードである。
data.txtの適当な場所に以下の記述をすること。
autoplay項は、オートプレイに使用する譜面番号を書く。
&autoplay=1
1の場合は第1譜面(LIGHT)を使うことになる。
1回オートプレイが終わった後はタイトル画面に戻る。
DDRっぽいモード
判定位置の矢印の枠だけが表示され、ノートが下から上に流れるモードである。
このモードに限り、[R]キーを押すと流れる方向が逆になる。
data.txtの適当な場所に以下の記述をすること。
このモードを使用する場合、
&mode=1
2(↓) 4(←) 6(→) 8(↑) 5(←↓↑→) 7(左三角) 9(右三角) 以外のノートを使用しないこと。
SSR互換モード
一部のノートに対応するデータを入れ替える。
data.txtの適当な場所に以下の記述をすること。
これを使用すると、
&ssrcp=1
のデータは順に
7 4 2 8 6 9/1 3 であるが、これが
1 4 2 8 6 3/7 9 に変更される。
SSR用のデータをそのまま使えるようになる。
タイトル画像読み込み
タイトル画面のCarmBeatのロゴ部分に別の画像を表示させることが出来る。
title.jpg というファイルがあると自動的に読み込まれる。
サイズは300x150である。
リブート機能
タイトル画面で以下を押す事でゲームの再起動が出来る。
いずれもdata.txtを読み込むところからやり直すので、data.txtを編集しながら確認したい時に有用である。
タイトル画面で F4 キー
再起動し、再びタイトルに戻る。タイトル画面で F1〜F3 キー
再起動し、それぞれ譜面1,2,3のオートプレイを開始する。
jubeat風のJ styleは独立した仕様となっている。他の種類のノートを混ぜることは出来ない。
data.txtに以下の記述をすることで使用可能となる。
&mode=2
使用するノートのデータは以下である。
1 2 3 4 q w e r a s d f z x c v
ゲームで使用するキーは2種類から選ぶことが出来る。
この内容は自動的に保存され、保存されていない場合は起動時に選択する。
[表示設定]で変更することが出来る。
タイプ1 タイプ2
1 2 3 4 Q W E R A S D F Z X C V
4 5 6 7 R T Y U F G H J V B N M
その他の異なる点は以下である。
・scroll_time の値は無視される(常に速度は一定)が、省略するとエラーになるので何か書いておくこと。
・ゲーム中にノートの速度を変更しても、得点が0.95倍になるペナルティが無い。また、速度は自動的に保存される。
・その譜面で「一番上の列が使われていない」「一番上と2列目が使われていない」場合、使われない部分は表示されなくなる。
・ロングノートは禁止されていないが正しく表示されない。
5KEYモードにおける謎のノート
5KEYモードで、6キー、7キーを使う事が出来る。
ノート用文字は「f」「v」であり、ゲームで使うキーも同じである。
9KEYモードにおける謎のノート
9KEYモードで、謎のピンクを使う事が出来る。
ノート用文字は左が「a」右が「h」であり、ゲームで使うキーも同じである。
ドラムっぽい謎のモード
&gametype=4
とする事で、謎のドラムモードを使用する事が出来る。
ノート用文字は以下である。ゲームで使うキーも同じである。
左シンバル ハイハット 左バス スネア ハイタム 右バス ロータム フロアタム 右シンバル a s x d f v g h j
背景の大きさは130x220である。
リブート機能
タイトル画面で以下を押す事でゲームの再起動が出来る。
いずれもdata.txtを読み込むところからやり直すので、data.txtを編集しながら確認したい時に有用である。
タイトル画面で F4 キー
再起動し、再びタイトルに戻る。タイトル画面で F1〜F3 キー
再起動し、それぞれ譜面1,2,3のオートプレイを開始する。
・キーボードの場合、3つ以上の同時押しは反応しない場合があるので考慮するべきである。
・ロングノートが終わった直後に同じノートがあると、誤動作でミスし易くなる。
・画面にロングノートがある時に譜面停止すると、停止が終わった時にロングノートの帯の長さが変わる。(仕様。変更後の長さが正しい)
全てのファイルが用意出来たら、FLASH再生用のhtmlファイルを作成する。
よくわからなければ、以下を右クリック保存。
Carmbeat用再生html
picobeat用再生html
(拡張子を.htmlに変更すること)
(「FLASH表示部」は変更しないこと)
carm.swf または pico.swf
bgm.mp3
data.txt
再生用.html
背景ファイル(必要ならば)
以上全てのファイルをサーバーの同じディレクトリ(フォルダ)に置く事で作業が完了する。
data.txtはテキストファイルなのでアスキー転送する事。これ以外はバイナリ転送。
再生用htmlを実行してテストすること。
ローカルでプレイする際も同じディレクトリであれば動作する。
全て、使用は自由である。
右クリックで保存し、背景ファイルとして指定すること。
1.キャラクター集 (picobeat 9KEY)
picobeatの9KEYで背景に表示するキャラクターである。
毎回ランダムに選ばれる。
キャラクター集(左側用)
キャラクター集(右側用)
画像借用元 :
http://members.jcom.home.ne.jp/mozunatto/
http://forest.her.jp/moricchi/
2.MENDES風背景 (picobeat 5KEY/7KEY)
ノートを消すごとに自機から弾が出る、ゲーム風の画面を表示する。
MENDES風背景