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

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

＜目次＞

１．はじめに ２．Yukiの構造 ３．Yukiの書式 ３−１．メッセージの書式 ３−２．コマンドの書式 ４．変数とフラグ ５．Yukiメッセージマクロリファレンスマニュアル

１．はじめに

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

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

２．Yukiの構造

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

（１）メッセージ記述
（２）コマンド記述

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

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

３．Yukiの書式

３−１．メッセージの書式

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

: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シナリオを用意しておかないとエラーになります）

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

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

３−２．コマンドの書式

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

: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のどちらかを必ず記述する必要がある

４．変数とフラグ

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

５．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