forum

【翻译】故事版脚本指南(Storyboarding by Scripting)

posted
Total Posts
39
Topic Starter
Breeze
原文Storyboarding by Scripting
英文不好,翻译可能有不准确的地方,各位有发现问题我会马上修改
在edit里怕SB设置无法做到精确?那么就该尝试一下脚本修改了~
脚本编辑的好处就是可以精确改动,另外,像单一变量(时间,大小等)的变动也是相当方便的
也有很多在常规edit中无法用到的功能,像颜色改变,动画间隔时间等

"【】"内为我的说明,与原文无关

故事版脚本

在osu.文件里,[Event]:之下
注意:下划线_可以用空格替代

静态画面和动画

静态画面
Sprite,"layer","origin","filepath",x,y
_event, easing, starttime, endtime, [params]
_event, [...]
_event, [...]

动画
Animation,"layer","origin","filepath",x,y,frameCount,frameDelay,looptype
_event,easing,starttime,endtime,[params]
_event, [...]
_event, [...]

对于动画,指定一个文件名,比如"sliderball.png",然后把他们按从"sliderball0.png"到"sliderball9.png"这样的方式依次命名,以做出一个10帧的动画【实际上并不是非要10帧,2帧,3帧或者以上都是可行的】

【以下将是对上面方框内代码的解释】

frameCount:动画中的帧数
frameDelay : 帧延迟,每帧之间的延迟(单位:毫秒)
looptype【动画循环模式】 : 默认LoopForever【一直循环】
LoopForever - 一直循环
LoopOnce - 动画播放一次并结束在最后一帧

层叠次序由文件在osu.中出现的位置决定,最前面的故事版事件会在其他任何事件的层之后.如果故事版事件"A"代码在"B"之前,那么"B"会在"A"前一层.

layers:【层】:
Background【背景】
Fail【失败,即休息时出现X】
Pass【通过,即休息时出现○】
Foreground【前景】
注意: Background和Foreground层总是可见的

origin: 【初始点】
TopLeft【左上】
TopCenter【上方正中】
TopRight【右上】
CentreLeft【中左】
Centre【中央】
CentreRight【中右】
BottomLeft【左下】
BottomCentre【下方正中】
BottomRight【右下】

所有旋转和大小改变(包括矢量缩放)都受初始点影响

filepath: 【文件路径】图片文件的相关路径(应和osu.在同一目录下)
注意: 如果文件名中有空格,文件路径必须用双引号引用

x, y: 图片的位置
注意: 玩的区域是(640,480)到(0,0)【(0,0)为左上角坐标,意思是不要让坐标超过这个区域,下同】

event type:【事件类型】
F - fade【隐藏(淡入淡出)】
M - move【移动】
S - scale【缩放】
V - vector scale (width and height separately)【矢量缩放(宽高分别变动)】
R - rotate【旋转】
C - colour【颜色】
L - loop【循环】
T - Event-triggered loop【事件触发循环】
P - Parameters【参数】

easing:【缓冲】
0 - none【没有缓冲】
1 - start fast and slow down【开始快结束慢】
2 - start slow and speed up【开始慢结束快】

starttime, endtime: 【开始,结束时间】

params:【参数】


_F,[...],startopacity,endopacity

startopacity: 动画的初始可见(透明)度
endopacity: 动画的结束可见(透明)度
0 - 不可见, 1 - 完全可见【这里这个数字参数0-1之间的小数是可以的,感谢abalee提醒】


_M,[...],startx,starty,endx,endy

startx, starty: 动画的初始位置
endx, endy: 动画的结束位置
注意: 玩的区域是(640,480)到(0,0)


_S,[...],startscale,endscale

startscale: 动画的初始比例
endscale: 动画的结束比例
1 = 100%, 2 = 200% 等等. 小数位也是可行的


_V,[...],startx,starty,endx,endy

startx, starty: 动画的初始位置比例
endx, endy: 动画的结束位置比例
1 = 100%, 2 = 200% 等等. 小数位也是可行的


_R,[...],startangle,endangle

startangle: 动画的初始需要转动到的角度的弧度
endangle: 动画的结束时需要转动到得角度的弧度
正角顺时针旋转


_C,[...],r1,g1,b1,r2,g2,b2

r1, g1, b1: 启动时动画元件的颜色
r2, g2, b2: 结束时动画元件的颜色

(255,255,255)的静态图片将会呈现他们原本的颜色,(0,0,0)上网图片将完全是黑色.这两者之间的任何数值都将形成减色(subtractive colour)【其实就是三原色的数值,(红色,绿色,蓝色),用过photoshop等图像处理软件的应该很熟悉这个,关于这个的使用可以参照我的AKB48 - Flying Get中灯光的使用】


_MX,[...],startx,endx


startx: 动画的初始x坐标
endx: 动画的结束x坐标


_MY,[...],starty,endy

starty: 动画的初始y坐标
endy: 动画的结束y坐标


_P,[...],p

