「吉里吉里/KAG ノベルゲーム制作入門」サポートページ

Last-modified: 2016-03-22 (火) 11:57:23

拙著「吉里吉里/KAG ノベルゲーム制作入門*1のサポート情報をまとめてあります。

スクリーンショット

この本で紹介しているスクリプトの実行画面をいくつか掲載します。

book_sample.jpg

左上:右クリックサブルーチンのロード画面(バージョンB)、右上:同コンフィグ画面(バージョンAB共通)、左下:同コンフィグ画面(バージョンCD共通)、右下:同セーブ画面(バージョンD)。

プレビュー

一部ですが以下で内容を確認できます。

吉里吉里/KAGのバージョンに関して

吉里吉里2 version 2.28 rev.3 / KAG3 version 3.28 rev.3

2008/1/22に、吉里吉里2 version 2.28 rev.3 / KAG3 version 3.28 rev.3が公開されました。
これは吉里吉里2 version 2.28 / KAG3 version 3.28の不具合修正版で、仕様の変更などはありません。
「吉里吉里/KAG ノベルゲーム制作入門」での自習でも、吉里吉里2 version 2.28 rev.3 / KAG3 version 3.28 rev.3の使用を推奨します。
なお、このバージョンの修正点は吉里吉里 変更点の詳細を参照してください。

吉里吉里2 version 2.30 / KAG3 version 3.30以降

2008/9/16に吉里吉里2 version 2.30 / KAG3 version 3.30が公開されました。
吉里吉里2 version 2.28 rev.3 / KAG3 version 3.28 rev.3とは大きく以下の点が異なります。

  • WindowsVistaがサポート対象になった
  • Windows98/MEがサポート対象外になった
  • ワイドモニター対応が強化された
  • Config.tjsからsaveDataLocationが削除された。なお、セーブデータ保存場所は吉里吉里設定(またはコマンドラインオプション-datapath)で設定するようになっています
    • 3.11の「セーブデータ保存場所」、7.3.5の「インストール先フォルダと栞の保存先フォルダの問題」の説明と合致しません
  • ログファイル名がkrkr.console.logに固定になり、デフォルトの出力先フォルダがセーブデータ保存先になった
  • timeout, ctimeout, wheel, cwheel, click, cclick, framemove, fadepausebgm, setbgmstop, clearbgmstop, setbgmlabel, clearbgmlabelタグが追加された
  • 読み進みのキーはKAGWindow.supportReadingKeyで設定するようになった
  • Windows Media Video形式ファイル(.WMV)の再生に対応した
  • 吉里吉里設定(krkrconf.exe)の設定が外部ファイル(~.cf)に出力されるようになった
    • 配布ファイルに.cfファイルも含める必要があります。逆引きマニュアルも参照のこと
    • エンジン設定.exeの設定も外部ファイル(~.cfu)に出力されるようになっています

吉里吉里2 version 2.30 rev.2 / KAG3 version 3.30 rev.2では、収録サンプルの一部で不具合が発生することを確認しています。*2右クリックサブルーチンとタイトルメニュー画面の差分ファイルのみ置いておきます。

また、(マイクロソフトが仕様を変更したらしく)最近のWindowsではオーバーレイモードでのムービー再生で不具合が発生しやすくなっています。レイヤモード(かミキサーモード)を使用してください。詳細はベストプラクティスを参照してください。

正誤表

書籍側

位置備考
p76サンプル3.5.2の9行目[layopt layer=0 page=fore visible=true left=412 top=63][layopt layer=1 page=fore visible=true left=412 top=63]
p197上から9行目を呼び出す(後述)を呼び出す
p245下から3行目5種類4種類
p245下から2行目点線で囲んだ部分が四角で囲んだ部分が
p300下から6行目; tf.conf_ch_speed … 選択した文字表示速度(0:ノーウェイト、1:早い、2:普通、3:遅い); tf.conf_ch_speed … 選択した文字表示速度(0~10)コメントのため影響なし
p300下から5行目; tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0:ノーウェイト、1:早い、2:普通、3:そのまま); tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0~10)コメントのため影響なし
p350下から8行目; 配列tf.album_targetを作る; 配列tf.album_thumbnailを作るコメントのため影響なし
p242~p389辞書辞書配列

誤りではないが「~しよう」と「~する」はどちらかに統一した方が良かった。

収録サンプルスクリプト側*3

