fight.def解説記事
2012/04/24
今回初めてライフバーを製作したものですが、製作している時にfight.defの中身に関して色んなサイトを
調べてみるとそういった情報が載っている所が少なかったため、せっかくなので自分でわかる範囲で
解説をカキコしてみる。
これからライフバー作りたい、いじってみたいという人に向けて参考になれば…
0.はじめに
今回解説するライフバーは、記述するものがキャラ製作よりも少ないことで初心者向けとして構築ができます。
といってもキャラ製作とは若干違ったものなのでry
作った素材をsffに登録し、番号指定して表示するのは同じ。アニメーション指定もBegin Actionを使うことから、練習という意味ではいいかも?
ネックなのがライフバーはキャラと違い、MUGEN起動中にshift+F4で読み込みなおすことができない。
つまり一度チェックして訂正部分があったら一度MUGENを終了させ、訂正終了後にもう一度起動して確認と結構めんどい。なので、訂正部分で時間を食ってしまう。
ツールは以下のものがあればいいと思う。
・メモ帳、テラパッドなど記述するソフト
・Font Factory(フォントファイルの確認用。作りたい人はやり方をggるべし)
・SAE(SFFファイルに登録するソフト。mcmでもいいけど、不具合起こす可能性があったり)
・illstrator(素材製作用。アドビ公式から体験版落とせば30日使える)
・photoshop(pcxファイル製作用。位置確認にも使える)
では、fight.def内の解説です。
今回は自作した現在公開中のオリジナルライフバーをサンプルに説明していきます。
※記事はあくまで「fight.defの中身の解説」なのでフォント作成、pcxのファイル変換のやり方、素材製作についてはggってくだしあ。
※解説の中にはまだ明確ではないものもあるので注意。
※F→フレーム 30フレームで1秒(だと思う)
1.基本的なファイル指定
[Files]
sff = data/GEARLIFE/fight.sff
snd = data/GEARLIFE/fight.snd
font1 = data/GEARLIFE/font/namefont.fnt
font2 = data/GEARLIFE/font/pfont.fnt
font3 = data/GEARLIFE/font/name.fnt
font4 = data/GEARLIFE/font/cfont.fnt
font5 = data/GEARLIFE/font/time.fnt
font6 = data/GEARLIFE/font/sspfont.fnt
fightfx.sff = data/fightfx.sff
fightfx.air = data/fightfx.air
common.snd = data/common.snd
ファイル指定記述。dataの中にGEARLIFEのデータをまとめたフォルダを入れた場合の指定です。
基本的にdata内に入れてるので「data/」と指定することから始まり、「GEARLIFE/」で
GEARLIFE内にあるデータを指定してます。
fontの番号指定は後ほどフォント表示する記述でわかります。
2.HPバーの設定
[Lifebar];ライフバーシングル用
;Player 1
p1.pos = 160,11 ;ライフバー全体座標
p1.bg0.anim = 700 ;背景のBegin Action指定番号
p1.bg0.offset = 2, 8 ;背景座標
p1.bg0.scale = .5, .5 ;背景の大きさ
p1.bg1.spr = 11,0 ;体力の枠表示のスプライト指定番号
p1.bg1.offset = -11, 12 ;枠座標
p1.bg1.scale = .5, .6 ;枠の大きさ
p1.mid.anim = 999 ;ダメージ時の赤ゲージ表示
p1.mid.scale = .5,.6 ;赤ゲージの大きさ
p1.mid.facing = -1 ;座標反転
p1.mid.offset = -24,14 ;赤ゲージ座標
p1.front.spr = 13,0 ;体力表示の黄ゲージ表示
p1.front.scale = .5,.6 ;黄ゲージの大きさ
p1.front.facing = -1 ;座標反転
p1.front.offset = -24,14 ;黄ゲージ座標(赤ゲージと同じ座標位置)
p1.range.x = -25,-153 ;体力表示x軸の長さ調整
p1.~~~~~.layerno = 1 ;指定した部分のスプライトを常に表示
この記述がだいたいテンプレになってきます。今回はシングルのHPバーで解説。
最初の「p1」は1プレイヤー側のことを指しています。2プレイヤーだったらp2、タッグでもp3やp4を使います。
「pos」は全体の座標位置です。画像でいうと薄い黄色の枠。ここで設定した座標位置を基準に、他の座標位置を決めていきます。
基本的に画面左上端が0,0(x軸,y軸)の位置になります。上記では中央位置(160,11)に合わせています。
「spr」はsffの中にあるグループ、番号のスプライトを指定して記述するとその指定したところから静止状態で引っ張ってきます。
もしこれをアニメーションで動かしたい場合は「spr」の代わりに「anim」を入力し、適当な番号を入れます。アニメーションに関しては後回し…
「scale」は大きさの設定。「.5」は「0.5倍」を意味し、下1桁まで対応(0.45など下2桁入れても四捨五入で切り捨てされてるっぽい?)
「offset」は位置座標。左がx軸、右がy軸。posから開始した座標位置で決まる。
「bg(Background)」は背景設定。0~2はレイヤーといえばわかるかも。
bg0が一番下で0→1→2と重ねてbg2まで対応可能。それ以上は表示できないようで。
その上に「mid」「front」とHP関係の画像を乗せていきます。
「mid」はダメージを与えた際の減り具合を表示するゲージ。
「front」はその上にかぶせる、現在のHPを表示するゲージ。
「range.x」はゲージの幅をどこからどこまでかを指定します。
左が開始するx軸の位置、右がどこまで伸ばすかのx軸の位置。
伸ばしすぎると本来登録したゲージの長さ以上に見えない部分まで伸びてしまうので、あらかじめゲージのサイズを図った上で調整するといいでしょう。
「facing」は反転。2Pでは各ゲージのところに「p2.front.facing = -1」と入れると、1Pで設定したゲージ表示が反転されます。
「layerno」は指定した部分の項目にあるスプライトが最前面になり、暗転などキャラによる全画面演出表示しても常に表示されます。「~~~~~」の部分は、bgやmidなど各オブジェクトグループの記述を入れます。
2Pのゲージ数値に適用した場合の画像。
これを全ての項目に設定するとライフバーがキャラよって隠れることはありませんが、暗転や特殊演出といったものにも表示されるのでご利用は計画的に。というかあんまり使わないと思う
また、タッグ用に3P、4Pと別パターンを用意しないといけません。タッグはタッグ用として記述があり、書くことは上記と変わりないです。
めんどくさいのであれば、1Pと3P、2Pと4Pを半分ずつにわけるというのもあり。
ちなみに補足として、登録した画像はscale記述をせずにMUGENで開くと元の2倍のサイズになります。なので、元のままで登録したい場合はかならずscaleで0.5倍設定にするように。
ただし、0.5倍設定するとポトレなど画像の上に狙った位置にピッタリ置こうとしても1px分ずれる場合が多いです。その場合は編集ソフトを使って1px分縦か横に引き延ばすと改善されます。
3.ゲージ設定
[Powerbar];ゲージ表示
;Player 1
p1.pos = 161,33 ;ゲージ位置全体座標
p1.bg0.spr = 41,1 ;背景のスプライト指定番号
p1.bg0.scale = .5,.5 ;背景の大きさ
p1.bg0.offset = -16,-20 ;背景座標
p1.front.anim = 60 ;ゲージ表示Begin Action指定番号
p1.front.scale = .5,.5 ;ゲージ表示の大きさ
p1.front.offset = -86,-17 ;ゲージ表示座標
p1.range.x = -30,-86 ;ゲージ表示x軸の長さ調整
p1.counter.offset = -96,-11 ;ゲージカウント座標
p1.counter.font = 2,0,0 ;ゲージカウントに使うフォント
パワーゲージのバー設定。
counterという新しい記述があり、ここでは現在のゲージ本数の表示をさせます。
フォント指定は[Files]項目の「font」を参照に、使いたいフォントの番号を指定
します。今回使うのはfont2の「pfont」を使うので、以下のように設定。
p1.counter.font = 2,0,0(font2 = data/GEARLIFE/font/pfont.fntから引用)
一番最初に指定するフォントの数値、その後の「0,0」はx軸、y軸の位置設定。
あまり動かすこともないので0,0でOK。
4.サウンド設定
; --level sounds---
level1.snd = 21,0
level2.snd = 21,0
level3.snd = 21,0
上のゲージ設定に続き、ゲージカウントが増えるごとに鳴らす効果音の指定。
数値が増えることにより音が鳴り、登録しているサウンド番号から引っ張っています。
5.中ポートレイト設定
[Face];シングル用アイコン、ポートレイト表示
Player 1
p1.pos = 0,0 ;ポトレ全体座標
p1.bg.spr = 999, 5 ;背景指定番号
p1.bg.scale = .5,.5 ;背景の大きさ
p1.bg.offset = 5,2 ;背景座標
p1.face.spr = 9000,666 ;各キャラのポトレ呼び出し番号
p1.face.scale = .5,.5 ;ポトレの大きさ
p1.face.facing = 1 ;座標反転
p1.face.offset = 8,3 ;ポトレ座標
中ポトレはHPバーやゲージで設定したbgよりも上のレイヤーとして
表示されます。
「face.spr」は各キャラで設定したポートレイトを持ってきます。
bgは数値を入れてレイヤー分けすることが不可能っぽい。
タッグ戦のface位置には気をつけましょう。シングルで使ってた中ポトレをそのまま使うのであれば
配置にはちょっとした工夫が必要。
※チーム専の控えメンバー表示
p1.teammate.pos = 5,43 ;控えメンバーポトレ全体座標
p1.teammate.spacing = 0,20 ;控えメンバーの空白幅設定
p1.teammate.bg.spr = 999,9 ;背景指定番号
p1.teammate.bg.offset = 0,0 ;背景座標
p1.teammate.bg.scale = .5, .5 ;背景の大きさ
p1.teammate.ko.anim = 96 ;戦闘不能キャラの上に乗せる画像
p1.teammate.ko.scale = .5,.5 ;乗せる画像の大きさ
p1.teammate.ko.offset = 5,2 ;乗せる画像の座標位置
p1.teammate.face.spr = 9000,0 ;各キャラのポトレ呼び出し番号
p1.teammate.face.scale = .5,.5 ;ポトレの大きさ
p1.teammate.face.facing = 1 ;座標反転
p1.teammate.face.offset = 11,4 ;ポトレ座標
「teammate.spacing」は「teammate.pos」で設定した座標から控え3人の表示をx軸、y軸ともに等間隔で幅を広げて表示を調整します。
「teammate.ko.anim」は戦闘不能になったキャラのポトレ上から画像をかぶせて戦闘不能とわかりやすく表示するもの。基本は黒を透過処理させるのもいいけど、画像のようにシャッターぽく見せるのもありかなーと。
6.アニメーション設定
[Begin Action 701];目ピカーアニメーション
996,0, 0,0, 3
996,1, 0,0, 3
996,2, 0,0, 3
996,3, 0,0, 3
996,4, 0,0, 3
996,5, 0,0, 3
996,6, 0,0, 3
996,7, 0,0, 3
996,8, 0,0, 3
996,9, 0,0, 3
996,10, 0,0, 3
996,11, 0,0, 3
996,12, 0,0, 3
996,13, 0,0, 3
996,14, 0,0, 3
996,13, 0,0, 3
996,12, 0,0, 3
996,11, 0,0, 3
996,10, 0,0, 3
996,9, 0,0, -1
[Begin Action 999] ;赤ゲージの不透明度調整
12,0, 0,0, 1, ,A128D128
アニメーションを行いたい場合は「Begin Action」を使います。
Begin Actionの後の数字は他のBegin Actionとかぶらなければ、本当に適当でOK。
設定した数字は、上で説明したゲージ設定の「p1.bg0.anim = 700」といった所に指定して使います。
上からスタートして流していく順番。数字などの解説は以下のとおり。
12,0, 0,0, 1, ,A128D128
12,0 → スプライト登録番号
0,0, → 左がx軸、右がy軸の位置設定
1, → 表示するフレーム数
,A128D128 → 不透明度の調整。Aが明るさ、Dが半透明率。256が最高数値で高いほど透明になり、0に近づくほど暗くなる。
フレーム数が「-1」であればそのアニメーションでとまり、+数値のまま最後まで行くと
最初に戻ってループします。どこかで止めたいとなれば、最後の
airファイルであれば、「loopstart」をループしたい位置に入れればその位置から最後までループする
ように設定できますが、defファイルだとできない模様…このあたり情報モトム。
注意事項として、Begin Actionは各設定項目の最後、もしくはfight.def内記述全体の最後あたりにまとめて書くこと。
Begin Actionを途中で書いてしまうと残りの記述が反映しなくなります。
7.キャラのネーム配置、タイマー設定
[Name];シングル用キャラのネーム表示
p1.pos = 90,40 ;ネーム全体座標
p1.bg.spr = 999,2 ;背景指定番号
p1.bg.offset = -85,-6 ;背景座標
p1.bg.scale = .5,.5 ;背景の大きさ
p1.name.font = 3,0,0 ;ネームに使うフォント指定
[Time];タイマー
;99カウント設定限定。
pos = 161,37 ;タイマー全体座標
bg.anim = 701 ;背景Begin Action指定番号
bg.scale = .5, .5 ;背景の大きさ
bg.offset = 0,-2 ;背景座標
; Time count display
counter.offset = -1,3 ;タイマー座標
counter.font = 5,0,0 ;タイマーに使うフォント
戦闘に出ているキャラのネームフォントを呼び出す設定とタイマーを表示する設定。
ここは今までどおりの設定の流用なので、上記説明を参考に。
補足として、ここでもbgを分けて使うことができません(bg"0"とレイヤー分けの方式で打つと表示されない)
8.コンボ表示設定
[Combo];コンボ表示
pos = 5,115 ;コンボカウント表示全体座標
start.x = -200 ;表示が開始されるx軸設定
text.text = %iC ;テキスト表示。%i→数値 C→フォントファイルで設定したcombohitの画像指定
text.font = 4,0,1 ;コンボカウントに使うフォント
text.offset = 0,22 ;コンボカウント座標
displaytime = 60 ;コンボカウントが消えるまでの時間
コンボしたときのHIT数表示。ここの表示はちょっと特殊で、以下の流れになります。
攻撃が2HIT以上すると登録した画像が表示開始
↓
「start.x」で設定した場所から「pos」で設定した位置へ移動。
↓
「displaytime」で設定したF数経過後、「start.x」へ戻る。
ちなみに「start.x」を「pos」以上の+位置で設定してると、そのまま表示が停滞してしまう状態になってしまいます。
なるべく画面外に戻すよう設定しないと、↓のようになっちゃうので注意。
また、「start.x」で設定した場所から「pos」で設定した位置へ移動する速度は変わりません。
「start.x」を-位置にしすぎると2HIT、3HITと出てくる画像が遅くなってしまうので、だいたい-200あたりがベスト。
「displaytime」も短すぎると不自然に消える場合があるので画像によっては調整が必要。
表示するコンボテキストは「text.text」で設定。
%iはヒット時の数値を表しています。Cは「HIT」とか「COMBO」など
数値の後に表示する画像をフォントファイルにて設定しているものです。
フォントファクトリーを使って、フォントファイル内の設定から呼び出せるようにしておきましょう。
9.ラウンド設定
[Round]
match.wins = 2 ;何ラウンドで勝利かの数値
match.maxdrawgames = 1 ;何回目のドローから両者に配点するか。1なら2回目のドロー以降両者にポイント。
start.waittime = 30 ;ラウンド開始からカウントが動きだすまでの時間。99秒設定で30なら実質100カウント。
;各ラウンド時のサウンド設定
round1.snd = 0,1
round2.snd = 0,1
round3.snd = 0,1
round4.snd = 0,1
round5.snd = 0,1
round6.snd = 0,1
round7.snd = 0,1
round8.snd = 0,1
round.sndtime = 0;サウンド開始のフレーム数
;各ラウンド時のアニメーション設定
round1.offset = 0, 0
round1.anim = 900
round1.scale = .5,.5
ラウンド設定はココ。「wins = 2」はラウンド2本先取という意味で、50や100にしても問題ない。
「maxdrawgames」はドローゲーム(引き分け)した際にラウンドのポイントを取る設定。0であれば2回目以降も負けている側にポイントが入る。
「start.waittime」は両者動ける状態になった後、何F後にカウントが動くかの設定。
0であればカウントはすぐに動き、30なら1秒+される。99秒設定で30なら実質100カウント。
各ラウンド時のサウンド設定はそれぞれラウンドに入ったときに流すアナウンス指定。sndで登録したグループ、番号を指定して呼び出す。
round.sndtimeはReadyのアニメーションに入ってからアナウンスを何F後に鳴らすかの指定。ここは0F安定だと思う。
各ラウンド時のアニメーション設定は今までどおり。最大round10あたりまで設定でき、それ以上超えるとFightから始まる。
10.ファイト、KOなどの設定
; FIGHT
fight.time = 15 ;READYからfIGHTを何F後に表示するか
fight.offset = 0, 0
fight.anim = 80
fight.scale = .5,.5
fight.snd = 1,1
fight.sndtime = 15
ctrl.time = 63 ;FIGHT表示開始から何F後に動けるか
; KO
KO.time = 0
KO.offset = 0,0
KO.anim = 200
KO.scale = .5,.5
KO.snd = 1,2
; Double KO
DKO.offset = 0, 0
DKO.anim = 201
DKO.scale = .5,.5
DKO.snd = 1,2
; Time Over
TO.offset = 0, 0
TO.anim = 202
TO.displaytime = 600
TO.snd = 2,2
TO.scale = .5,.5
slow.time = 60
over.waittime = 45
over.hittime = 10
over.wintime = 45
over.time = 210
win.time = 60
; Draw GAME
draw.offset = 0, 0
draw.anim = 203
draw.displaytime = 1000
draw.scale = .5,.5
; Win text
win.time = 60
win.offset = 160, 90
win.font = 1,0
win.snd = 2,3
win.text = %s WIN
win.displaytime = 540
win2.offset = 160, 90
win2.font = 1,0
win2.snd = 2,3
win2.text = %s and %s WIN
win2.displaytime = 540
ファイトや引き分け時のアニメーションなどの設定。
「fight.time」は数秒決められたready表示タイムが終わってから何F後にファイトアニメーションを流すかを決めるところ。
いきなり始まると違和感が出てきたりするので、そのあたりは実際に流しながら調整すること。
「ctrl.time」はfightアニメーションに入ってから何F後に動けるかの設定。
0にするとfightコールが入る前から動けるようになってしまうため、ここもfightアニメーションのF数とうまくあわせること。
その後の設定はFIGHTを参考に設定していけばいいかなと。
「TO.displaytime」はおそらくアニメーションが表示されるF数。
ここだけ今までと同じF単位なのか怪しいが、3桁ぐらいいれておけば大丈夫だと思う。
「over.waittime」はタイムオーバー表示に入って何Fまで動けるかのF数。
それ以降の下のtime関係はアニメーションを表示するF数。
11.WINした時のアイコン設定
[WinIcon];勝利した時のアイコン表示
p1.pos = 132,51
p2.pos = 207,51
p1.iconoffset = 0,0
p2.iconoffset = 0,0
p1.counter.offset = 0,0
p1.counter.font = 2,0
p2.counter.offset = 0,0
p2.counter.font = 2,0
useiconupto = 0
勝利したときのアイコン表示。自分で製作してそれをアイコンとしてつかうことも可能であるが、
その場合は初期のMUGENについているfight.defに載っているので、今回はフォントを使った場合の解説。
いくつかのライフバーアドオンは、勝利した時にアイコンが出て、何試合か勝利するとwin数が数字で
表示されるというパターンが多い。1からフォントで表示したい場合は「useiconupto」の数値を0にするとOK。
ここの数値は設定した数値のwin数を上回るとフォントから呼び出して数字に変化する仕組みである。
以上、fight.defの中身の解説でした。
フォントの製作や素材製作についてはggればわかるはず。こちらは一から製作ができればの話でもあるけどね…
自分が製作したライフバーはラフから完成まで2週間ぐらいかかったかな。
今後も時間があればライフバー作ってみたいけど…どちらかというとキャラ改変、キャラ作成とか作ってみたいです。
では、ライフバー制作や困った時の参考などに使ってください!
スポンサーサイト
続きを閉じる
| ホーム |