p: 应用的影响参数:
H - 水平翻转
V - 垂直翻转
A - additive-blend colour (as opposed to alpha-blend)【请参阅以下资料来了解这个效果
http://shiba.hpe.sh.cn/jiaoyanzu/wuli/s...&classId=4
http://dev.gameres.com/Program/Visual/2D/alpha.htm
(感谢emergist提供的链接)】

用以下的简写参数也是可行的,应用的参数只在动画持续期间生效

shorthand:【简写】
这个符号可以用来快速的把同一时间间隔的大量事件改写为脚本code

_event,easing,starttime,endtime,val1,val2,val3,...,valN

将会创建事件:

_event,easing,starttime,endtime,val1,val2
_event,easing,starttime + duration,endtime + duration,val2,val3
_event,easing,starttime + 2duration,endtime + 2duration,val3,val4

等等

shorthand2:
这个符号可以在事件开始和结束时间相同时使用

_M,0,1000,1000,320,240,320,240

将译为

_M,0,1000,,320,240,320,240

请注意结束区域的空白区 - 这是必须的

shorthand3:
这个符号可以在事件初始值和结束指相同时使用

_M,0,1000,,320,240,320,240

将译为

_M,0,1000,,320,240


Looping 循环

Standard Loops标准循环:
循环会以设定好的数字图片清晰地不断重复


_L,time difference,loopcount
__event, [...]
__event, [...]


time difference: 循环开始的时间和此系列SB事件第一次生效的最初时间之间的时间差, 单位是毫秒
loopcount: 动画循环次数

例, 如果想要把
_C,0,73384,73727,$blue
_C,0,73727,74071,$yellow
_C,0,74071,74414,$red,$white
这段代码在01:28:040重复一次(即代码中的88040ms), 那么L代码的时间差数值应该是88040减去这段代码第一次生效时的最初时间73384所得的14656, 所以L代码如下:
_L,14656,1
__C,0,73384,73727,$blue
__C,0,73727,74071,$yellow
__C,0,74071,74414,$red,$white



Trigger Loops事件触发循环:

事件触发循环可以被游戏时间事件触发. 虽然叫做循环, 事件触发循环循环时只执行一次


_T,triggerName,start,end
__event, [...]
__event, [...]


start: 触发器可用的时候
end : 触发器结束可用状态的时候

现在支持的触发器有:
HitSoundClap
HitSoundFinish
HitSoundWhistle
Passing
Failing

触发器循环和普通循环一样是从零计数. 如果两个重叠, 第一个将会被停止且被一个从头开始的循环替代.
如果他们和任何存在的故事版事件重叠,他们将不会循环直到那些故事版事件不在生效
【我有在我的Yanzi Sun - Meng Bu Luo (Dream Never End)中用到这个,四边的SB就是用的clap和whistle触发SB,可以打开osb文件参考】


Sound effects SB 自定义音效【感谢之前yaya,gdeath和abalee给与我的指点】
2011/8/29 EDIT : 现在ranking guideline不建议使用SB音效, 能不用的时候尽量避免使用以免被喷

Sample,time,layer,"filepath",volume


time 时间: SB自定音效开始的时间(单位毫秒)【就是edit中左下的数字,注意如果是一分钟以上,如1:20:025,那么1分钟要换算成60秒即time设置应为80025而非120025】

layer 层:
Background = 0
Fail = 1
Pass = 2
Foreground = 3

filepath 文件路径: 声音文件【wav格式】相关路径(应和osu.文件在同一文件夹目录下)
注意: 文件路径必须双引号引用

volume音量: 声音文件音量 (1-100)
【我的Girls' Generation - It's Fantastic中有用到很多SB sound,这个每个难度不同,所以需要参考的话应该打开每个难度的osu文件,然后在Events之下的Storyborrd sound sample下】

Variables 自定义变量

现在自定义变量也可用,你可以在osb.文件里定义自己的自定义变量(暂时不支持osu.文件的SB)


[Variables]
$white=255,255,255


一旦你自定义了变量,你可以在故事版中的"任何地方"使用他们.
暂时请不要自定义太小的变量(比如, 不要赋值 $var=1)因为编辑器还没聪明到在它保存时知道把变量如何保存.【意思是变量太简单的话,因为保存时会把所有变量按自定义变量保存,所以太小的变量可能出现替换问题】所有事件变量会在保存时被自定义变量代替(所以如果你有一个地方用了 $white而另外一个地方用的 255,255,255 他们在编辑器中会都被保存为$white)【peppy的Baby Cruising Love中颜色的改变就用了自定义变量】

2013.7.22 EDIT:新版本支持宽屏的SB效果,但只有应用了旋转效果的部件会宽屏显示,如果想要全部图片都是宽屏效果的吧要在每个部件的代码中加上
_R,0,x,y,-1E-16,0
其中x,y是你宽屏持续的时间


【至此,翻译完毕,如有疑问请提出,我会尽我所能解答】
steinsgate
=.= 就是製作SB方法指南咩 話說沒插樓吧
Furawa
辛苦了,好東西,謝謝LZ
haruhiteamsos
辛苦了~推文
yaya
*_*
gdeath
没想到微风吧这都翻了,辛苦了。 :oops:
abalee
_F,[...],startopacity,endopacity


