YUKI.PNG - 42,435BYTES

メッセージマクロ言語Yuki
マニュアル

Miyakoマニュアルへ
Miyakoリファレンスマニュアルへ


<目次>

1.はじめに
2.Yukiの構造
3.Yukiの書式
 3−1.メッセージの書式
 3−2.コマンドの書式
4.変数とフラグ
5.Yukiメッセージマクロリファレンスマニュアル


 1.はじめに

本マクロ言語は、Ruby(Ruby/SDL)上で動作するゲーム作成ライブラリ・フレームワークである
「Miyako」で使用するメッセージ作成に使用する言語です。

Yuki本体は、全てMiyakoの実装miyako.rbにYukiモジュールとして含まれており、
YukiはMiyakoの実装に依存しています。


2.Yukiの構造

Yukiには、以下の2つの大まかな構造があります。
それぞれは別々のファイルに格納します。

(1)メッセージ記述
(2)コマンド記述

(1)のメッセージ記述は、実際のメッセージ(例えば、ウィンドウに表示させるメッセージ、
イメージを表示したりコマンド選択を行わせるための指示など)を記述していきます。
基本的には、1つのファイルで、1つのシーンで賄うメッセージを記述するイメージで実装します
(実装上ではYuki::Plotクラスのオブジェクトインスタンスとなります)。
また、メッセージを記述するファイルを「プロットファイル」と呼びます

(2)のコマンド記述は、コマンド(「移動する」「調べる」「取る」など)を記述していきます。
これも、メッセージ記述と同じく、1つのファイルで1つのシーンで賄います。
(実装上ではYuki::Commandsクラスのオブジェクトインスタンスとなります)。
また、コマンドを記述するファイルを「コマンドファイル」と呼びます


3.Yukiの書式

3−1.メッセージの書式

プロットファイル内では、基本的に「シナリオ単位」となります。

:scenario シナリオ名〜:endで囲まれた部分が一つのシナリオです。
(注::scenario,:endは必ず行頭に置くこと)
この部分は、Yuki::Scenarioクラスのオブジェクトインスタンスとなります。

次に、プロットファイルの一例を紹介します。

{command_init com1.txt}
今日は良い天気だ。{cr}
おや、お金が落ちている。{cr}
{command cmd1}


:scenario Money1
拾ってみた。{pause}{cr}
単なる1000円札だ。{pause}{cr}
おや、{color=red}落とし主{color=white}だろうか。{sleep=0.8}こっちに向かってくる.{pause}{clear}
{label scene2}
:end

:scenario Money2
結局拾わないでおこう。{pause}{cr}
{sleep=0.8}おや、落とし主だろうか。{sleep=0.8}こっちに向かってくる.{pause}{clear}
どうやら、お金を取り戻せたようだ。{pause}{cr}
ヨカッタヨカッタ。{pause}{clear}
{label scene3}
:end

また、ファイルの先頭で、:scenario〜:endで囲まれていない部分(上記太字緑色部分)がありますが、
これは「Mainシナリオ」と呼ばれており、まず最初にMainシナリオを実行します。
(注:逆に言うと、必ずMainシナリオを用意しておかないとエラーになります)

途中、{〜}で囲まれている部分が「マクロ」となります。
このマクロを使用して、表示する色を変えたり、メッセージの表示スピードを変えたり、
コマンドを表示したり、シーン移動のラベルを渡したり出来ます。
詳しくは、「4.Yukiメッセージマクロリファレンスマニュアル」をご参照下さい。

また、{plot_append}マクロを使用して、シナリオを追加することができます。
このとき、同じ名前のシナリオが複数存在しているときは、いちばん最後に登録したシナリオが有効になります。
シナリオを追加するときは、そのマクロファイルにMainシナリオが含まれていても無視します。

3−2.コマンドの書式

コマンドファイル内では、基本的に「コマンド群単位」となります。

:beign シナリオ名〜:endで囲まれた部分が一つのコマンド群です。
(注::begin,:endは必ず行頭に置くこと)


次に、コマンドファイルの一例を紹介します。

:begin cmd1
:title どうしよう?
:command{
name=拾う
scenario=Money1
}
:command{
name=放っておく
scenario=Money2
}
:command{
name=踊ってみる
label=Police
}
:command{
}
:end 

:begin〜:end内には、以下のデータがあります。

名称 解説
:title

コマンドのタイトル
例えば、コマンドを表示する際に、何か言葉を付けたいとき使用する

:cansel コマンドをキャンセルしたときにシナリオを移動させる時に使う
:cansel シナリオ名」と記述
:canselを記述していないときは、このコマンド群ではキャンセル禁止となる
:command

いわゆる「コマンド」

:command{
カテゴリ=内容
}
で囲む

内部では、以下のカテゴリを使用する

カテゴリ名 解説
name 表示・選択対象のコマンド
省略不可
cond コマンドを表示・選択できるようにするための条件
Rubyの記法で記述できる
変数・フラグはvar[],flag[]が使用できる
省略可能(省略した際は、無条件で表示)
scenario

