文字を表示しよう

# どんなスタイルにするか

おおよそこの世の中の文字ベースのアドベンチャーゲームは、メッセージ枠を表示してそこに文字を表示するタイプと、画面全面に文字を表示するタイプ(ヴィジｏアルノベルタイプ)に分かれると思いますが、文字の表示場所が違うだけで大差ないと思われるので、KAG はどちらの方式でもできるようになっています。
二つの方式
また縦書きもできます。
縦書き表示
デフォルトでは横書きのいわゆるヴィジュアルノベルタイプの表示を行うようになっています。詳しくは Config.tjs を参照してください。このチュートリアルではこのデフォルトのヴィジュアルノベルタイプの表示を前提に話を進めます。

# とにかくなにかを表示する

では、試しに何かを表示してみましょう。scenario フォルダの中には、first.ks というファイルがあると思います。このファイルが一番最初に読み込まれるシナリオファイルです。
標準の状態では、以下のような内容が書き込まれています。
`[wait time=200]
*start|スタート
[cm]
こんにちは。
`
いきなりごちゃごちゃ書いてあって困るかと思いますが、「こんにちは。」と書いてある行のみ注目してください。この「こんにちは。」の代わりに、なにか表示したい文字をエディタで書き込んでみてください。たとえば、「こんばんわ。」でもかまわないです。
そうしたら、吉里吉里を起動し、[フォルダ/アーカイブ選択]のダイアログボックスが開いたら、あなたの作ったプロジェクトフォルダを指定して [OK] ボタンを押します。指定するのはプロジェクトフォルダです。first.ks ではありません。
「こんばんわ。」
すると、真っ黒な画面に「こんばんわ。」と表示されましたね。背景を指定するのは後 ( → 背景を表示しよう ) で説明します。
とにかく、この「こんにちは。」の代わりに表示したい文字を書き込めば、このように表示させることができるのです。

# クリック待ちと改行を使ってみよう

今度は、行末でクリック待ちをしてみましょう。クリック待ちをするには、[l] をクリック待ちをさせたい部分に書き込みます。( [l] は半角です; l は小文字の L )
それと、改行を行わせるために [r] をそのあとに書きます。
`[wait time=200]
*start|スタート
[cm]
こんにちは。[l][r]
ごきげんよろしゅう。[l][r]
`
吉里吉里はいったん終了させて、また起動し、プロジェクトフォルダを実行してみてください。
クリック待ち
「こんにちは。」の後でクリック待ちとなり、クリックをすれば改行されて、「ごきげんよろしゅう。」と表示されたはずです。

# 改ページ待ちを使ってみよう

文字を全部消去して、また左上から文字を表示し始めたいときは、新しい行に [cm] と書き込みます。( [cm] は半角です )
しかしその前にクリック待ちを行わないと、勝手に画面が消去されてしまいます。[cm] の前には普通は [p] と書き込みます。以下の例を見てください。
`[wait time=200]
*start|スタート
[cm]
こんにちは。[l][r]
ごきげんよろしゅう。[l][r]
改ページしますよ。[p]
[cm]
改ページしました。
`
さて、これを実行してみてください。[p] の位置で改ページを示す記号が現れてクリック待ちとなり、クリックすると文字が全部消去されて、再び左上から「改ページしました。」と表示されたと思います。
Note
メッセージを消去するタグは er ct cm の３つがあります。それぞれ微妙に動作が違うのでセーブとロードの説明のところ ( → セーブ・ロードに対応させよう ) で説明します。特別なことをやらないのであれば cm に統一してしまってもよいかも知れません。
Note
KAG 3 未満のチュートリアルでは、ここで ct を使っていました。cm は ct 同様、すべてのメッセージレイヤをクリアしますが、ct のように、操作対象のメッセージレイヤを表画面の messaeg0 に戻したりしません。ct よりも使い勝手がよいかと思います。
しかし、後述のセーブ可能なラベルの直後は、cm か ct タグを書かなければならないということは注意しなければなりません。
KAG では、文字はすべて「メッセージレイヤ」と呼ばれるレイヤに描画されます。KAG では標準ではもう一つメッセージレイヤがあって、二つを使えば二人で対話しているようなシーンも表現可能です。current タグなどを参照してください。

# タグってなんだ

で、いままで角かっこ [ ] で囲まれた半角のヤツはなんなんだということになりますが、
[ ] で囲まれているものはタグ、と呼ばれるもので、いろいろと KAG を制御するためのものです。
たとえば、一番最初の行に、`[wait time=200]` という部分がありますが、これは `wait` というタグ名に、 `time=200` という属性を伴った「タグ」です。属性は、 `time` というのが属性名で、 `200` というのが属性の値という呼び方をします。
このような感じで、まず [ の次に「タグ名」、スペースを空けて 「属性名=属性の値」を書き込みます。「属性名=属性の値」は複数続くことがあります。最後に ] がきて、タグが終わります。
これからいろいろなタグが出てきますが、最初は見よう見まねで書いていても、そのうち感覚がつかめてくると思います。
タグはいろいろと重要です。KAG に対する文字表示以外の指示はすべてこのタグで行います。いろいろなタグがありますから、タグリファレンスを参照してみてください。
マクロ ( → マクロを使おう ) を使って、既存のタグを組み合わせて新しいタグを定義することができます。これを使うとお決まりのタグをひとつのタグにできるので便利です。ゲームシステムにあわせ、あらかじめタグのセットをマクロで定義しておくと便利でしょう。
Note
KAG 3 未満では、行末に \ (円記号) を書かない限り、行末で改行されていました。KAG 3 以降では、[r] を書かない限り改行されません。KAG 3 未満の改行の扱いと同じにしたい場合は、Config.tjs の global.ignoreCR を false に指定してください。

# コマンド行

先頭に @ (半角＠) を書いた行は、「コマンド行」として認識されます。
@ の次にはタグの [ と ] で囲まれた部分、つまり、タグ名とその後に(もしあれば)属性を書きます。一つの行には一つのコマンドのみを書くことができます。
書き方が違うだけで、実質タグと同様の動作をします。
たとえば、次の２行は同じ意味になります。
`[wc time=20]
@wc time=20
`
また、「改ページ待ちを使ってみよう」の例は、以下のように書き換えることができます。
`@wait time=200
*start|スタート
@cm
こんにちは。[l][r]
ごきげんよろしゅう。[l][r]
改ページしますよ。[p]
@cm
改ページしました。
`

# シナリオ中の特殊記号・特殊行

シナリオは普通のテキストファイルで、自由に何を書いてもいいのですが、以下の記号は特殊な用途に使われるので、使いたいときは注意が必要です。

[( 半角開き角カッコ )
  タグの始まりを示す記号です(^^;;
  もしどうしても半角の角カッコの始まりを、タグの始まりとしてではなく使いたい場合は、`[[` と、これを二つ続けて書いてください ( 角カッコの閉じカッコは普通に書けば OK です )。
;( 半角セミコロン )
  このセミコロンが行頭に書かれた行は、何を書いても無視されます。つまりコメントをここに記述することができます。
*( 半角アステリスク )
  行頭に書かれた場合のみ、ラベルを定義します。リンクするときにターゲットとなるほか、セーブ・ロード時の目印にもなります (別の場所でお話しします)。
@( 半角アトマーク )
  行頭に書かれた場合のみ、コマンド行であることを示します。
タブ
  行頭のタブはあたかも無かったかのように(無視されて)扱われます。これを用いて、シナリオファイルをインデント付け (シナリオが見やすいように字下げをする) を行う事ができます。無視されるのはタブだけで、空白は無視されませんので注意が必要です。