目次へ戻る
前へ戻る

GSML (Gassan Scenario Markup Language)
version 1.1

Last modified: 18 April, 2001

Table of Contents
このGSMLは、『月山実行環境 バージョン3.1.0』の為のシナリオ製作に開発されたものです。

このドキュメントの目次は、GSMLのノード仕様を一望する事が出来ます。

 目次の項目はエレメント名であり、左によっているほど子ノードとなります。例えば、エレメント「chara」は、エレメント「cut」の開始タグと終了タグの中でのみ利用可能である事がわかります。そして、エレメント「chara」の親ノードであるエレメント「cut」は、エレメント「scene」の開始タグと終了タグの中でのみ利用可能だと知る事が出来ます。


The gsml element

<!ELEMENT gsml (data|scene|if|loop|end)+>
<!ATTLIST gsml version CDATA #REQUIRED >

Start tag

End tag

<gsml>

</gsml>

attribute version REQUIRED

エレメント「gsml」は、「XML宣言(XML declaration)」と「文章型宣言(Document Type Declaration)」の次に記述されるエレメントであり、他のGSMLエレメントは全てこのエレメントの開始タグと終了タグの間に記述されます。

エレメント「gsml」は、エレメント「data」「scene」「if」「loop」「end」のいずれか一つ以上持たなければなりません。

また、「XML宣言」と「文章型宣言」は必ず必要なものです。

  • XML宣言(XML declaration)

    <?XML version="1.0" ?>

  • 文章型宣言(Document Type Declaration)

    <!DOCTYPE scenario SYSTEM "geml.dtd">


<?XML version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE scenario SYSTEM "geml.dtd">

<gsml version="1.1">

....

</gsml>


The data element

<!ELEMENT data EMPTY>
<!ATTLIST data operation CDATA #REQUIRED>
tag

EMPTY

attribute operation REQUIRED

このエレメントは無くてもかまいません。
このエレメントは複数個あってもかまいません。

無条件でのフラグ処理を行います。月山はGSMLを読み込むと、はじめにエレメント「data」を処理します。
アトリビュート「operation」にフラグ処理の式を与えます。
この式は、

フラグ名 :=

の形式を用います。(「:=」は、「右辺の値を左辺のフラグにセットする」という意味を持ちます。)
フラグにセットできる値は、「true」と「false」の二つの値のみです。

<-- このサンプルは、フラグ「CONTENT_#0」に「false」をセットする処理です。-->
<data operation="CONTENT_#0 := false" />


The scene element

<!ELEMENT scene (cut+)>
<!ATTLIST scene name CDATA #REQUIRED>
tag

<scene>...</scene>

attribute name REQUIRED

このエレメントは無くてもかまいません。
このエレメントは複数個あってもかまいません。

このエレメント「scene」は、シナリオをシーンごとに分ける為のものです。一つのシナリオファイル(GSMLファイル)に複数のシーンが存在する事が出来ます。
SGMLファイル中で、プレーヤーが体感し操作する部分のプログラムは、全てこのエレメント「scene」の開始タグと終了タグの間に記述されます。
一つのファイルの中で、エレメント「scene」は複数個あってもかまいません。
それぞれのエレメント「scene」は、必ず一つ以上のエレメント「cut」を持たなければなりません。

アトリビュート


The cut element

<!ELEMENT cut (imagelist|text|audio|plugin|selection|timer)+>
tag

<cut>...</cut>

このエレメント「cut」は、シーンの内容をカットごとに分ける為のものです。一つのシーンに対して複数のカットが存在する事が出来ます。
画像や文章の表示のプログラムは、この中で記述されるエレメント「imagelist」「text」で行なわれます。

エレメント「cut」は、エレメント「imagelist」「text」「audio」「plugin」「selection」「timer」のいずれか一つ以上持たなければなりません。


The imagelist element

<!ELEMENT imagelist (effect?,(image|filter|composer)+)>
tag

<imagelist>...</imagelist>

