forum

스토리보더들을 위한 스토리보드 스크립트 해석

posted
Total Posts
8
Topic Starter
Shino
Storyboarding by Scripting

원문: http://osu.ppy.sh/forum/t/1869


필독:
  • - 아래에 나오는 코드들은 .osu 파일의 [Events] 부분 및 .osb 파일에 쓰이는 것입니다.
    - 코드 중 _ 은 공란(스페이스바) 1칸과 같습니다.

    - 원문의 코드 중에서 거의 쓰이지 않는다고 판단되는 부분은 내용에서 제외했습니다. 이 점 양해바랍니다.
    - 수정하거나 보충해야 할 부분이 있다면 이 스레드를 통해 지적해주시기 바랍니다.

Sprites and Animations

유의사항:
  • 플레이 영역의 실제 크기는 640*480 픽셀입니다.
    따라서 배경 이미지를 바꾸거나 또는 움직이는 등의 효과를 쓸 경우 이미지 크기를 640*480 기준으로 맞추는 것이 좋습니다.
힌트:
  • 800*600은 x0.8, 1024*768은 x0.625 배로 하시면 640*480이 됩니다.

Sprite

  • Sprite,레이어,기준점,"파일경로",x좌표,y좌표
    _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    _이벤트종류, [...]
    _이벤트종류, [...]
    레이어: Background / Fail / Pass / Foreground
    * 겹쳐지는 순서는 Background가 맨 아래, Foreground가 맨 위입니다.
    * Background 및 Foreground의 오브젝트는 항상 보입니다.
    * Fail은 Section Fail일때, Pass는 Section Pass일때만 보입니다.

    기준점: TopLeft / TopCentre / TopRight / CentreLeft / Centre / CentreRight / BottomLeft / BottomCentre / BottomRight
    * 기본값은 Centre입니다.
    * 이미지의 위치, 회전 및 크기변환 (벡터형 크기변환 포함) 등의 기준점을 지정합니다.
    * Centre는 오타가 아니라 Center(중앙)의 영국식 표기법입니다.

    파일경로: 해당 이미지 파일의 상대경로(해당 곡 폴더 기준)
    * 예시: "dog.jpg" / "lyric\lyric1.png" / "story board.jpg"

    x좌표, y좌표: 플레이 영역에서 이미지의 기본 위치
    * (0,0)은 화면 좌측 상단 / (320,240)은 화면 중심(기본값) / (640,480)은 화면 우측 하단

Animation

  • Animation,레이어,기준점,"파일경로",x좌표,y좌표,프레임수,프레임당시간,루프종류
    _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    _이벤트종류, [...]
    _이벤트종류, [...]
    애니메이션의 경우, "sliderball.png" 라는 10프레임 애니메이션을 사용하려 한다면
    "sliderball0.png" 에서 "sliderball9.png" 까지 총 10개의 파일을 만들어두면 됩니다.

    프레임수: 애니메이션에 사용되는 총 프레임수 (최대 10)

    프레임당시간: 각 프레임의 지연 시간 (ms 단위)

    루프종류: LoopForever (무한반복) / LoopOnce (1회 루프후 정지)
    * 기본값은 LoopForever입니다.

Events

  • _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    이벤트종류: 오브젝트에 적용할 수 있는 이벤트는 아래와 같습니다. 각 단어의 이니셜 앞글자를 사용하여 표기합니다.

    [list:dba5b]F - Fade (오브젝트를 사라지거나 나타나게 합니다)
    M - Move (오브젝트를 움직입니다)
    S - Scale (오브젝트의 크기를 원래 비율에 맞춰 조정합니다)
    V - Vector scale (오브젝트의 가로/세로 크기를 따로 조정합니다)
    R - Rotate (오브젝트를 회전시킵니다)
    C - Colour (오브젝트에 색을 입힙니다)
    P - Parameters (기타 효과입니다)

    L - Loop (반복 기능입니다)
    * 루프에 관한 설명은 Looping을 참고해주시기 바랍니다.
변화종류: 세가지 종류가 있습니다. 가속도 개념을 이해하는 사람이라면 쉽게 알아차릴 수 있습니다.

  • 0 - 변화 속도가 일정합니다. (기본값입니다)
    1 - 변화 속도가 처음엔 빠르다가 갈수록 느려집니다.
    2 - 변화 속도가 처음엔 느리다가 갈수록 빨라집니다.
