xos_standard @ ウィキ
http://w.atwiki.jp/xos_standard/
xos_standard @ ウィキ
ja
2015-01-18T14:25:57+09:00
1421558757
-
<xostemp>
https://w.atwiki.jp/xos_standard/pages/89.html
&bold(){<xostemp>}は、文書が&bold(){XOSテンプレート}ファイルであることを明記するための最上位の[[グループタグ]]です。
**文法
><xostemp name='lr2'>
> (要素)
></xostemp>
**属性
>(省略可)name='文字列'
このテンプレートの名前です。[[<general>]]から参照される場合はファイル名が基準になるので、この属性は必須ではありません。
**要素
-[[<general>]]のテンプレート化可能な要素
<xostemp>は[[テンプレートの一覧]]にあるような各種テンプレートの&bold(){実体}を記述するためのタグです。
[[テンプレートの一覧]]にあるテンプレートは&bold(){実装が内包します}。<xostemp>はユーザーが自分でテンプレートを作りたい場合に利用します。
[[<general>]]の各属性から呼び出された<xostemp>は、&bold(){属性が何であれ全ての要素が適用されます}。
2015-01-18T14:25:57+09:00
1421558757
-
実装
https://w.atwiki.jp/xos_standard/pages/88.html
&bold(){実装}とは、つまるところ&bold(){XOS再生ソフト(プレイヤー)}のことを指します。
XOSは設計図に過ぎませんから、実際に演奏する場合は内容を&bold(){解釈}し、&bold(){譜面}として処理しなければなりません。この処理を実際に行うのが&bold(){実装}です。
XOS規格(このwiki)内で「実装は~します」などと書かれている場合、実装はその機能を&bold(){必ず持たなければなりません}。
「実装に依存します」と書かれている場合、実装の製作者は任意にその値などを決めることができます。&bold(){この場合実装はエラーを吐くこともできます}。
「実装は~できます」などと書かれている場合、機能の規定はありませんが、必要に応じて機能を追加することができます。
「しなくても構いません」などと書かれている場合、基本的には機能の追加が期待されますが、技術的に難しい場合などは省略することができます。
以下にXOSのタグ解説ページでは特に触れられていない&bold(){実装が必ず持つべき機能}を挙げます。
XOS再生ソフトの製作者は参考にしてください。
-十分に高精度なタイマーを&bold(){2つ}持つ
最低でも&bold(){ミリ秒}(0.001秒)単位で正確であることが期待されます。音楽演奏ゲームにおいて&bold(){最も重要な要素}です。
1つ目のタイマーはタイマーAと称します。タイマーAは[[タイミングオブジェクト]]の処理の基準となります。
楽曲開始時にタイマーAの計時を開始し、その値と各オブジェクトのtime値が等しく(十分に近く)なったとき、そのオブジェクトを処理します。ただし[[ノートオブジェクト]]は処理タイミングより&bold(){ある程度早く}画面上に出現しなければなりません。
2つ目のタイマーはタイマーBと称します。こちらは[[<stop>]]や[[<reverse>]]といった特殊なオブジェクトの処理に使われます。詳しくは各タグの説明ページを参照してください。
-演奏タイミングに合わせて特定のレーンに[[ノートオブジェクト]]が落下(方向は問わない)してくる
[[トップページ]]でも触れていますが、複数のレーンを"重ねる"ことは可能です。ただし、各レ
2015-01-18T13:57:18+09:00
1421557038
-
操作デバイス
https://w.atwiki.jp/xos_standard/pages/87.html
&bold(){操作デバイス}とは、XOSの演奏に使用される入力装置のことです。
XOSで使用する操作デバイスは[[<device>]]で定義されます。
XOSが規定する操作デバイスは、今のところ次の2種類です:
-スイッチ(オン、オフの2つの状態がある)
-ローター(時計回り(CW)、反時計回り(CCW)、停止の3つの状態がある)
操作デバイスは本質的に、&bold(){いくつの状態を持つか}のみによって区別されます。
スイッチ型は多くの音楽演奏ゲームで使われる鍵盤タイプ、ボタンタイプ、タッチデバイスを使うならタッチの有無など、2種類の状態を定義できれば物理デバイスは何でも構いません。
ローター型は左右に回転できるつまみ、上下に回転するホイールなど、一部の演奏ゲームで使われます。必ず3種類の状態のいずれかになるのであれば、例えばトグルスイッチのような形式でも構いません。
[[<device>]]で定義する場合、スイッチはsw、ローターはrotとなります。
XOSでは&bold(){将来的に}次の操作デバイスを規定する可能性があります:
-デュアル(オフ、Aがオン、Bがオン、AB共にオンの4つの状態がある)
-アナログ(操作状態に応じて0~255又は0.0~1.0の段階的/無段階的複数の状態がある)
デュアル型は既存の音楽演奏ゲームでいえば「太鼓の達人」の入力装置が該当します(「太鼓の達人」自体はこのデバイスをスイッチとして扱っています)。
アナログ型は、ジョイスティックやボリューム、デュアルショック系のコントローラーにあるアナログボタンなどが該当します。
もし[[<device>]]でこれらを定義できるようにする場合、デュアルはdual、アナログはanalogになるでしょう。
これらが規定される場合、各[[ノートオブジェクト]]のwise属性、及び[[<path>]]の判定基準は拡張されます。
2015-01-13T16:23:39+09:00
1421133819
-
<switch>
https://w.atwiki.jp/xos_standard/pages/86.html
&bold(){<switch>}は、&bold(){条件分岐}を示す[[特殊タグ]]です。
**文法
><switch value="#{@foo}">
><case value="1" />
> (要素)
><case value="2" />
> (要素)
><else />
> (要素)
></switch>
**属性
(必須)value="文字列"
主に[[式展開]]による&bold(){条件値}を記述します。
上の例では、[[変数]]@fooの値が1なら最初の<case>ブロックを、2なら次の<case>ブロックを、どちらでもないなら<else>ブロックを評価します。
<switch>は[[<if>]]と同じく&bold(){ブロック}を発生させるタグです。
><case/>
><else/>
のいずれかのタグの&bold(){直後}から
><case/>
><else/>
></switch>
のいずれかのタグの&bold(){直前}までが1つの分岐ブロックです。
<switch>自身は&bold(){ブロックの開始タグではありません}。
<switch>が見つかった場合、まずvalue属性を評価し、有効な値が得られた場合は次のブロックを探します。有効な値が得られなかった場合は</switch>まで解釈をスキップします。&bold(){有効でない値}は、例えば[[式展開]]で[[定義><define>]]されていない[[変数]]を使った場合などに発生します。
[[<case>]]が見つかると、これと先の<switch>のvalue属性を[[==比較>式展開]]します。評価結果がTRUE(等しい)ならそのブロックを解釈し、</switch>まで解釈をスキップします。FALSE(等しくない)ならブロックの終わりまで解釈をスキップします。
[[<else>]]が見つかると、そのブロックを解釈します。
1つの<switch>要素内で解釈されるブロックは&bold(){いずれか1つだけ}です。[[<else>]]が無く、<switch>のvalueがどの[[<case>]]のvalueとも一致しない場合、<switch>の要素は全て解釈さ
2015-01-13T17:41:08+09:00
1421138468
-
<case>
https://w.atwiki.jp/xos_standard/pages/85.html
&bold(){<case>}は、条件分岐のブロックを区切る[[特殊タグ]]です。
<case>は[[空要素>要素と属性]]タグです。
<case>の使用方法は[[<switch>]]を参照してください。
**文法
><case value="1" />
**属性
(必須)value="文字列"
[[式展開]]による記述も有効です。
**親要素
-[[<switch>]]
2015-01-13T00:41:51+09:00
1421077311
-
<else>
https://w.atwiki.jp/xos_standard/pages/84.html
&bold(){<else>}は、条件分岐のブロックを区切る[[特殊タグ]]です。
<else>は[[空要素>要素と属性]]タグです。
<else>の使用方法は[[<if>]]、[[<switch>]]を参照してください。
**文法
><else />
**属性
<else>に属性はありません。
**親要素
-[[<if>]]
-[[<switch>]]
2015-01-13T00:16:20+09:00
1421075780
-
<elsif>
https://w.atwiki.jp/xos_standard/pages/83.html
&bold(){<elsif>}は、条件分岐のブロックを区切る[[特殊タグ]]です。
<elsif>は[[空要素>要素と属性]]タグです。
<elsif>の使用方法は[[<if>]]を参照してください。
**文法
><elsif condition="#{@foo >= 1}" />
**属性
(必須)condition="論理値"
主に[[式展開]]による条件式を記述します。
**親要素
-[[<if>]]
2015-01-13T00:16:09+09:00
1421075769
-
<if>
https://w.atwiki.jp/xos_standard/pages/82.html
&bold(){<if>}は、&bold(){条件分岐}を示す[[特殊タグ]]です。
**文法
><if condition="#{@foo >= 4}">
> (要素)
><elsif condition="#{@foo >= 2}" />
> (要素)
><else />
> (要素)
></if>
**属性
(必須)condition="論理値"
主に[[式展開]]による&bold(){条件式}を記述します。条件式は[[論理値>値の種類の一覧]]に置換されます。
上の例では、[[変数]]@fooの値が4以上の場合最初の&bold(){ブロック}が評価され、@fooの値が4未満かつ2以上であれば2番めのブロックが、2未満であれば<else>から始まる最後のブロックが評価されます。
このように<if>は&bold(){ブロック}を発生させるタグです。
><if>
><elsif/>
><else/>
のいずれかのタグの&bold(){直後}から
><elsif/>
><else/>
></if>
のいずれかのタグの&bold(){直前}までが1つの分岐ブロックです。
<if>が見つかった場合、condition属性がTRUEならそのブロックを解釈し、</if>まで解釈をスキップします。conditionがFALSEなら、ブロックの終わりまで解釈をスキップします。
[[<elsif>]]が見つかると、condition属性がTRUEならそのブロックを解釈し、</if>まで解釈をスキップします。conditionがFALSEなら、ブロックの終わりまで解釈をスキップします。
[[<else>]]が見つかると、そのブロックを解釈します。
1つの<if>要素内で解釈されるブロックは&bold(){いずれか1つだけ}です。[[<else>]]が無く、どのconditionもTRUEでない場合、<if>の要素は全て解釈されません。
**要素
-[[オブジェクトタグ]]
-[[<bar>]]
-[[<elsif>]]
-[[<else>]]
[[<elsif>]]は任意の数置くことができます。
[[<else>]]ブロックは
2015-01-13T17:40:42+09:00
1421138442
-
特殊タグ
https://w.atwiki.jp/xos_standard/pages/81.html
&bold(){特殊タグ}とは、XOSで使われるタグのうち、&bold(){分岐構文}に使われるタグです。
XOSで使われる特殊タグは以下の5種類です:
-[[<if>]]
-[[<elsif>]]
-[[<switch>]]
-[[<case>]]
-[[<else>]]
このうち[[<if>]]と[[<switch>]]は&bold(){分岐ブロック}を&bold(){発生}させる[[グループタグ]]です。
その他は特殊タグ要素の&bold(){分岐ブロック}を&bold(){区切る}ために使われる[[空要素>要素と属性]]の[[オブジェクトタグ]]です。
特殊タグの一般的な文法は以下のとおりです。
><if condition="#{@foo >= 4}">
> (要素)
><else />
> (要素)
></if>
各タグの役割や文法はそれぞれのページを参照してください。
2015-01-13T16:34:51+09:00
1421134491
-
実体参照
https://w.atwiki.jp/xos_standard/pages/80.html
XOSの中では、基本的に文字コードがサポートするあらゆる種類の文字を使うことができますが、いくつかの文字は解釈時に特別な意味を持つため、そのまま使うことはできません。
それらの特殊文字は、&bold(){実体参照}にて代替します。以下に特殊文字と、その代替となる実体参照を挙げます。
厳密なXMLでは実体参照はセミコロン;で終わる必要がありますが、XOSでは実体参照のセミコロンは必要ありません。
|特殊文字|実体参照|意味|
|&|&|アンパサンド(AMPersand)|
|<|<|小なり(Less Than)|
| >|>|大なり(Greater Than)|
|'|&apos|アポストロフィ(シングルクォート、APOStrophe)|
|"|"|クォーテーションマーク(ダブルクォート、QUOTation mark)|
|#|&sh|シャープ(SHarp)|
|@|&at|アットマーク(AT mark)|
アンパサンド&bold(){&}に続く文字が実体参照に該当しない場合、おそらくその&はそのまま解釈されますが、誤動作を避けるなら徹底して実体参照を用いたほうが安全です。
XOSは文字コードとして[[UTF-8>http://ja.wikipedia.org/wiki/UTF-8]]を使うべきですが、実装が正しく解釈できるならその他の文字コードでも構いません。XOSはその内部では文字コードを明言しません。
2015-01-12T17:23:53+09:00
1421051033