このエレメント「imagelist」は、一つ以上のイメージを表示する際の一単位を作成します。イメージリストのタグ内に複数のイメージが与えられた場合、それらを合成し、一つのイメージとして扱い、もしエレメント「effect」があれば、そのイメージをエレメント「effect」に渡します。その結果が表示されます。

エレメント「imagelist」は、エレメント「image」「filter」「composer」のいずれか一つ以上持たなければなりません。

<imagelist>
<image file="kitchen.jpg" />
</imagelist>


The effect element

<!ELEMENT effect (param*)>
<!ATTLIST effect name CDATA #REQUIRED>
tag

<effect>...</effect>

attribute name REQUIRED

このエレメント「effect」は、エレメント「imagelist」で作成されたイメージを表示する際に作用する特殊効果を指定します。すでに表示されているイメージと、新に表示するイメージを加工することでエフェクトが実現されます。
パラメータが必要な場合はエレメント「param」でプラグインにパラメータを渡します。

アトリビュート

標準で用意されたエフェクト

See Also: エレメント「param」

The image element

<!ELEMENT image EMPTY>
<!ATTLIST image file CDATA #REQUIRED>
<!ATTLIST image position (right|center|left) #IMPLIED>
<!ATTLIST image x CDATA #IMPLIED>
<!ATTLIST image y CDATA #IMPLIED>
<!ATTLIST image loader CDATA #IMPLIED>
tag

EMPTY

attribute file REQUIRED value  
  position IMPLIED right | center | left
  x IMPLIED  
  y IMPLIED  
  loader IMPLIED  

このエレメント「image」は、エレメント「imagelist」内で画像合成の要素の一つとして扱われるイメージ・レイヤーを作成します。それぞれのイメージ・レイヤーは、エレメント「imagelist」のタグにはさまれた順に合成されます。先頭にあるイメージ・レイヤーをベース画像とし、続くイメージ・レイヤーを重ねていきます。
エレメント「filter」を利用することで、それぞれのイメージ要素にフィルター(画像処理)を施すことが可能です。また、エレメント「composer」を利用することで、複数のイメージを合成したものを一つの要素として扱うことも可能です。

アトリビュート

<image file="images/tomone.bmp" loader="BMPImageLoader"/>


The filter element

<!ELEMENT filter ((param*),image)>
<!ATTLIST filter name CDATA #REQUIRED>
<!ATTLIST filter position (right|center|left) #IMPLIED>
<!ATTLIST filter x CDATA #IMPLIED>
<!ATTLIST filter y CDATA #IMPLIED>
tag

<filter>...</filter>

attribute name REQUIRED value  
  position IMPLIED right | center | left
  x IMPLIED  
  y IMPLIED  

このエレメント「filter」は、エレメント「imagelist」内で画像合成の要素の一つとして扱われるイメージにフィルター(画像処理)を施します。
パラメータが必要な場合はエレメント「param」でプラグインにパラメータを渡します。

エレメント「filter」は、エレメント「image」を必ず一つだけ持ちます。

アトリビュート

標準で用意されたフィルター

<filter name="FirstPixelTransparentFilter">
<image file="images/tomone.bmp" loader="BMPImageLoader"/>
</filter>


See Also: エレメント「param」

The composer element

<!ELEMENT composer ((param*),(image|filter)+)>
<!ATTLIST composer name CDATA #REQUIRED>
<!ATTLIST composer position (right|center|left) #IMPLIED>
<!ATTLIST composer x CDATA #IMPLIED>
<!ATTLIST composer y CDATA #IMPLIED>
tag

<composer>...</composer>

attribute name REQUIRED value  
  position IMPLIED right | center | left
  x IMPLIED  
  y IMPLIED  

このエレメント「composer」は、エレメント「imagelist内で画像合成の要素の一つとして扱われるイメージ・レイヤーを、ダイナミックに作成することを可能にします。
パラメータが必要な場合はエレメント「param」でプラグインにパラメータを渡します。