시작시간 및 종료시간: 오브젝트에 이벤트(움직이거나 회전하는 등)가 적용되는 동안의 시간을 뜻합니다. (ms 단위)

이벤트변수에 관한 설명은 Event Parameter를 참고해주시기 바랍니다.

Event Parameter

유의사항:
  • 이하 코드에서 [...]으로 생략된 부분은 변화종류, 시작시간, 종료시간입니다.
    이벤트에 따라 이벤트변수의 종류 또한 달라지므로 보실 때 코드의 앞부분을 확인해주시기 바랍니다.


  • _F,[...],시작투명도,종료투명도
    시작투명도: 오브젝트의 변환 전 투명도
    종료투명도: 오브젝트의 변환 후 투명도
    * 0은 완전 투명, 1은 완전 불투명입니다. 0 이상 1 이하의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.


    _M,[...],시작x,시작y,종료x,종료y
    시작x 및 시작y: 오브젝트가 움직이기 시작하는 지점의 좌표
    종료x 및 종료y: 오브젝트가 멈추는 지점의 좌표
    * 위에서 한번 말했었지만 (0,0)이 화면 좌측 상단, (640,480)이 화면 우측 하단입니다.


    _S,[...],시작크기,종료크기
    시작크기: 오브젝트의 변환 전 크기
    종료크기: 오브젝트의 변환 후 크기
    * 1은 100%, 2는 200% 식이며, 0 이상의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.
    * 원래 그림 크기에 비례하여 커지거나 줄어듭니다.


    _V,[...],시작가로,시작세로,종료가로,종료세로
    시작가로, 시작세로: 오브젝트의 변환 전 가로/세로 크기
    종료가로, 종료세로: 오브젝트의 변환 후 가로/세로 크기
    * Scale과 마찬가지로 1은 100%, 2는 200% 식이며, 0 이상의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.


    _R,[...],시작각도,종료각도
    시작각도: 오브젝트가 회전하기 전의 각도
    종료각도: 오브젝트가 회전한 후의 각도
    * 360도 체계가 아닌 라디안 체계를 사용합니다.
    * 양수 값은 시계방향, 음수 값은 반시계방향입니다.
    * 라디안 <-> 360도 변환 계산기를 사용하시면 스크립트를 좀 더 편하게 작성하실 수 있습니다.
    (링크가 깨지면 [google:dba5b]라디안 각도 변환[/google:dba5b]을 검색해봅시다)


    _C,[...],R1,G1,B1,R2,G2,B2
    R1, G1, B1: 오브젝트의 RGB별 시작값 (0~255)
    R2, G2, B2: 오브젝트의 RGB별 종료값 (0~255)
    * 그림판처럼 단일색으로 만드는게 아니라 오브젝트에 색깔을 오버레이로 입히는 형식입니다.
    * (255,255,255)는 오브젝트 색 변화가 없는 상태입니다. / (0,0,0)은 오브젝트를 완전히 까맣게 만듭니다.
    * 흑백 오브젝트에 이벤트를 적용하시면 가장 확실한 효과를 보실 수 있습니다.


    _P,[...],p
    p: 아래 값에 따라 지정된 시간동안 각각의 효과가 적용됩니다.

    [list:dba5b]H - Horizontal flip (좌우 반전)
    V - Vertical flip (상하 반전)

Looping

  • 루프는 특정한 이벤트들을 하나의 세트로 묶어 지속적으로 반복 실행하는 역할을 합니다.

    _L,시작시간,실행횟수
    __이벤트종류, [...]
    __이벤트종류, [...]
    시작시간: 첫번째 루프가 실행되는 시간 (ms 단위)
    실행횟수: 루프를 반복 실행하는 횟수

    루프 내부의 이벤트는 시작시간의 기준을 0으로 합니다.

    그리고, 루프의 시작시간이 2000(ms)이고 첫번째 이벤트의 시작시간을 100(ms)로 정의했을 경우
    실제로 첫번째 루프가 시작되었을 때의 첫번째 이벤트가 시작되는 시간은 2000+100=2100(ms)이 됩니다.

    조금 어려운 개념일 수도 있지만, 잘 파고들면 얼마든지 이용할 수 있는 것이 루프입니다.