startopacity: 动画的初始不透明度
endopacity: 动画的结束不透明度
0 - 透明, 1 - 完全透明
0-不可见,1-完全可见

这个参数应该可以用小数,即是用0.5来控制该图片为半透明

EDIT:

至于用C来控制颜色的哪一段,简单来说就是 所有用SB写出来的颜色 比 原来的颜色 要暗。可以参考玩的时候背景会变暗。
Topic Starter
Breeze
This map has been deleted on the request of its creator. It is no longer available.
tsuka
非常感谢
lcclarke
那你说的这些脚本,在Design里面都能实现么?~
Topic Starter
Breeze

lcclarke wrote:

那你说的这些脚本,在Design里面都能实现么?~
Editor里只能实现最基础的四种功能:
  1. 移动
  2. 淡入淡出
  3. 放大缩小
  4. 旋转
如果是要变换颜色或者设定精确的坐标,时间点的话只能用脚本
对了,还有事件触发SB也只能个脚本编写
总之editor功能有很多限制
Darkrai7
就这么多了?~
循环中可以给图片的坐标自定义变量吗?~或随机坐标...
比如说~
我要在一段地方设定一个循环~而这个循环的步骤是:

淡出淡入~放大/缩小~淡出淡入~缩小/放大~移动到随机位置~淡出淡入...循环~

一共8次~每次有4X4张图片要执行这个动作...

像这样的动作怎么通过简短的操作去完成呢?~
尤其是当要处理的图片数量过多时...
Colin Hou
官方FAQ上说SBE肯定会实现那些现在只有脚本才能搞定的功能的...

只是不知何年何月了 *_*
Topic Starter
Breeze

Darkrai7 wrote:

就这么多了?~
循环中可以给图片的坐标自定义变量吗?~或随机坐标...
比如说~
我要在一段地方设定一个循环~而这个循环的步骤是:

淡出淡入~放大/缩小~淡出淡入~缩小/放大~移动到随机位置~淡出淡入...循环~

一共8次~每次有4X4张图片要执行这个动作...

像这样的动作怎么通过简短的操作去完成呢?~
尤其是当要处理的图片数量过多时...
坐标的自定变量应该是可以的,只要不是太简单的变量(即有可能出现在其他地方但其实又不是这个用处的相同变量)都是可以自定义的
随机坐标...这个貌似无法实现.所有的设定必须设定好,不能弄随机的
只是基本效果的SB的话推荐用SBE制作,因为是可见的操作也比较方便
emergist

Breeze wrote:

(255,255,255)的静态图片将会呈现他们原本的颜色,(0,0,0)上网图片将完全是黑色.这两者之间的任何数值都将形成减色(subtractive colour)【其实就是三原色的数值,(红色,绿色,蓝色),用过photoshop等图像处理软件的应该很熟悉这个,关于这个的使用可以参照我的AKB48 - Flying Get中灯光的使用】
AKB48 - Flying Get里面基本都是类似于 C,0,9949,10865,$white,$red 的东西,C后面不是应该有6个参数吗?
Topic Starter
Breeze

emergist wrote:

AKB48 - Flying Get里面基本都是类似于 C,0,9949,10865,$white,$red 的东西,C后面不是应该有6个参数吗?
如果你是指$white和$red的话, 那是我赋值的一个代码, 其实本身他所对应的是颜色的rgb值代码
emergist

Breeze wrote:

emergist wrote:

AKB48 - Flying Get里面基本都是类似于 C,0,9949,10865,$white,$red 的东西,C后面不是应该有6个参数吗?
如果你是指$white和$red的话, 那是我赋值的一个代码, 其实本身他所对应的是颜色的rgb值代码
Thx.
我弄错了,我把easing, starttime, endtime给当成颜色的前三个参数了(我说怎么这么大呢……)。
emergist

Breeze wrote:

emergist wrote:

AKB48 - Flying Get里面基本都是类似于 C,0,9949,10865,$white,$red 的东西,C后面不是应该有6个参数吗?
如果你是指$white和$red的话, 那是我赋值的一个代码, 其实本身他所对应的是颜色的rgb值代码

还有,
C,0,10865,11781,$red,$white
这段代码不太明白,在图中光线的颜色并没有从红色变为原本的颜色,而是直接变成了蓝色,那么这段代码起什么作用呢?
Topic Starter
Breeze

emergist wrote:

Breeze wrote:

还有,
C,0,10865,11781,$red,$white
这段代码不太明白,在图中光线的颜色并没有从红色变为原本的颜色,而是直接变成了蓝色,那么这段代码起什么作用呢?
具体是哪段代码? 因为我这图里面也用了很多循环代码, 而循环代码很多就是基于00:10:865开始的这段的, 实际上对应的时间点并不一定就刚好是这个时间点
emergist

Breeze wrote:

具体是哪段代码? 因为我这图里面也用了很多循环代码, 而循环代码很多就是基于00:10:865开始的这段的, 实际上对应的时间点并不一定就刚好是这个时间点
第一段(不好意思,我是新手,请多指教)。
show more
Please sign in to reply.

New reply