注意
下記は2012年時点での記述で、最新の情報に対応していない可能性があります。
英語でもこの手の情報は記載が少ないため貴重ですが、公式wikiも参考にしてください。
始めに
このページは下記のフォーラムを参考にして書きました。
リンク:[Official Specifications] Storyboarding by Scripting
途中に書かれている"例"は実際に動かさずに書いた物なので、そのまま書いても動かない場合があります。
例の中にある"_"(アンダーバー)は半角スペースです。
基本
StoryBoardは曲フォルダ内にある、
(ファイル名).osb
が制御しています。
テキスト形式で書かれているので、簡単に操作することができ、かつ高度なStoryBoardの制御を行うことができます。
.osbをメモ帳などのテキストエディタで開きましょう。
書き方
[Events] //Background and Video events //Storyboard Layer 0 (Background) //Storyboard Layer 1 (Fail) //Storyboard Layer 2 (Pass) //Storyboard Layer 3 (Foreground) /* 大体はここに書く */ //Storyboard Sound Samples
画像の読み込み
まず最初に画像の読み込みをしなければなりません。
読み込み方法は静止画像として読み込むSpriteと動画像として読み込むAnimationの二種類があります。
Sprite(静止画像)
Sprite,"layer","origin","filepath",x,y
"layer" = Background | Fail | Pass | Foreground
レイヤー指定 画像を重ねた時どちらを前面に表示させるか。
基本的には Background と Foreground しか使いません。
"origin" = TopLeft | TopCentre | TopRight |
CentreLeft |Centre | CentreRight |
BottomLeft | BottomCentre | BottomRight
中心座標の指定 回転する時などに影響します。
"filepath"
ファイルパスの指定
x
初期x座標の指定
y
初期y座標の指定
Animation(動画像)
Animation,"layer","origin","filepath",x,y,frameCount,frameDelay,looptype
frameCount
動画像のフレーム数
frameDelay
次のフレームに移る時間(単位はms)
"looptype" = LoopForever | LoopOnce
ループするかしないか
LoopForever = ループを行う
LoopOnce = ループを行わない
例:
//Storyboard Layer3(Foreground) Sprite,Foreground,Centre,"hitcircle.png",320,240 Animation,Foreground,TopLeft,"sliderb.png",0,0,10,1,LoopForever //Storyboard Sound Samples
Animationを指定する場合、パラパラアニメみたいな複数の画像を用意する必要があります。
この場合、sliderb0.png sliderb1.png … sliderb9.png と用意します。
イベント
画像にイベントを与えます。
eventの前には必ず半角スペースを入れてください。
雛形
_event, easing, starttime, endtime, [params]
event = (↓)
M = 移動
F = 透過
S = 拡大縮小
R = 回転
V = 縦横幅を指定して拡大縮小
C = 色
MX = 横方向のみの移動
MY = 縦方向のみの移動
L = ループ制御
T = トリガ制御
P = その他
easing = 0~2
加速の有無
0 = なし
1 = 最初は速く、だんだん減速していく
2 = 最初は遅く、だんだん加速していく
starttime
イベントが開始する時間(単位はms)
endtime
イベントが終了する時間(単位はms)
[params]
eventによって変化する。後述
_Move(移動)
画像を動かします。
M,easing,starttime,endtime,startx,starty,endx,endy
startx
イベント開始時のx座標
starty
イベント開始時のy座標
endx
イベント終了時のx座標
endy
イベント終了時のy座標
例:
//Storyboard Layer 3 (Foreground) Sprite,Foreground,Centre,"hitcircle.png",0,0 _M,0,0,5000,0,0,640,480 _M.1,5000,7500,320,240 //Storyboard Sound Samples
Tips:
動かし方によっては書き方を省くことが出来ます。
M,0,1000,1000,320,240,640,480 ↓ 瞬間移動の場合 M,0,1000,,320,240,640,480
M,0,1000,300000,320,240,320,240 ↓ 画像を動かさない場合(ずっと表示させてる) M,0,1000,300000,320,240
_Fade(透過)
画像の透過を行います。
F,easing,starttime,endtime,startopacity,endopacity
startopacity
イベント開始時の透過率(0~1) 0にすると完全に透明になる 実数
endopacity
イベント終了時の透過率(0~1)
例:
//Storyboard Layer 3 (Foreground) Sprite,Foreground,Centre,"hitcircle.png",0,0 _F,0,0,5000,0.00,1.00 _F,2,5000,5500,1.00,0.50 //Storyboard Sound Samples
_Scale(サイズ)
画像の拡大縮小を行います
S,easing,starttime,endtime,startscale,endscale
startscale
イベント開始時の拡大率 1=100% 2=200% 0.5=50%
endscale
イベント終了時の拡大率
例:
//Storyboard Layer 3 (Foreground) Sprite,Foreground,Centre,"hitcircle.png",320,240 _S,1,1000,1500,0.00,1.00 _S,0,2500,3000,1.00,0.25 //Storyboard Sound Samples
_Rotate(回転)
画像を回転させます。
R,easing,starttime,endtime,startangle,endangle
startangle
イベント開始時にどれくらい回転してるか 値はラジアン
endangle
イベント終了時にどれくらい回転しているか 値はラジアン
備考
オブジェクトを一回転させたい場合は、値を''6.28''に、 半回転させたい場合は、値を''3.14''に、 1/4回転させたい場合は、値を''1.57''と、 円周率を基準にして値を決めていくのを''弧度法''といいます。 また、弧度法によって表された値の単位を''ラジアン''といいます。
_Vector Scale(縦横拡大縮小)
画像を縦横を指定して拡大縮小を行います。
V,easing,starttime,endtime,startWidth,startHeight,endWidth,endHeight
startWidth
イベント開始時の横幅の比率 1.0で等倍
startHeight
イベント開始時の縦幅の比率 1.0で等倍
endWidth
イベント終了時の縦幅の比率
endHeight
イベント終了時の横幅の比率
_Color(色)
画像のRGBチャンネルの値を変化させます。
C,easing,starttime,endtime,r1,g1,b1,r2,g2,b2
r1 g1 b1
イベント開始時の色 左から 赤、緑、青 (値は0~255)
r2 g2 b2
イベント終了時の色 (0~255)
備考
'''0,0,0''' にすると真っ黒になりますが、 '''255,255,255''' にすると真っ白になるのではなく、本来の画像の色になります。
_Parameters(設定)
画像の反転、アルファブレンドの追加を行います。
P,easing,starttime,endtime,"p"
p
H = 画像を水平反転させる
V = 画像を垂直反転させる
A = アルファブレンドの追加
_MoveX(横移動)
横方向のみの移動
MX,easing,starttime,endtime,startx,endx
startx
イベント開始時のx座標
endx
イベント終了時のx座標
_MoveY (縦移動)
縦方向のみの移動
MY,easing,starttime,endtime,starty,endy
starty
イベント開始時のy座標
endy
イベント終了時のy座標
特殊イベント
GUI操作では出来ない処理を行います。
_Loop(繰り返し動作)
ループを行います
L,starttime,loopcount
loopcount
何回ループを繰り返すか
例:
//Storyboard Layer 3 (Foreground) Sprite,Foreground,Centre,"hitcircle.png",320,240 _L,1000,40 __F,1,0,300,0.8,0 __S,1,0,300,1,1.05 //Storyboard Sound Samples
_Trigger(トリガー動作)
特殊な時のみ発生するイベントの制御をおこないます。
T,triggerName,start,end
triggerName = (どういう時に有効にするか↓)
HitSoundClap = Clapが鳴ったとき
HitSoundFinish = Finishが鳴ったとき
HitSoundWhistle = Whistleが鳴ったとき
Passing = ライフバーが減少傾向でないとき
Failing = ライフバーが減少傾向であるとき
start
有効になる時間
end
無効になる時間
例:
//Storyboard Layer 3 (Foreground) Sprite,Foreground,Centre,"hitcircle.png",320,240 _T,HitSoundFinish,0,30000 __F,0,-10,0,0,1 __S,0,-10,0,0.1,1 __S,0,0,1,1.05 __F,0,0,10,1 __F,0,10,361,1,0 __S,0,10,361,1 //Storyboard Sound Samples
上記の場合
0:00:00 ~ 0:30:00 までの間
Finish音が鳴ったら
__がついてるイベントを実行します
これを利用すると、特定のリズム(合いの手など)に合わせて画像を表示することができます。
参考になるbeatmap
Jukebox the Ghost - Good Day (Andrew Maury Remix)
マクロ
.osbはマクロ定義もすることができます。
定義された定数はどこに書いても数値、または文字列に変換されます。
書き方
[Variables] $(マクロ名)=(マクロ)
例:
[Variables] $white=255,255,255 $black=0,0,0 $end=100000 $delay=10 $HITCIRCLE=Sprite,Foreground,Centre,"hitcircle.png",480,240 $EVENT=MY,0,0,5000,240,60
[Events] ...(略) //Storyboard Layer3(Foreground) Sprite,Foreground,Centre,"hitcircle.png",320,240 _M,0,0,$end,320,240 Animation,Foreground,Centre,"sliderb.png",160,240,10,$delay,LoopForever _M,0,0,$end,160,240 _C,0,0,1000,$black,$white $HITCIRCLE _$EVENT //Storyboard Sound Samples
音
StoryBoard制御では、画像だけではなく音も出力することが出来ます。
書き方
...(略) //Storyboard Sound Samples Sample,~~~~~~~
イベントの記述は、
Sample,time,layer,"filepath",volume
time
出力するタイミング 単位はms
layer
どのレイヤーに属するか (↓)
Foreground 通常レイヤー
Fail ライフバーが減少傾向の時のみ出るレイヤー 使いどころがわからない
Pass ライフバーが減少傾向でない時に出るレイヤー 使いどころがわからない
Background 通常レイヤーと変わらないような気がする...
"filepath"
出力するサウンドファイルのパス
volume
音量 (値は1~100、 値が大きくなるほど音量は大きい)
例:
...(略) //Storyboard Sound Samples Sample,2000,Foreground,"./crap.wav",100 Sample,4000,Foreground,"./miss.wav",44