Tips for Scripting

  • 동일 시간간격 스크립트 쉽게 만들기:
    이 부분은 이해하기 힘들 가능성이 있으므로 차후 제가 직접 실험해본 뒤 주석을 첨부하겠습니다.
    _이벤트종류,변화종류,시작시간,종료시간,값1,값2,값3,...,값N
    이 코드는 아래의 코드와 같이 동작합니다. (*번역자의 예상으로, 실제와 어긋날 수 있습니다)
    _이벤트종류,변화종류,시작시간,종료시간,값1,값2
    _이벤트종류,변화종류,시작시간+값1(=시작시간1),종료시간+값1(=종료시간1),값2,값3
    _이벤트종류,변화종류,시작시간1+값2(=시작시간2),종료시간1+값2(=종료시간2),값3,값4

    종료시간의 생략:
    이벤트의 시작시간과 종료시간이 같을 경우 종료시간의 값을 생략할 수 있습니다.
    아래는 그 예시로, 1000,1000,320,240 부분이 1000,,320,240이 되었음을 알 수 있습니다.

    _M,0,1000,1000,320,240,320,240
    _M,0,1000,,320,240,320,240
    주의해야 할 부분은 종료시간이 입력되는 부분을 ,,으로 반드시 남겨놔야한다는 것입니다.


    종료좌표의 생략:
    이벤트의 시작좌표와 종료좌표가 같을 경우 종료좌표의 값을 생략할 수 있습니다. 아래는 그 예시입니다.

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

    특정변수 지정하기:
    스크립트 작성중에 특히 많이 쓰이는 변수가 있다면 이것에 이름을 부여한 뒤 스크립트 어디에서나 써먹을 수 있습니다.
    단 이것은 .osb 파일에만 해당되며, .osu 파일에는 해당되지 않습니다.

    [Variables]
    $white=255,255,255
    $skyblue=0,191,255
    변수를 지정하실 때는 $one=1 처럼 너무 짧은 값을 지정해서는 안됩니다. 에디터가 못 알아먹습니다.
MineC24
오오 스토리보드 관련 내용이다
Sure
좋은 글 입니다.

그런데 스토리보드 만드는 게 너무 불편해요.
Sonnyc
지난 몇년간 스토리보드 코드가 살짝 더 많아진거 같네요. (원래 있던 것들인가?)

스토리보드 할 계획은 크게 없지만 유용한글 ㄳ~
bmin11
으아 @_@
K i A i
궁금했던 점들이 정말 너무도 시원하게 해결되었습니다 ㅠㅠ
사랑합니다 시노성님 ㅠㅠ
kimtakha
어후 죠흔 글이다
H i k a r i

Shino wrote:

Storyboarding by Scripting

원문: http://osu.ppy.sh/forum/t/1869


필독:
  • - 아래에 나오는 코드들은 .osu 파일의 [Events] 부분 및 .osb 파일에 쓰이는 것입니다.
    - 코드 중 _ 은 공란(스페이스바) 1칸과 같습니다.

    - 원문의 코드 중에서 거의 쓰이지 않는다고 판단되는 부분은 내용에서 제외했습니다. 이 점 양해바랍니다.
    - 수정하거나 보충해야 할 부분이 있다면 이 스레드를 통해 지적해주시기 바랍니다.

Sprites and Animations

유의사항:
  • 플레이 영역의 실제 크기는 640*480 픽셀입니다.
    따라서 배경 이미지를 바꾸거나 또는 움직이는 등의 효과를 쓸 경우 이미지 크기를 640*480 기준으로 맞추는 것이 좋습니다.
힌트:
  • 800*600은 x0.8, 1024*768은 x0.625 배로 하시면 640*480이 됩니다.

Sprite

  • Sprite,레이어,기준점,"파일경로",x좌표,y좌표
    _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    _이벤트종류, [...]
    _이벤트종류, [...]
    레이어: Background / Fail / Pass / Foreground
    * 겹쳐지는 순서는 Background가 맨 아래, Foreground가 맨 위입니다.
    * Background 및 Foreground의 오브젝트는 항상 보입니다.
    * Fail은 Section Fail일때, Pass는 Section Pass일때만 보입니다.

    기준점: TopLeft / TopCentre / TopRight / CentreLeft / Centre / CentreRight / BottomLeft / BottomCentre / BottomRight
    * 기본값은 Centre입니다.
    * 이미지의 위치, 회전 및 크기변환 (벡터형 크기변환 포함) 등의 기준점을 지정합니다.
    * Centre는 오타가 아니라 Center(중앙)의 영국식 표기법입니다.

    파일경로: 해당 이미지 파일의 상대경로(해당 곡 폴더 기준)
    * 예시: "dog.jpg" / "lyric\lyric1.png" / "story board.jpg"

    x좌표, y좌표: 플레이 영역에서 이미지의 기본 위치
    * (0,0)은 화면 좌측 상단 / (320,240)은 화면 중심(기본값) / (640,480)은 화면 우측 하단

