wiki
This page contains an outdated translation of the original content. Please check the English version for the most accurate information (and consider updating the translation if you are able to help out)!

Storyboard Scripting General Rules

An example of scripting in .osb.An example of scripting in .osb.

ガイドの残りの.osb もしくは .osuファイルの[Events]の下に置かれるコードについて解説をしています。osbに記述されたコマンドは全ての難易度で、osuファイルに記述されたものはその難易度のみで動作します。

基本ルール

オブジェクト

  • "オブジェクト"はストーリーボード(以降SBと省略)上で動作する画像、アニメーションのいずれかを指します。SBは画像にかぎらず音を使用することも可能です;より詳しい情報はここを参照
  • 利用できるフォーマットはPNGとJPEGです。
    • JPEGは非可逆性で小さいファイルサイズとなる反面、ピクセルあたりにおける精度に劣りっており、また透明度のサポートもしていません。従って背景やフォトリアリスティックな画像に使用するのに向いています。
    • PNGはロスレスでピクセルあたりにおける情報もしっかりと保持している反面、JPEGよりも容量が大きいです。また透明度に関してもサポートされているので手前に表示させる画像やテキストに適しています。
  • アニメーションはエンジン内で行われます。なのでPNGのレイヤーやアニメーション機能を使用してはいけません。代わりにファイルの名前の拡張子の手前にフレームの番号を入れ複数の画像を使って保存をしてください。(例 "sample.png"が2フレームの場合 "sample0.png"、 "sample1.png" )

画面サイズ

Editorのスクリーンサイズ。緑はスクリーンのサイズで赤はプレイエリア。Editorのスクリーンサイズ。緑はスクリーンのサイズで赤はプレイエリア。

  • スクリーンは幅640ピクセル、高さ480ピクセルです(640x480)
    • 一般的なプレイエリアは幅510ピクセル、高さ385ピクセル(510x385)
  • 画面左上を原点とし、Xはに移動することで、Yはに移動することで数値が変化していきます。既存のユークリッド座標システムとは違いますが、多くのグラフィックシステムと同じです。
  • 画面の外の座標を指定することが可能です(画面外から画像が移動してくる等)。
  • Beatmap Editorのデザインタブでカーソルの座標が表示されます。

*Editorの座標:

  • スクリーン; x: 0 - 640, y: 0 - 480
  • プレイエリア; x: 60 - 570, y: 55 - 440

レイヤー

  • 全ての画像はスキンとヒットオブジェクトの下に配置されます
    • なので"最も"手前のレイヤー(Foreground)であってもHPバー、サークル、スライダー、スピナー、カーソルなどの下に置かれます。
  • 4つのレイヤーが存在し、表示順がそれぞれ定められています。
    • Background
    • Fail ("fail状態"の場合にのみプレイヤーに表示されます、下のゲーム状態を参照してください。)
    • Pass ("pass状態"の場合にのみプレイヤーに表示されます、下のゲーム状態を参照してください。)
    • Foreground
  • デザインタブと異なり"Fail"と"Pass"のレイヤーは同時に表示されることはありません。
  • デフォルトではビートマップに設定されたプレビューバックグラウンド(曲選択で見ることができる背景) 以外の下のレイヤーに置かれます。しかし、もしあなたがSBのオブジェクトとして指定された同じ画像を使用していた場合、それはビートマップのロード時に自動的に消されます。

重なりに関してのルール

  • オブジェクトは異なるレイヤーで重なり、上から順に描写されます(例えばForegroundのレイヤーのオブジェクトはBackground、Fail、Passのレイヤーよりも常に手前で見ることができます。)
  • 同じレイヤーでオブジェクトがいくつかある場合、上から指定されている順に表示されます。
  • osbファイルからのコマンドがosuファイルの終わりにosbファイルからのコマンドはosuファイルのコードより優先されます。

ゲームの状態

ただの動画の代わりにSBを背景として使用することで、ゲームプレイでの状態に合わせて変化する機能 です。osu!はプレイヤーのその時の状態に応じ、Fail/Passのレイヤーが表示されます。これらの状態は"Fail状態"と"Pass状態"と呼ばれます。

