StoryBoarding/Scripting

Last-modified: 2021-04-14 (水) 07:44:25


注意

下記は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