Animation

  • Animation,레이어,기준점,"파일경로",x좌표,y좌표,프레임수,프레임당시간,루프종류
    _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    _이벤트종류, [...]
    _이벤트종류, [...]
    애니메이션의 경우, "sliderball.png" 라는 10프레임 애니메이션을 사용하려 한다면
    "sliderball0.png" 에서 "sliderball9.png" 까지 총 10개의 파일을 만들어두면 됩니다.

    프레임수: 애니메이션에 사용되는 총 프레임수 (최대 10)

    프레임당시간: 각 프레임의 지연 시간 (ms 단위)

    루프종류: LoopForever (무한반복) / LoopOnce (1회 루프후 정지)
    * 기본값은 LoopForever입니다.

Events

  • _이벤트종류, 변화종류, 시작시간, 종료시간, 이벤트변수
    이벤트종류: 오브젝트에 적용할 수 있는 이벤트는 아래와 같습니다. 각 단어의 이니셜 앞글자를 사용하여 표기합니다.

    [list:1337]F - Fade (오브젝트를 사라지거나 나타나게 합니다)
    M - Move (오브젝트를 움직입니다)
    S - Scale (오브젝트의 크기를 원래 비율에 맞춰 조정합니다)
    V - Vector scale (오브젝트의 가로/세로 크기를 따로 조정합니다)
    R - Rotate (오브젝트를 회전시킵니다)
    C - Colour (오브젝트에 색을 입힙니다)
    P - Parameters (기타 효과입니다)

    L - Loop (반복 기능입니다)
    * 루프에 관한 설명은 Looping을 참고해주시기 바랍니다.
변화종류: 세가지 종류가 있습니다. 가속도 개념을 이해하는 사람이라면 쉽게 알아차릴 수 있습니다.

  • 0 - 변화 속도가 일정합니다. (기본값입니다)
    1 - 변화 속도가 처음엔 빠르다가 갈수록 느려집니다.
    2 - 변화 속도가 처음엔 느리다가 갈수록 빨라집니다.
시작시간 및 종료시간: 오브젝트에 이벤트(움직이거나 회전하는 등)가 적용되는 동안의 시간을 뜻합니다. (ms 단위)

이벤트변수에 관한 설명은 Event Parameter를 참고해주시기 바랍니다.

Event Parameter

유의사항:
  • 이하 코드에서 [...]으로 생략된 부분은 변화종류, 시작시간, 종료시간입니다.
    이벤트에 따라 이벤트변수의 종류 또한 달라지므로 보실 때 코드의 앞부분을 확인해주시기 바랍니다.


  • _F,[...],시작투명도,종료투명도
    시작투명도: 오브젝트의 변환 전 투명도
    종료투명도: 오브젝트의 변환 후 투명도
    * 0은 완전 투명, 1은 완전 불투명입니다. 0 이상 1 이하의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.


    _M,[...],시작x,시작y,종료x,종료y
    시작x 및 시작y: 오브젝트가 움직이기 시작하는 지점의 좌표
    종료x 및 종료y: 오브젝트가 멈추는 지점의 좌표
    * 위에서 한번 말했었지만 (0,0)이 화면 좌측 상단, (640,480)이 화면 우측 하단입니다.


    _S,[...],시작크기,종료크기
    시작크기: 오브젝트의 변환 전 크기
    종료크기: 오브젝트의 변환 후 크기
    * 1은 100%, 2는 200% 식이며, 0 이상의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.
    * 원래 그림 크기에 비례하여 커지거나 줄어듭니다.


    _V,[...],시작가로,시작세로,종료가로,종료세로
    시작가로, 시작세로: 오브젝트의 변환 전 가로/세로 크기
    종료가로, 종료세로: 오브젝트의 변환 후 가로/세로 크기
    * Scale과 마찬가지로 1은 100%, 2는 200% 식이며, 0 이상의 소숫점 자리(최대 10자리)가 포함된 수라면 가능합니다.


    _R,[...],시작각도,종료각도
    시작각도: 오브젝트가 회전하기 전의 각도
    종료각도: 오브젝트가 회전한 후의 각도
    * 360도 체계가 아닌 라디안 체계를 사용합니다.
    * 양수 값은 시계방향, 음수 값은 반시계방향입니다.
    * 라디안 <-> 360도 변환 계산기를 사용하시면 스크립트를 좀 더 편하게 작성하실 수 있습니다.
    (링크가 깨지면 [google:1337]라디안 각도 변환[/google:1337]을 검색해봅시다)


    _C,[...],R1,G1,B1,R2,G2,B2
    R1, G1, B1: 오브젝트의 RGB별 시작값 (0~255)
    R2, G2, B2: 오브젝트의 RGB별 종료값 (0~255)
    * 그림판처럼 단일색으로 만드는게 아니라 오브젝트에 색깔을 오버레이로 입히는 형식입니다.
    * (255,255,255)는 오브젝트 색 변화가 없는 상태입니다. / (0,0,0)은 오브젝트를 완전히 까맣게 만듭니다.
    * 흑백 오브젝트에 이벤트를 적용하시면 가장 확실한 효과를 보실 수 있습니다.


    _P,[...],p
    p: 아래 값에 따라 지정된 시간동안 각각의 효과가 적용됩니다.

    [list:1337]H - Horizontal flip (좌우 반전)
    V - Vertical flip (상하 반전)