最初より前のプレイタイムの状態 (要するにサークル/スライダー/スピナーの前で、 MP3/OGGの前とは限りません)**

  • 常にPass状態です。Failのレイヤーが表示されることはありません。PassもしくはFailのいずれかのレイヤーを使用することは推奨されません。その時点では"Passしている"ことを表示する意味がありません。

プレイ中の状態 ("ドレインタイム"、プレイヤーがドレインによって減っていき、クリックがされると思われるポイント)**

  • Pass状態はGeki/Elite Beat(300)で最初のカラーのコンボ、もしくは前のカラーのコンボを叩いた場合です。
  • Fail状態はそれ以外の時です。注意点としてKatu/Beat!の時はDSのゲームのように特別な状態が存在していないということです(元は3つの状態がありました)。
    • TaikoではFail状態はプレイヤーが最後のオブジェクトをミスした場合になり、それ以外はPass状態になります。
    • Catch the Beatでは常に前のBreakの状態に依存します。最初のプレイ可能なパートでは常にPass状態になります。

休憩時の状態 (プレイタイムを区切っている間)**

  • Pass状態はプレイタイムの終了した時点でHPが半分より上の場合(具体的には"O"シンボルが表示される場合).
  • Fail状態はその他の場合です("X"シンボルが表示される場合).
    • Taikoでは特定の状態に達した場合に動作します。以下の2つの例を参照してください。
      • 例A: 96.5%のACCでHPが40%の時はFailの代わりにPassが表示されます。
      • 例B: 約30のnoteで多くの100が出ていて、HPが30%程度ならばPassの代わりにFailが表示されます。

最後のプレイタイム後の状態で、ビートマップに最低1つのBreakがあった場合。

  • Pass状態はPassの状態のまま最後に突入した場合。
  • Fail状態はその他全て。

最後のプレイタイム終了後の状態で、Breakがない場合

  • Breakと同様。

時間

CTRL+Cでタイムスタンプをコピーすることができます。CTRL+Cでタイムスタンプをコピーすることができます。

  • ビートマップのメインのMP3/OGGはミリセカンド(1000ms = 1s)単位で設定可能で、イントロ前の負の値もそれに含まれます。
  • SBのタイムはビートマップ自体のタイミングに依存しません(具体的には1分間に何回Beatを刻むかどうかなど)。なのでSBを作る前にタイミングをある程度良いものとし、後での調節のための労力を割くことがないようにしてください。
  • SBは曲の長さに制限されることがありません。曲が始まる(イントロ)前でマイナスの値を使うことでエフェクトを入れることも可能ですし、MP3/OGGが終わった(アウトロ)としても伸ばしてエフェクトを入れることができます。
  • ロードされた時、ビートマップは最も古いイベントか0のタイムのいずれかの早い方から開始されます。
    • 前者の場合はスキップボタンが表示されます。それをクリックするかスペースを押すことで0のタイムまで飛ばされます。
  • ゲーム内で最後のイベントが終了すると、リザルト画面へできるだけ早く移動するようになりますが、場合によってはクリック、もしくはスペースでスキップをする必要があります。
    • これはPass/Failが一方しか表示されない場合でもコードがあれば両方含まれます。
      • 具体的にはFailのSBが20000のタイム、Passが25000のタイムまであり、プレイヤーがFailの状態であっても25000まで待たされるということです。従ってPassとFailは同じ時間で終わるように設定をするのがベストです。
    • イベントはプレイヤーがリザルト画面へ行っても継続され、音声データは引き続き聞くことが可能です。
  • Designタブを開いている時、表示されている現在のタイムをCtrl+Cをすることで単位ミリセカンドでクリップボードにコピーすることができます。

コメント

シングルラインのCスタイルのコメントを入れることができますが、ゲーム内のEditorで保存をすればそれは消えてしまいます。デフォルトでは4つのレイヤーにコマンドを分けることが勧められています。

// This is a comment.

C/C++/C#/Javaと異なり、有効なコマンドの後ろにこのコマンドを入れることはできず、またブロックコメントをすることもできません。