選択した際に移動させたいシナリオ名
省略可能
但し、scenario、labelのどちらかを必ず記述する必要がある

label 選択した際に移動させたいシーンのラベル
省略可能
但し、scenario、labelのどちらかを必ず記述する必要がある


4.変数とフラグ

メッセージのexprマクロや、コマンドのcondカテゴリでは、
変数とフラグとして「var[name]」「flag[name]」が利用できます。
nameは変数名・フラグ名となり、実体は、Rubyのハッシュと同じです。
式の記述はRubyと同じです。
(Rubyスクリプト(Miyako)からはYuki::Variablesクラスのインスタンスメソッドとなっているためです)


5.Yukiメッセージマクロリファレンスマニュアル

{color r,g,b} ・・・ (1)
{color #rrggbb} ・・・ (2)
{color black(blue,yellow他)} ・・・ (3)


 (1)このマクロ以降、文字の表示色を[r,g,b](それぞれ0〜255)に変える
 (2)このマクロ以降、文字の表示色を#rrggbb(それぞれ00〜ff)に変える
 (3)このマクロ以降、文字の表示色を名前に対応した定数(APIリファレンス参照)に変える


{size n}


 このマクロ以降、フォントの大きさをnピクセルに変更する


{sleep w}


 w秒処理をスキップ(待機)する
 wは0(0.0)以上整数・実数での指定が可能


{message_wait w}


 文字表示のウェイトをw秒に変更する
 wは0(0.0)以上整数・実数での指定が可能


{locate x,y}


 文字の表示位置をx,y(ピクセル単位)に変更する
 x,yの原点はメッセージエリア(スプライト)の左上端


{next ...}


 移動先ラベルを指定する
 強制的にシーン移動を行う


{expr "..."}
{"..."}


 ....で表示している式を評価する
 結果を画面に描画しない


{expr ""...""}
{""...""}


 ....で表示している式を評価する
 結果を画面に描画する


{cr}


 メッセージの表示から改行して描画を続けるようにする


{pause}


 ポーズを行う
 ポーズマークを表示する
 1番目のボタンを押すまでポーズを行う


{clear}


 描画している文字を消去する


{scenario scenario_name}


 シナリオを変更する
 scenario_nameは変更するシナリオ名
 シナリオの先頭から実行される


{plot_append plot_file_name}


 現状のプロットにシナリオを追加する
 plot_file_nameは、追加するファイル名
同一名称のシナリオが存在していた場合は、新しく登録された方を採用する
 ファイルにMainシナリオが追加されても無視される


{yesno yes_scenario no_scenario}


 「はい/いいえ」コマンドを表示する
 yes_scenario,no_scenarioは、それぞれの選択後に採用作用されるシナリオ名
 ラベルは指定できない


{command_init filename}


 選択コマンド群情報をfilenameで指定したファイルから読み込む


{command_append filename}


 選択コマンド群情報をfilenameで指定したファイルから読み込んで、現在のコマンド情報に追加する
同一名称のコマンド群が存在していた場合は、新しく登録された方を採用する


{command name}


 コマンド選択を表示する
 nameは、command_initに登録されたコマンド群を指す名前


{image_init name, filename, flag}


 filenameで指定した画像をnameという名前のスプライトとして登録する
 フラグは、画像の左上ドットの色を透明色とするかを指定するもので、true/falseで指定する


{image_view name, w, h}


 画像の表示範囲を指定する
 指定したとき、表示されるのは画像の左上からの範囲となる
特に、後述するアニメーション関連の機能で使用される


{dp name, value}


 nameで指定したスプライトの深度を指定する


{layout name, [x-layout],[y-layout]}


 nameで指定したスプライトのレイアウト位置を指定をする
 x-layout,y-layoutの書式はSprite#set_layoutメソッドと同じだが、
 []は必ず必要


{move name, x, y}


 nameで指定したスプライトの位置をx,yだけ移動する


{move_to name, x, y}


 nameで指定したスプライトの位置をx,yまで移動する


{alpha name, value}


 nameで指定したスプライトの透明度を指定(0〜255)する


{show name}


 スプライトを画面に表示する
 name(image_initで指定した)に対応したスプライトを表示する


{hide name}


 スプライトを画面から隠す
 name(image_initで指定した)に対応したスプライトを隠蔽する


{animation_init name,image,time}


 アニメーションの初期化
 nameは使用するときに指定する名前(アニメーション名)、
imaageはアニメーション対象の画像名(image_initマクロで指定したものなど)、
timeはアニメーションウェイト時間(Miyako::SpriteAnimation.newメソッドの引数に準拠)


{animation_character name,num}


 アニメーションの初期化
 nameでしていしたアニメーションのキャラクターを指定する、
numはキャラクター番号


{animation_start name}


 アニメーションを開始する


{animation_stop name}


 アニメーションを停止する


{animation_reset name}


 アニメーションの開始を先頭のパターンに戻す


{sound filename,vol,flag}


 filenameで指定した効果音・BGMを演奏する
 volは演奏するボリューム、flagは、trueのときは演奏が終わるまで待機する


Last Updated 2006.10.01
Cyross Makoto