Looping

  • 루프는 특정한 이벤트들을 하나의 세트로 묶어 지속적으로 반복 실행하는 역할을 합니다.

    _L,시작시간,실행횟수
    __이벤트종류, [...]
    __이벤트종류, [...]
    시작시간: 첫번째 루프가 실행되는 시간 (ms 단위)
    실행횟수: 루프를 반복 실행하는 횟수

    루프 내부의 이벤트는 시작시간의 기준을 0으로 합니다.

    그리고, 루프의 시작시간이 2000(ms)이고 첫번째 이벤트의 시작시간을 100(ms)로 정의했을 경우
    실제로 첫번째 루프가 시작되었을 때의 첫번째 이벤트가 시작되는 시간은 2000+100=2100(ms)이 됩니다.

    조금 어려운 개념일 수도 있지만, 잘 파고들면 얼마든지 이용할 수 있는 것이 루프입니다.


Tips for Scripting

  • 동일 시간간격 스크립트 쉽게 만들기:
    이 부분은 이해하기 힘들 가능성이 있으므로 차후 제가 직접 실험해본 뒤 주석을 첨부하겠습니다.
    _이벤트종류,변화종류,시작시간,종료시간,값1,값2,값3,...,값N
    이 코드는 아래의 코드와 같이 동작합니다. (*번역자의 예상으로, 실제와 어긋날 수 있습니다)
    _이벤트종류,변화종류,시작시간,종료시간,값1,값2
    _이벤트종류,변화종류,시작시간+값1(=시작시간1),종료시간+값1(=종료시간1),값2,값3
    _이벤트종류,변화종류,시작시간1+값2(=시작시간2),종료시간1+값2(=종료시간2),값3,값4

    종료시간의 생략:
    이벤트의 시작시간과 종료시간이 같을 경우 종료시간의 값을 생략할 수 있습니다.
    아래는 그 예시로, 1000,1000,320,240 부분이 1000,,320,240이 되었음을 알 수 있습니다.

    _M,0,1000,1000,320,240,320,240
    _M,0,1000,,320,240,320,240
    주의해야 할 부분은 종료시간이 입력되는 부분을 ,,으로 반드시 남겨놔야한다는 것입니다.


    종료좌표의 생략:
    이벤트의 시작좌표와 종료좌표가 같을 경우 종료좌표의 값을 생략할 수 있습니다. 아래는 그 예시입니다.

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

    특정변수 지정하기:
    스크립트 작성중에 특히 많이 쓰이는 변수가 있다면 이것에 이름을 부여한 뒤 스크립트 어디에서나 써먹을 수 있습니다.
    단 이것은 .osb 파일에만 해당되며, .osu 파일에는 해당되지 않습니다.

    [Variables]
    $white=255,255,255
    $skyblue=0,191,255
    변수를 지정하실 때는 $one=1 처럼 너무 짧은 값을 지정해서는 안됩니다. 에디터가 못 알아먹습니다.
매핑할때 참고해야겠네요 :)
Please sign in to reply.

New reply