プロジェクトフォルダファイル備考
3_5_2first.ks9[layopt layer=0 page=fore visible=true left=412 top=63][layopt layer=1 page=fore visible=true left=412 top=63]
5_6rclick_config.ks30; tf.conf_ch_speed … 選択した文字表示速度(0:ノーウェイト、1:早い、2:普通、3:遅い); tf.conf_ch_speed … 選択した文字表示速度(0~10)コメントのため影響なし
5_6rclick_config.ks31; tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0:ノーウェイト、1:早い、2:普通、3:そのまま); tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0~10)コメントのため影響なし
5_7rclick_config.ks30; tf.conf_ch_speed … 選択した文字表示速度(0:ノーウェイト、1:早い、2:普通、3:遅い); tf.conf_ch_speed … 選択した文字表示速度(0~10)コメントのため影響なし
5_7rclick_config.ks31; tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0:ノーウェイト、1:早い、2:普通、3:そのまま); tf.conf_ch_2nd_speed … 選択した既読文字表示速度(0~10)コメントのため影響なし
5_8-5_12_rclick_balbum_init.ks39; 配列tf.album_targetを作る; 配列tf.album_thumbnailを作るコメントのため影響なし
5_8-5_12_rclick_dalbum_init.ks39; 配列tf.album_targetを作る; 配列tf.album_thumbnailを作るコメントのため影響なし
5_8-5_12_rclick_dConfig.tjs17;System.title = "吉里吉里";;System.title = "吉里吉里/KAG ノベルゲーム制作入門";タイトルバーのキャプションが違う
5_8-5_12_rclick_dConfig.tjs695;type = "MIDI";;type = "Wave";Ogg Vorvisファイルが再生できない

補足

ゲームシステム画面用素材の営利目的利用に関して

「個別対応」としておりますが、筆者ではなく秀和システム様に直接問い合わせた方が手っ取り早いです。

2.2 必要なソフトウェアを揃えよう

以下のソフトウェアは、配布先のURLが変更しています。

Peggy
http://www.anchorsystems.jp/
Pixia
http://www.pixia.jp/
WHiNNY
http://kntware.net/

2.3.1 素材サイトを利用する*4

5.4~5.7 右クリックサブルーチンを作ろう

自作ゲームに組み込むには

手っ取り早く自作ゲームに組み込む場合、以下の作業が必要。
詳細は本の説明を参照。

  • Config.tjsを修正する(本の説明を参照)
  • tf.rclick_messageとtf.load_messageの値を修正する
    • 右クリックサブルーチン専用にメッセージレイヤを用意・指定すること(1枚あれば充分)。例えば、自作ゲーム内でmessage0~message2を使っているなら、これらの変数の値は'message3'としておく。また、Config.tjsのnumMessageLayersも適切な値(この例では4以上)に修正する必要がある

右クリックサブルーチン・バージョンDのセーブ/ロード画面のみバージョンBのそれに置き換えるには

以下の作業を行う。
プロジェクトフォルダ5_7は別フォルダ上にコピー済みであること。

  1. 5_7\imageフォルダの以下のファイルを削除する
    • savemode_~.png…23個ある
    • loadmode_~.png…同上
    • loadmode_bg_normal.ma
    • savemode_bg_normal.ma
  2. 5_5\imageフォルダの以下のファイルを5_7\imageフォルダにコピーする
    • loadmode_back_bt.png
    • loadmode_bg_normal.png
    • savemode_back_bt.png
    • savemode_bg_normal.png
  3. 5_5\scenarioフォルダの以下のファイルを5_7\scenarioフォルダに上書きコピーする
    • rclick_load.ks
    • rclick_save.ks
  4. 5_7\system\Config.tjsのnumBookMarksの値を10に変更する
  5. 念のため、セーブデータを削除する

「グラフィック閲覧」時、マウス右クリックで右クリックメニュー画面に戻るには

Inside KAG3/小技の「一時的に隠されたメッセージをマウス右クリックで解除するには」を参考に、rclick.ksに組み込むこと。

右クリックサブルーチン・バージョンC/Dのロード画面で、(未設定)の項目にマーカーを表示しないようにするには

Inside KAG3/小技の「領域アクション定義ファイルでの条件分岐など」を参考に、領域アクション定義ファイル(loadmode_bg_normal.ma)を修正すること。

5.9 タイトルメニュー画面を作る~5.12 サウンドテスト画面を作る

自作ゲームに組み込むには

自作ゲームに組み込む要領は、上の右クリックサブルーチンのそれと同じ。
なお、変数名はtf.title_messageなどとなっていることに注意。
これまた詳細は本の説明を参照で。*5

アルバム画面のeventcgマクロでファイル名の制約を解除するには