エレメント「composer」は、エレメント「image」「filter」で渡された二枚のイメージを必要とします。

アトリビュート

標準で用意されたエフェクト

<composer name = "MaskTransparentFilter">
<image file="images/rituko.bmp" loader="BMPImageLoader"/>
<image file="images/rituko_shadow.bmp" loader="BMPImageLoader"/>
</composer>


See Also: エレメント「param」

The text element

<!ELEMENT text (#PCDATA)>
<!ATTLIST text prompt (on|off) #IMPLIED>
<!ATTLIST text scroll (on|off) #IMPLIED>
tag

<text>...</text>

attribute prompt IMPLIED value on | off
  scroll IMPLIED on | off

エレメント「text」は、このエレメントの開始タグと終了タグの間に記述されたテキストを表示します。その後、マウスのクリック待ち状態になります。

アトリビュート

<text prompt="off" >この一段目のテキストは、</text>
<text >改行後、この二段目のテキストが続けて表示されます。そしてクリック待ち・・・。</text>
<text scroll="on" >クリックされると、一段目と二段目のテキストがクリアされ、この三段目が表示されます。</text>

The audio element

<!ELEMENT audio EMPTY>
<!ATTLIST audio layer (bgm|se|voice) #REQUIRED>
<!ATTLIST audio command (play|loop|stop) #REQUIRED>
<!ATTLIST audio file CDATA #REQUIRED>
tag

EMPTY

attribute layer REQUIRED value bgm | se | voice
  command REQUIRED play | loop | stop
  file REQUIRED    

このエレメント「audio」は、三つのレイヤー「bgm」「se」「voice」を持ち、それぞれにサウンドデータを設定し再生する事ができます。

アトリビュート

利用可能なオーディオファイル

  • AIFF, AU, AVI, GSM, MP2, MP3, QT, WAV

    bit: 8bit または 16bit
    チャンネル:モノラル または ステレオ
    サンプリングレート:
    8kHz から 48kHz
    線形および
    u-law 符号化データをサポート

  • MIDI(TYPE 0TYPE 1RMF

    Java サウンドでは、ソフトウェア MIDI ウェーブテーブルシンセサイザが内蔵されており、
    特別なMIDI再生機能を用意しなくても、高品質なMIDI再生を可能とします。

 最高64チャンネルまでの MIDI およびデジタルオーディオの合成およびレンダリングを利用できます。

(注意)
16 ビットステレオデータで 22kHz での品質をクライアントのシステムでサポートされない場合は、
自動的に 8 ビットまたはモノラル出力になります。


The plugin element

<!ELEMENT plugin (param*)>
<!ATTLIST plugin name CDATA #REQUIRED>
tag <plugin>...</plugin>
attribute name REQUIRED

このエレメント「plugin」は、一時的に外部のJAVAクラスに処理を移します。

アトリビュート「name」にはプラグイン名を与えます。(正確にはクラスパスの通ったディレクトリに存在するGPluginクラス名を指定します。)
パラメータが必要な場合はエレメント「param」でプラグインにパラメータを渡します。

標準で用意されたプラグイン

<plugin name="jp.gr.java_conf.wffm.gassan.view.plugin.SamplePlugin" />

See Also: エレメント「param」
プラグインによる機能拡張

The param element

<!ELEMENT param EMPTY>
<!ATTLIST param name CDATA #REQUIRED>
<!ATTLIST param value CDATA #REQUIRED>
tag

EMPTY

attribute name REQUIRED
  value REQUIRED

このエレメント「param」は、パラメータを必要とするプラグインにパラメータを渡します。

アトリビュート

<plugin name="MoviePlugin">
<param name="file" value="resources/test.mpg" />
<param name="width" value="320" />
<param name="height" value="240" />
</plugin>

<plugin name="FlashPlugin">
<param name="file" value="resources/wffm.swf" />
<param name="width" value="320" />
<param name="height" value="240" />
</plugin>


The selection element

<!ELEMENT selection (alternative+)>
tag <selection>...</selection>

このエレメント「selection」は、選択項目を表示するためのもで、エレメント「alternative」と共に使用します。

See Also: エレメント「alternative」

The alternative element

<!ELEMENT alternative (#PCDATA)>
<!ATTLIST alternative operation CDATA #REQUIRED>
tag <alternative>...</alternative>
attribute operation REQUIRED

エレメント「alternative」は、選択項目の一項目を構築します。タグの間に記述されたテキストは選択項目名として表示され、選択された時のみアトリビュート「operation」に与えられた式を処理します。
この式は、

フラグ名 :=

の形式を用います。(「:=」は、「右辺の値を左辺のフラグにセットする」という意味を持ちます。)
フラグにセットできる値は、「true」と「false」の二つの値のみです。

アトリビュート

<text>There is the door of the entrance to a kitchen room. </text>
<selection>
<alternative operation = "KITCHEN_ROOM := true" >OPEN</alternative>
<alternative operation = "KITCHEN_ROOM := false" >CLAUSE</alternative>
</selection>


See Also: エレメント「selection」

The timer element

<!ELEMENT timer EMPTY>
<!ATTLIST timer value CDATA #REQUIRED>
tag

EMPTY

attribute value REQUIRED

 

このエレメント「timer」は、アトリビュート「value」で指定されたミリ秒の間、次のタグ処理への移行を停止します。現行の処理(再生中のオーディオ等)は停止しません。

アトリビュート

<!-- 1秒間停止する -->
<timer value="1000" />


The if element

<!ELEMENT if EMPTY>
<!ATTLIST if condition CDATA #REQUIRED>
<!ATTLIST if gsmlFile CDATA #REQUIRED>
tag

EMPTY

attribute condition REQUIRED
  gsmlFile REQUIRED

このエレメントは無くてもかまいません。
このエレメントは複数個あってもかまいません。

このエレメント「if」は、条件分岐を行います。
アトリビュート「condition」にフラグ名 = の形式で与えられた式を評価し、その結果が「真」である時のみ、アトリビュート「gsmlFile」で指定されたシナリオファイル(GSMLファイル)へ分岐します。

アトリビュート

<!-- もし、フラグ「KITCHEN_ROOM」が「true」なら、シナリオファイル(GSMLファイル)「kitchen-room.gsml」にジャンプする -->
<if condition = "KITCHEN_ROOM = true" gsmlFile = "kitchen-room.gsml" />


See Also: エレメント「data」
エレメント「selection」
エレメント「loop」

The loop element

<!ELEMENT loop EMPTY>
<!ATTLIST loop condition CDATA #REQUIRED>
<!ATTLIST loop gsmlFile CDATA #REQUIRED>
tag

EMPTY

attribute condition REQUIRED
  gsmlFile REQUIRED

このエレメントは無くてもかまいません。
このエレメントは複数個あってもかまいません。

このエレメント「loop」は、繰り返し処理を行います。
アトリビュート「condition」にフラグ名 = の形式で与えられた式を評価し、その結果が「真」である間、アトリビュート「gsmlFile」で指定されたシナリオファイル(GSMLファイル)を繰り返し呼び出し(分岐)ます。

アトリビュート

<!-- フラグ「MENU」が「true」の間、シナリオファイル(GSMLファイル)「menu.gsml」を表示する。 -->
<loop condition = "MENU = false" gsmlFile="menu.gsml" />


See Also: エレメント「data」
エレメント「selection」
エレメント「if」

The end element

<!ELEMENT end EMPTY>

Start tag

End tag

EMPTY

EMPTY

このエレメントは無くてもかまいません。
このエレメントは複数個あってもかまいません。

このエレメント「end」は、それ以降のシナリオファイル(GSMLファイル)をキャンセルし、GEMLファイルで指定されたエンディングに処理を移します。

目次へ戻る
前へ戻る

Copyright © 1999-2001 WFFM. All Rights Reserved.