以下は一例。
念のためセーブデータを削除しておくこと。

まず、eventcgマクロを以下のように修正する。

[macro name=eventcg]
  ; storage属性値と同じ値の要素が、配列tf.album_storageにあるか調べる
  [eval exp="tf.___eventcg_i = search_storage(mp.storage)"]
  ; 見つけたら、配列sf.album_flagの該当要素をtrue(閲覧済み)にする
  [eval exp="sf.album_flag[tf.''_eventcg_i] = true" cond="tf.''_eventcg_i >= 0"]
  ; 各属性はimageタグにスルーしてしまう
  [image *]
[endmacro]

次に、AfterInit.tjs(なければ新規作成のこと)の先頭に、以下のTJSスクリプトを記述する。

function search_storage(storage)
{
  var re_ext = new RegExp("\\.(jpg|jpeg|bmp|tlg|png|eri)$");  // 画像ファイルの拡張子にマッチする正規表現
  if (global.tf.album_storage2 === void) {   // 配列tf.album_storage2がなければ…
    global.tf.album_storage2 = new Array();  // 配列tf.album_storage2を作る
    for (var i = 0; i < global.tf.album_storage.count; i++) {
      // 配列tf.album_storageをコピーする。この時、半角英大文字を小文字化し、拡張子を取り除く
      global.tf.album_storage2[i] = re_ext.replace(global.tf.album_storage[i].toLowerCase(), "");
    }
  }
  var result = -1;
  var str = re_ext.replace(storage.toLowerCase(), "");  // ファイル名の半角英大文字を小文字化し、拡張子を取り除く
  for (var i = 0; i < global.tf.album_storage2.count; i++) {
    if (str == global.tf.album_storage2[i]) {  // 同じファイル名なら…
      result = i;                              // そのインデックスを記録
      break;
    }
  }
  invalidate re_ext;
  return result;
}

これでファイル名の半角英字の大文字小文字が違っていても、拡張子を指定/省略しても正しく検索されるようになる。
ただし、拡張子を無視しているので、例えばev0000.jpgとev0000.pngのように拡張子だけ異なるイベントCG(画像ファイル)は扱わない方が良い。

サウンドテスト画面の曲数を増やすには

  1. sound_init.ksで必要な曲数ぶん、配列tf.sound_captionとtf.sound_storageの項目数を増やす
  2. sound_test.ksの29~31行目でグラフィカルボタンの表示座標(tf.sound_xがX座標、tf.sound_yがY座標)を5つ設定しているので、不足分の座標値を追加する
  3. その他、座標の細かい調整、フォントサイズの調整を行う

7.3.5 インストーラを作成する

Inno Setup5、InnoEditXでのインストーラ作成手順

以下はTIPS。

  • インストール先フォルダをC:\Fooに変更するには
    • 「インストーラの作成」において、6.の[デフォルトインストール先]を {sd}\Foo にすれば、インストール先フォルダをC:\Fooに変更できる。ここで、{sd}はWindowsインストール先ドライブを示す変数で、通常はC:となる
  • アンインストーラのショートカットを登録するには
    1. [Icons]セクションでコンテキストメニューから[アイテムの追加]を選択する
    2. [Iconセクションエディタ]ダイアログボックスが開く
    3. [ショートカットの作成先]に {group}\Fooのアンインストール と入力
    4. [ショートカットのリンク先]に {uninstallexe} と入力
    5. [OK]をクリックして、ダイアログボックスを閉じる
    6. [Script]セクションを選択すると、スクリプトに以下の行が追加されているはず
      • Name: "{group}\Fooのアンインストール"; Filename: "{uninstallexe}";
    7. インストーラーをビルドする
  • インストーラの左側の画像を任意の画像(例えばゲームの画像)に変更するには
    1. タブから[Setup]ページを選択し、更に[インターフェイス]ページを選択する
    2. [左に表示される大きな画像]で表示させたい画像ファイルを指定する
      • 画像ファイルはフルカラーのBMPファイルのみ対応。サイズは最大で横164×縦314ピクセル
    3. [Script]セクションを選択し、スクリプトにWizardImageFile行が追加されているか確認する(下はC:\Installer\ImageFile.bmpを選択した場合の例)
      • WizardImageFile=C:\Installer\ImageFile.bmp

以下も参照のこと。

7.3.6 オートラン対応のインストールCDを作成する

以下はTIPS。

以下の行をautorun.infの最後に追加すれば、インストールCDを挿入したときのCD-ROMドライブアイコンを変更できる。
なお、アイコンファイル(下の例ではMyIcon.ico)をCDのルートフォルダに一緒に焼く必要がある。

icon=MyIcon.ico

実行可能形式ファイル(.exe)を指定することもできる。
末尾の ,0 はアイコンのインデックス(これを省略した場合は ,0 を指定したのと同じ)。

icon=setup.exe,0

以下も参照のこと。

ソフトウェアに関して

EzKanren

配布サイトがてげUmezに移転しています。こちらからダウンロードしてください。

あるいは、手作業で関連付けを行うか、別途、関連付けツールを入手~関連付けしてください。

簡単ですが以下のバッチファイルでも関連付けができます。

使い方は以下の通り。

  1. エクスプローラから、KAGシナリオ(.ks)およびTJSスクリプト(.tjs)に関連付けたいテキストエディタ(の実行形式ファイル)を、associate.batにドラッグ&ドロップする
  2. 関連付けするか確認してくるのでYキーとEnterキーを押す。なお、Y以外のキーとEnterキーを押せば中断する
  • テスト実績はWindowsXP Professional SP2のみ(Windows2000/Vistaでも動作すると思うが未確認)
  • ファイルタイプKAGScenarioおよびTJSScriptを追加する

UNLHA32.DLL

UNLHA32.DLL 2.63h

操作の手順などは本のそれ(2.55b)と変わらず。

UNLHA32.DLL 2.62b

操作の手順などは本のそれ(2.55b)と変わらず。

UNLHA32.DLL 2.60e

操作の手順などは本のそれ(2.55b)と変わらず。

UNLHA32.DLL 2.57a

操作の手順などは本のそれ(2.55b)と変わらず。

UNLHA32.DLL 2.56a

操作の手順などは本のそれ(2.55b)と変わらず。
2.55bの不具合修正版で仕様は変わっていない。

簡単インストーラ

簡単インストーラ 2.37a

操作の手順などは2.37と変わらず。

簡単インストーラ 2.37

  • インストール先フォルダの指定(ステップ33~34)
    • [アプリケーション情報の設定]ダイアログの[インストールフォルダ]ページに項目が移動しています
  • 著作権表示(ステップ36)
    • [アプリケーション情報の設定]ダイアログの[アプリケーション]ページに項目が移動しています

簡単インストーラ 2.36a3

操作の手順などは本のそれ(2.36a)と変わらず。

簡単インストーラ 2.36a2

操作の手順などは本のそれ(2.36a)と変わらず。
2.36aの不具合修正版で仕様は変わっていない。

Inno Setup 5

Inno Setup 5.2.3

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.2.3でもそのまま使用可能。

Inno Setup 5.2.2

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.2.2でもそのまま使用可能。

Inno Setup 5.2.1

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.2.1でもそのまま使用可能。

Inno Setup 5.2.0

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.2.0でもそのまま使用可能。

Inno Setup 5.1.14

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.1.14でもそのまま使用可能。

Inno Setup 5.1.13

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.1.13でもそのまま使用可能。

Inno Setup 5.1.12

操作の手順などは本のそれ(5.1.11)と変わらず。
Japanese-5-5.1.11.islはInno Setup 5.1.12でもそのまま使用可能。

Inno Setup 5.1.11

Old Inno Setup Downloadsからisetup-5.1.11.exeをダウンロードできる。
バージョンが一致しないと心配な人はここから入手のこと。

参考

余談

Japanese-5-5.1.11.islの87行目、

SelectLanguageLabel=インストール中に利用する言語を撰びます:

は「びます」ではなく「びます」の間違いと思われるので、気になるなら修正すると良い。

InnoEditX

サイト閉鎖がアナウンスされたので、早めに入手のこと。

InnoEditX 1.20.0.0

操作の手順などは本のそれ(1.14.0.0)と変わらず。

謝辞

作中の登場人物2名の名前は、W.Deeさんに命名してもらいました。
その他、#kirikiriircの皆さんには色々とお世話になりました。
感謝。


*1 システム面、特に右クリックサブルーチンに力を入れていますが、右クリックサブルーチンだけで100ページ近く割いていたとは、見本が届くまで知らなかった…。
*2 吉里吉里2 version 2.30 rev.2 / KAG3 version 3.30 rev.2の不具合らしい…。
*3 この表の「行」とは、改行までを1行として数える方法での行番号;エディタによっては「論理行」とか「物理行」とか用語が統一されていない。
*4 利用規約には注意してください。
*5 正規表現の使えるテキスト検索ツール(JGREPgetiaなど)で tf\.[a-zA-Z0-9_]+_message と検索すれば、全てヒットするはず。