個別タグ仕様メモ
凡例
(必須): このパラメータは必須です。省略するとエラーが発生する可能性があります。(任意): このパラメータは任意です。省略可能です。(デフォルト値: value): パラメータが省略された場合のデフォルト値を示します。
1. キャラクター操作関連タグ
1.1. [chara_new]
- グループ: キャラクター操作
- タイトル: キャラクターの定義
- 説明:
- ゲームに登場するキャラクターの基本的な情報を定義します。
- ここで定義したキャラクターは、
[chara_show]で表示したり、[chara_mod]で表情を変更したりできます。 name属性はゲーム内で一意である必要があります。他のキャラクターや要素のnameと重複しないようにしてください。
- パラメータ:
name: (必須) キャラクターを管理するための名前(半角英数)。 (デフォルト値:"")storage: (必須) キャラクターの基本画像ファイル。data/fgimageフォルダから読み込まれます。 (デフォルト値:"")width: (任意) 画像の表示横幅 (px)。省略時は元画像のサイズ。 (デフォルト値:"")height: (任意) 画像の表示高さ (px)。省略時は元画像のサイズ。 (デフォルト値:"")reflect: (任意) 画像を左右反転するか (trueまたはfalse)。 (デフォルト値:"false")jname: (任意) 日本語名など、メッセージウィンドウの名前表示欄に表示する名前。 (デフォルト値:"")color: (任意)jnameを表示する際の文字色 (0xRRGGBB形式)。 (デフォルト値:"")
- 期待される動作:
kag.stat.charasオブジェクトに、指定されたnameをキーとしてキャラクター情報 (pmで渡されたパラメータ) を格納します。map_face["default"]にstorageで指定された画像パスを格納します。jnameが指定されている場合、kag.stat.jcharasオブジェクトに{jname: name}の形式でマッピングを格納します。- 指定された
storageの画像をプリロードします。 - プリロード完了後、画像の元の幅と高さを取得し、
origin_width,origin_heightとしてキャラクター情報に追加します。 - ふきだしのデフォルト位置 (
fuki.left,fuki.top) を計算し、キャラクター情報に追加します。 [fuki_chara]タグで設定される領域を初期化します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[chara_new name=yuko storage=yuko.png jname=ゆうこ]
1.2. [chara_face]
-
グループ: キャラクター操作
-
タイトル: キャラクター表情登録
-
説明:
[chara_new]で定義したキャラクターに、差分表情として使用する画像を登録します。- ここで登録した表情は
[chara_mod]や[chara_ptext]タグのfaceパラメータで呼び出すことができます。
-
パラメータ:
name: (必須) 表情を登録するキャラクターのname。face: (必須) 登録する表情の名前(happy,angryなど任意)。storage: (必須) 表情に対応する画像ファイル。data/fgimageフォルダから読み込まれます。
-
期待される動作:
- 指定された
nameのキャラクター定義 (kag.stat.charas[pm.name]) を参照します。キャラクターが存在しない場合はエラーを発生させます。 - キャラクター定義内の
map_faceオブジェクトに、{face: storage}の形式で表情情報を追加または上書きします。storageがHTTP/HTTPS URLでない場合は、storageの値がそのまま格納されます (パス補完はchara_modなどで行われます)。 - 次のタグへ進みます (
nextOrder)。
- 指定された
-
サンプルコード:
;表情の登録 [chara_face name="yuko" face="angry" storage="newface.png"] ;表情の適用 [chara_mod name="yuko" face="angry"] ;発言者の名前も同時にかえたい場合 [chara_ptext name="yuko" face="angry"] ;短縮して書けます。以下も同じ意味 #yuko:angry ;chara_new で登録した画像はdefaultという名前で指定可能 #yuko:default
1.3. [chara_layer]
- グループ: キャラクター操作
- タイトル: キャラクターの差分パーツ定義
- 説明:
- キャラクターの特定の部位(目、口など)に対して、差分パーツ画像を登録します。
[chara_part]タグでこれらのパーツを組み合わせて表示を切り替えることができます。- 最初に登録された
idがそのpartのデフォルト表示となります。
- パラメータ:
name: (必須) パーツを登録するキャラクターのname。part: (必須) パーツの部位名(eye,mouthなど任意)。id: (必須) そのパーツの差分状態を示す名前(smile,closeなど任意)。storage: (任意) 差分パーツ画像ファイル。data/fgimageフォルダから読み込まれます。noneを指定すると透明なパーツ(表示しない状態)を定義できます。 (デフォルト値:"")zindex: (任意) パーツの重ね順。数値が大きいほど前面に表示されます。省略した場合、chara_layerタグで最後に指定された値が引き継がれます。 (デフォルト値:"")frame_image: (任意) カンマ区切りで画像ファイルを指定すると、フレームアニメーション(瞬きなど)を定義できます。frame_time: (任意) カンマ区切りで各フレームの表示時間をミリ秒で指定します。1000や1000-2000(ランダム)のように指定。省略すると自動で設定されます。frame_direction: (任意) フレームアニメーションの再生方向。alternateを指定すると往復再生。デフォルトは通常再生。frame_loop: (任意) フレームアニメーションをループさせるか (trueorfalse)。デフォルトはtrue。lip_image: (任意) カンマ区切りで画像ファイルを指定すると、リップシンク(口パク)用のフレームを定義できます。frame_imageとは同時に指定できません。lip_time: (任意) テキスト表示にあわせて口パクさせる場合の1フレームあたりの表示時間(ミリ秒)。デフォルトは50。lip_type: (任意) リップシンクのタイプ (textまたはvoice)。デフォルトはtext。lip_volume: (任意)lip_type="voice"の場合、各リップシンクフレームを表示するための音量の閾値をカンマ区切りで指定します(0〜100)。lip_se_buf: (任意) 特定の効果音バッファ(playseのbuf)の音量に口パクを連動させたい場合にバッファ番号を指定します。カンマ区切りで複数指定可。lip_se_buf_all: (任意) キャラクター名に関係なく、ここで指定した効果音バッファ(playseのbuf)の音量に口パクを連動させたい場合にバッファ番号を指定します。
- 期待される動作:
- 指定された
nameのキャラクター定義 (kag.stat.charas[pm.name]) を参照します。キャラクターが存在しない場合はエラーを発生させます。 - キャラクター定義内に
_layerオブジェクトがなければ作成します。 _layerオブジェクト内に指定されたpart名のキーが存在しなければ、新しいパーツ領域を作成し、default_part_id,current_part_idに指定されたidを、zindexに指定されたzindexを設定します。- パーツ領域内の指定された
idに、差分パーツ情報(pmで渡されたパラメータ)を格納します。 lip_image,frame_image,frame_time,lip_volumeがカンマ区切り文字列で指定された場合は配列に変換します。frame_time,lip_volumeの要素数が不足している場合はデフォルト値で補完します。- すでにキャラクターが表示されており(
is_show == "true")、かつ変更対象のパーツが現在表示されているパーツ(current_part_id === pm.id)の場合、[chara_part]タグを内部的に呼び出して表示を即時更新します。 - 次のタグへ進みます (
nextOrder)。
- 指定された
- サンプルコード:
[chara_layer name="yuko" part=mouse id=egao storage="image/egao.png" ]
1.4. [chara_part]
- グループ: キャラクター操作
- タイトル: キャラクターの差分パーツ変更
- 説明:
[chara_layer]タグで定義したキャラクターの差分パーツの表示を切り替えます。part=idの形式でパラメータを指定します。partは[chara_layer]で指定したpart名、idは同じくid名です。- 複数のパーツを同時に変更できます。
idの代わりに画像ファイル名を直接指定することも可能です(allow_storage=trueが必要)。zindexも同時に変更できます (part名_zindex=数値の形式)。
- パラメータ:
name: (必須) パーツを変更するキャラクターのname。time: (任意) パーツが切り替わる際のフェード時間 (ミリ秒)。省略時は[chara_config]のtimeを参照。0で瞬間表示。wait: (任意) フェードの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")allow_storage: (任意)partの値としてidではなく画像ファイル名を直接指定することを許可するか (trueまたはfalse)。 (デフォルト値:"false")- (任意)
part=id: 特定のpartに対して表示するidを指定します。例:eye=smile,mouth=close - (任意)
part_zindex=数値: 特定のpartの重ね順を変更します。例:eye_zindex=10
- 期待される動作:
- 指定された
nameのキャラクター定義 (kag.stat.charas[pm.name]) とパーツ定義 (_layer) を参照します。存在しない場合はエラーとなります。 - 指定された
part=idパラメータを走査します。 - 各
partについて、指定されたidがパーツ定義に存在するか、またはallow_storage=trueかどうかを確認します。 - 条件を満たす場合、その
partのcurrent_part_idを指定されたid(または画像ファイル名) に更新します。 - 該当する画像ファイルをプリロードリストに追加します。フレームアニメーション(
frame_imageやlip_image)が定義されている場合は、それらの画像も追加します。 - 切替対象のパーツが一つもなければ、次のタグへ進みます。
- 切替対象のパーツに対応する画像 (
preload_srcs) をプリロードします。 - プリロード完了後、キャラクターのDOM要素 (
.tyrano_chara) を取得します。 - 切替対象の各パーツについて、
- 現在のパーツ画像(
<img>要素)を取得します。フレームアニメーションが設定されている場合、関連する<img>要素もすべて取得します。 timeが指定されている場合:- 現在のパーツ画像をフェードアウトさせ、完了後に削除します (
j_img.fadeTo(time, 0, remove))。 - 新しいパーツ画像(
<img>要素)を生成し、srcを設定し、透明状態 (opacity:0) で現在のパーツ画像の直後に追加します。 - フレームアニメーションやリップシンクが定義されていれば、それらを新しいパーツ画像に適用します。
part名_zindexパラメータが指定されていれば、z-indexを設定します。- 新しいパーツ画像をフェードインさせます (
j_new_img.fadeTo(time, 1, complete))。 - すべてのパーツのアニメーションが完了したら
nextOrderを呼び出します (wait=true の場合)。
- 現在のパーツ画像をフェードアウトさせ、完了後に削除します (
timeが指定されていない場合 (瞬間切り替え):- 現在のパーツ画像の
srcを新しいものに書き換えます。 - フレームアニメーションが設定されていた場合は、関連する
<img>要素を削除し、フレームアニメーションを再設定します。 z-indexを再設定します。
- 現在のパーツ画像の
- 現在のパーツ画像(
wait=falseの場合は、アニメーションの完了を待たずにnextOrderを呼び出します。
- 指定された
- サンプルコード:
[chara_part name=yuko mouse=happy eye=happy]
1.5. [chara_part_reset]
- グループ: キャラクター操作
- タイトル: キャラクターの差分パーツをデフォルトに戻す
- 説明:
[chara_part]で変更したキャラクターの差分パーツ表示を、[chara_layer]で最初に定義したデフォルトの状態に戻します。partパラメータでリセット対象の部位を指定できます。省略するとすべての部位が対象になります。
- パラメータ:
name: (必須) リセット対象のキャラクターのname。part: (任意) リセットするパーツ部位名をカンマ区切りで指定。省略すると全パーツが対象。
- 期待される動作:
- 指定された
nameのキャラクター定義とパーツ定義を参照します。存在しない場合はエラーとなります。 - リセット対象のパーツを特定します (
partパラメータがあればそれを、なければ全パーツ)。 - 各対象パーツについて、その
default_part_idを取得します。 [chara_part]タグを内部的に呼び出し、特定したパーツとdefault_part_idをパラメータとして渡して実行します。
- 指定された
- サンプルコード:
tyranoscript [chara_part_reset name=yuko]
1.6. [chara_show]
- グループ: キャラクター操作
- タイトル: キャラクターの登場
- 説明:
[chara_new]で定義したキャラクターを画面上に表示(登場)させます。- 登場時の表情(
face)や画像(storage)、位置(left,top)、サイズ(width,height)、重ね順(zindex,depth)、左右反転(reflect)などを指定できます。 timeを指定すると、指定時間をかけてフェードインしながら登場します。pos_modeが有効な場合 ([chara_config]で設定)、left,topを指定しなければ自動的に立ち位置が調整されます。
- パラメータ:
name: (必須) 表示するキャラクターのname。time: (任意) 登場にかける時間 (ミリ秒)。省略時は[chara_config]のtimeを参照。0で瞬間表示。 (デフォルト値:1000)layer: (任意) キャラクターを表示する前景レイヤ (0以上の整数)。 (デフォルト値:"0")zindex: (任意) 重ね順。数値が大きいほど前面。 (デフォルト値:"1")depth: (任意)zindexが同じ場合の重ね順 (frontまたはback)。 (デフォルト値:"front")page: (任意) 表示するページ (foreまたはback)。 (デフォルト値:"fore")wait: (任意) 登場アニメーションの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")face: (任意) 表示する表情のface名。省略時はデフォルト表情。storage: (任意) 表示する画像ファイル。faceより優先されます。reflect: (任意) 左右反転するか (trueまたはfalse)。 (デフォルト値:"")width: (任意) 表示する横幅 (px)。省略時は[chara_new]での定義値。height: (任意) 表示する高さ (px)。省略時は[chara_new]での定義値。left: (任意) 表示する左端位置 (px)。省略時はpos_modeに従う。top: (任意) 表示する上端位置 (px)。省略時はpos_modeに従う。
- 期待される動作:
- 指定された
nameのキャラクター定義 (kag.stat.charas[pm.name]) を参照します。存在しない場合はエラーとなります。 - すでに同名のキャラクターが指定レイヤ/ページに表示されている場合は、何もしません(
nextOrderも呼ばない可能性があります)。 - 表示する画像(
storage_url)を決定します (pm.face→pm.storage→cpm.storageの順で優先)。 - 表示に必要な画像(ベース画像、パーツ画像、フレームアニメーション画像)をプリロードリストに追加します。
- キャラクター要素(
.tyrano_charaクラスを持つ<div>)と、その中にベース画像 (<img>) およびパーツ画像 (<img>) を生成します。 width,height,zindex,reflectを適用します。- パーツ画像にはフレームアニメーション(
frame_imageやlip_image)が定義されていれば適用します。 - すべての画像をプリロードします。
- プリロード完了後:
pos_modeが有効でleft/topが未指定の場合、画面上の他のキャラクターの位置を考慮して自動的に立ち位置を計算し、必要であれば既存キャラクターをアニメーションさせて移動させます。pos_modeが無効、またはleft/topが指定されている場合は、指定された位置にキャラクターを配置します。- キャラクター要素を対象レイヤに追加します (
depthに応じてprependまたはappend)。 - キャラクター要素をフェードインさせます (
pm.timeを参照)。 - アニメーション完了後、
wait=trueならnextOrderを呼び出します。
wait=falseの場合は、アニメーション開始と同時にnextOrderを呼び出します。
- 指定された
- サンプルコード:
[chara_show name="yuko" ]
1.7. [chara_hide]
- グループ: キャラクター操作
- タイトル: キャラクターの退場
- 説明:
- 画面上に表示されているキャラクターを退場させます。
timeを指定すると、指定時間をかけてフェードアウトしながら退場します。pos_modeが有効な場合 ([chara_config]で設定)、退場後に残りのキャラクターの立ち位置が自動的に調整されます。
- パラメータ:
name: (必須) 退場させるキャラクターのname。time: (任意) 退場にかける時間 (ミリ秒)。省略時は[chara_config]のtimeを参照。0で瞬間非表示。 (デフォルト値:"1000")wait: (任意) 退場アニメーションの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")layer: (任意) キャラクターが存在するレイヤ。省略時は"0"。page: (任意) キャラクターが存在するページ (foreまたはback)。 (デフォルト値:"fore")pos_mode: (任意) 退場後に立ち位置の自動調整を行うか (trueまたはfalse)。 (デフォルト値:"true")
- 期待される動作:
- 指定された
nameのキャラクター要素 (.tyrano_chara) を取得します。存在しない場合は次のタグへ進みます。 - キャラクター定義 (
kag.stat.charas[pm.name]) のis_showを"false"に設定します。 - キャラクター要素をフェードアウトさせます (
pm.timeを参照)。 - フェードアウト完了後:
- キャラクター要素をDOMから削除します (
remove())。 pos_modeが有効な場合、残りのキャラクターの立ち位置を自動調整するアニメーションを開始します。- すべてのアニメーション完了後、
wait=trueならnextOrderを呼び出します。
- キャラクター要素をDOMから削除します (
wait=falseの場合は、フェードアウト開始と同時にnextOrderを呼び出します。chara_memory=falseの場合、退場するキャラクターのstorageをデフォルト表情に戻します。
- 指定された
- サンプルコード:
[chara_hide name="yuko"]
1.8. [chara_hide_all]
- グループ: キャラクター操作
- タイトル: キャラクターを全員退場
- 説明:
- 指定したレイヤに表示されているすべてのキャラクターを退場させます。
timeを指定すると、指定時間をかけてフェードアウトしながら退場します。
- パラメータ:
time: (任意) 退場にかける時間 (ミリ秒)。省略時は[chara_config]のtimeを参照。0で瞬間非表示。 (デフォルト値:"1000")wait: (任意) 退場アニメーションの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")layer: (任意) 対象のレイヤ。省略時は"0"。page: (任意) 対象のページ (foreまたはback)。 (デフォルト値:"fore")
- 期待される動作:
- 指定されたレイヤ/ページ内のすべてのキャラクター要素 (
.tyrano_chara) を取得します。 - 取得したすべてのキャラクター要素をフェードアウトさせます (
pm.timeを参照)。 - すべてのキャラクター定義 (
kag.stat.charas) のis_showを"false"に設定します (レイヤ指定がある場合はそのレイヤのキャラのみ)。 - フェードアウト完了後:
- すべてのキャラクター要素をDOMから削除します (
remove())。 wait=trueならnextOrderを呼び出します。
- すべてのキャラクター要素をDOMから削除します (
wait=falseの場合は、フェードアウト開始と同時にnextOrderを呼び出します。chara_memory=falseの場合、すべてのキャラクターのstorageをデフォルト表情に戻します。
- 指定されたレイヤ/ページ内のすべてのキャラクター要素 (
- サンプルコード:
[chara_hide_all time=1000 wait=true]
1.9. [chara_delete]
- グループ: キャラクター操作
- タイトル: キャラクター情報の削除
- 説明:
[chara_new]で定義したキャラクター情報を削除します。- このタグを実行しても画面上のキャラクターは消えません。画面から消したい場合は
[chara_hide]を使用してください。
- パラメータ:
name: (必須) 削除するキャラクターのname。
- 期待される動作:
kag.stat.charasオブジェクトから指定されたnameのキーを持つプロパティを削除します (delete)。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[chara_delete name="yuko" ]
1.10. [chara_mod]
- グループ: キャラクター操作
- タイトル: キャラクター画像変更
- 説明:
- 表示されているキャラクターの画像を変更します。主に表情差分の切り替えに使用します。
faceパラメータで[chara_face]で登録した表情名を指定するか、storageパラメータで画像ファイルを直接指定します。timeを指定するとクロスフェードしながら切り替わります。
- パラメータ:
name: (必須) 画像を変更するキャラクターのname。face: (任意) 表示する表情のface名。storage: (任意) 表示する画像ファイル。faceより優先されます。reflect: (任意) 左右反転するか (trueまたはfalse)。 (デフォルト値:"")time: (任意) 切り替えにかける時間 (ミリ秒)。省略時は[chara_config]のtimeを参照。0で瞬間表示。cross: (任意) クロスフェード方式 (trueまたはfalse)。 (デフォルト値:"true")wait: (任意) 切り替えアニメーションの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")next: (任意)falseを指定すると、[chara_mod]タグ完了時にnextOrderを呼び出さないようにします。 (デフォルト値:"true")
- 期待される動作:
- 指定された
nameのキャラクター要素 (.tyrano_chara) を取得します。存在しない場合は、キャラクター定義 (kag.stat.charas) のstorageとreflectを更新して次のタグへ進みます。 - 表示する画像(
storage_url)を決定します (pm.face→pm.storageの順で優先)。画像が指定されなかった場合、reflectのみ処理して次のタグへ進みます。 - 表示する画像をプリロードします。
- プリロード完了後:
timeが指定されている場合 (フェード切り替え):- 現在の画像(
<img>)をクローンし、新しいsrcを設定し、透明状態 (opacity:0) で現在の画像の直後に追加します。 cross=trueの場合は、現在の画像をフェードアウトさせます。- 新しい画像をフェードインさせます。
- アニメーション完了後、現在の画像を削除します。
wait=trueならnextOrderを呼び出します。
- 現在の画像(
timeが指定されていない場合 (瞬間切り替え):- 現在の画像の
srcを新しいものに書き換えます。 wait=trueならnextOrderを呼び出します。
- 現在の画像の
- キャラクター定義 (
kag.stat.charas) のstorageを更新します。 wait=falseの場合は、アニメーション開始と同時にnextOrderを呼び出します (pm.next が “false” でない場合)。
- 指定された
- サンプルコード:
[chara_mod name="yuko" storage="newface.png"]
1.11. [chara_move]
- グループ: キャラクター操作
- タイトル: キャラクターの位置変更
- 説明:
- 表示されているキャラクターの表示位置 (
left,top) やサイズ (width,height) を変更します。 anim=trueを指定すると、指定時間をかけてアニメーションしながら変更します。アニメーション効果は[chara_config]のeffectを参照しますが、このタグのeffectパラメータで上書きも可能です。left,topには+=数値,=数値の形式で相対位置を指定できます。
- 表示されているキャラクターの表示位置 (
- パラメータ:
name: (必須) 移動させるキャラクターのname。left: (任意) 移動後の左端位置 (px)。相対指定可。top: (任意) 移動後の上端位置 (px)。相対指定可。width: (任意) 変更後の横幅 (px)。height: (任意) 変更後の高さ (px)。anim: (任意) アニメーションさせるか (trueまたはfalse)。 (デフォルト値:"false")time: (任意) アニメーション時間 (ミリ秒)。 (デフォルト値:"600")effect: (任意) アニメーション効果。 (デフォルト値:"")wait: (任意) アニメーションの完了を待つか (trueまたはfalse)。 (デフォルト値:"true")
- 期待される動作:
- 指定された
nameのキャラクター要素 (.tyrano_chara) とその中の<img>要素を取得します。存在しない場合は次のタグへ進みます。 - 変更後のCSSスタイル (
anim_style,img_anim_style) を作成します (left,top,width,heightを基に)。 anim=trueの場合:- キャラクター要素と
<img>要素に対して.animate()を実行し、スタイルを適用します。 - アニメーション完了後、
wait=trueならnextOrderを呼び出します。
- キャラクター要素と
anim=falseの場合:- キャラクター要素をフェードアウトさせます。
- フェードアウト完了後、スタイルを即時適用します。
- キャラクター要素をフェードインさせます。
- フェードイン完了後、
wait=trueならnextOrderを呼び出します。
wait=falseの場合は、アニメーション開始と同時にnextOrderを呼び出します。
- 指定された
- サンプルコード:
[chara_move name="yuko" time=100 left=20 top=100 ]
1.12. [chara_config]
- グループ: キャラクター操作
- タイトル: キャラクター操作タグの基本設定
- 説明:
- キャラクター操作関連タグ (
chara_*) のデフォルトの挙動を設定します。 - ここで設定した値は、各キャラクター操作タグで対応するパラメータが省略された場合に使用されます。
- キャラクター操作関連タグ (
- パラメータ:
pos_mode: (任意) キャラクター立ち位置の自動調整を行うか (trueorfalse)。 (デフォルト値:"true")effect: (任意)pos_modeやchara_moveで位置が変わる際のアニメーション効果。 (デフォルト値:"swing")ptext: (任意)[chara_ptext]が名前を表示する対象となる[ptext]のname。time: (任意)[chara_mod]での表情変更のデフォルト時間 (ミリ秒)。 (デフォルト値:"600")memory: (任意)[chara_hide]時に表情を記憶するか (trueorfalse)。 (デフォルト値:"false")anim: (任意)pos_mode有効時に立ち位置変更のアニメーションを行うか (trueorfalse)。 (デフォルト値:"true")pos_change_time: (任意)pos_mode有効時の立ち位置調整アニメーションの時間 (ミリ秒)。 (デフォルト値:"600")talk_focus: (任意) 発言中キャラのフォーカス演出 (brightness,blur,none)。 (デフォルト値:"none")brightness_value: (任意)talk_focus=brightness時の非発言者の明度 (0-100)。 (デフォルト値:"60")blur_value: (任意)talk_focus=blur時の非発言者のぼかし度合い (px)。 (デフォルト値:"2")talk_anim: (任意) 発言開始時のアニメーション (up,down,zoom,none)。 (デフォルト値:"none")talk_anim_time: (任意)talk_animのアニメーション時間 (ミリ秒)。 (デフォルト値:230)talk_anim_value: (任意)talk_animの移動量 (px)。 (デフォルト値:30)talk_anim_zoom_rate: (任意)talk_anim=zoom時の拡大率。 (デフォルト値:1.2)plus_lighter: (任意) キャラクターパーツ合成にmix-blend-mode: plus-lighter;を使用するか (trueorfalse)。使用する場合、パーツ画像はすべて黒背景にする必要があります。 (デフォルト値:"false")
- 期待される動作:
- 指定されたパラメータの値を
kag.stat内の対応するプロパティ (chara_pos_mode,chara_effectなど) に設定します。 talk_focusが変更された場合、現在画面に表示されているすべてのキャラクターのフィルタースタイルをリセットします。- 次のタグへ進みます (
nextOrder)。
- 指定されたパラメータの値を
2. メッセージ・テキスト関連タグ
2.1. [font]
- グループ: メッセージ関連の設定
- タイトル: テキストスタイルの変更
- 説明:
- 現在のメッセージレイヤにおけるテキストの表示スタイル(フォントサイズ、色、太字、縁取りなど)を変更します。
- 変更されたスタイルは、次に
[resetfont],[cm],[ct],[er]タグなどが実行されるまで有効です。 - デフォルトのスタイルに戻すには
[resetfont]を使用します。 - パラメータを省略した場合、そのスタイル項目は変更されません。
- パラメータ:
size: (任意) 文字サイズ (px)。 (デフォルト値:"")color: (任意) 文字色 (0xRRGGBB形式)。 (デフォルト値:"")bold: (任意) 太字にするか (trueまたはfalse)。 (デフォルト値:"")italic: (任意) イタリック体にするか (trueまたはfalse)。 (デフォルト値:"")face: (任意) フォント名。 (デフォルト値:"")edge: (任意) 縁取り色 (0xRRGGBB形式) またはnone。V515以降は太さも指定可能 (4px 0xFF0000や4px 0xFF0000, 2px 0xFFFFFFの形式)。 (デフォルト値:"")edge_method: (任意) 縁取りの実装方式 (shadoworfilter)。 (デフォルト値:"")shadow: (任意) 文字影色 (0xRRGGBB形式) またはnone。edge指定時は無効。 (デフォルト値:"")effect: (任意) 文字表示アニメーション効果 (fadeIn,rotateInなど) またはnone。 (デフォルト値:"")effect_speed: (任意)effectの表示時間 (0.2s,200msなど)。 (デフォルト値:"")gradient: (任意) 文字グラデーション (CSSグラデーション形式) またはnone。 (デフォルト値:"")
- 期待される動作:
- 現在のメッセージレイヤの
current_spanを確定させます (必要であれば新しい<span>を挿入します)。 kag.stat.fontオブジェクトのプロパティを、指定されたパラメータの値で更新します。color,edge,shadowは$.convertColorで適切な形式に変換されます。boldは$.convertBoldでboldまたはnormalに変換されます。italicは$.convertItalicでitalicまたはnormalに変換されます。- 次のタグへ進みます (
nextOrder)。
- 現在のメッセージレイヤの
- サンプルコード:
[font size=40 bold=true]
この文字は大きく、そして太字で表示されます。
[resetfont]
もとの大きさに戻りました。
2.2. [deffont]
- グループ: メッセージ関連の設定
- タイトル: デフォルトのテキストスタイル設定
- 説明:
- 現在のメッセージレイヤにおける「デフォルト」のテキストスタイルを設定します。
- ここで設定したスタイルは、
[resetfont]タグなどが実行されたときに適用されるようになります。 - このタグを実行しただけでは、現在表示されているテキストのスタイルは変更されません。
- パラメータ:
size: (任意) デフォルトの文字サイズ (px)。 (デフォルト値:"")color: (任意) デフォルトの文字色 (0xRRGGBB形式)。 (デフォルト値:"")bold: (任意) デフォルトで太字にするか (trueまたはfalse)。 (デフォルト値:"")italic: (任意) デフォルトでイタリック体にするか (trueまたはfalse)。 (デフォルト値:"")face: (任意) デフォルトのフォント名。 (デフォルト値:"")edge: (任意) デフォルトの縁取り色 (0xRRGGBB形式) またはnone。V515以降は太さも指定可能。 (デフォルト値:"")edge_method: (任意) デフォルトの縁取り実装方式 (shadoworfilter)。 (デフォルト値:"")shadow: (任意) デフォルトの文字影色 (0xRRGGBB形式) またはnone。 (デフォルト値:"")effect: (任意) デフォルトの文字表示アニメーション効果 (fadeInなど) またはnone。 (デフォルト値:"")effect_speed: (任意) デフォルトのeffect表示時間 (0.2sなど)。 (デフォルト値:"")gradient: (任意) デフォルトの文字グラデーション (CSSグラデーション形式) またはnone。 (デフォルト値:"")
- 期待される動作:
kag.stat.default_fontオブジェクトのプロパティを、指定されたパラメータの値で更新します。color,edge,shadowは$.convertColorで変換されます。boldは$.convertBoldで変換されます。italicは$.convertItalicで変換されます。- 次のタグへ進みます (
nextOrder)。
2.3. [resetfont]
-
グループ: メッセージ関連の設定
-
タイトル: テキストスタイルのリセット
-
説明:
- 現在のメッセージレイヤのテキストスタイルを、
[deffont]で設定されたデフォルトスタイルに戻します。
- 現在のメッセージレイヤのテキストスタイルを、
-
パラメータ:
next: (任意)falseを指定すると、nextOrderを呼び出しません。 (デフォルト値:"true")
-
期待される動作:
- 現在のメッセージレイヤの
current_spanを確定させます。 kag.stat.fontオブジェクトの内容をkag.stat.default_fontの内容で上書きします。pm.nextが"false"でない場合、次のタグへ進みます (nextOrder)。
- 現在のメッセージレイヤの
-
サンプルコード:
[deffont size=30] デフォルトの文字サイズ[p] [font size=55 bold=true] うおおおおおおおおおお!!![p] [resetfont] い、いきなりなんだよ! [font size=20](びっくりした…)[p] [resetfont]
2.4. [style]
- (非推奨/未実装?)
- 説明: (コメントやコードからは具体的な機能が不明。スタイル関連と思われるが詳細は要調査。)
2.5. [deletestyle]
- (非推奨/未実装?)
- 説明: (コメントやコードからは具体的な機能が不明。
[style]で設定したものを削除すると思われるが詳細は要調査。)
2.6. [message_config]
-
グループ: メッセージ関連の設定
-
タイトル: メッセージコンフィグ
-
説明: (V515以降)
- メッセージ表示に関する詳細な設定を変更します。
- 文字表示速度、縁取りの重なり、カギカッコの処理、禁則処理などを制御できます。
-
パラメータ:
ch_speed_in_click: (任意) クリック割り込み後の文字表示速度(ミリ秒/文字)。defaultで変更なし。 (デフォルト値:"1")effect_speed_in_click: (任意) クリック割り込み後の文字エフェクト速度(msまたはs)。defaultで変更なし。 (デフォルト値:"100ms")edge_overlap_text: (任意) 縁取りを前の文字に重ねるか (trueorfalse)。stroke縁取り時のみ有効。 (デフォルト値:"true")speech_bracket_float: (任意) 開始カギカッコを左にずらすか (true,false, 数値(pxなど))。 (デフォルト値:"false")speech_margin_left: (任意)speech_bracket_float有効時にテキスト全体を右にずらすか (true,false, 数値(pxなど))。 (デフォルト値:"false")kerning: (任意) 字詰めを行うか (trueorfalse)。 (デフォルト値:"false")add_word_nobreak: (任意) ワードブレイク禁止単語をカンマ区切りで追加。remove_word_nobreak: (任意) ワードブレイク禁止単語をカンマ区切りで削除。line_spacing: (任意) 行間 (px)。 (デフォルト値:"")letter_spacing: (任意) 字間 (px)。 (デフォルト値:"")control_line_break: (任意) 手動で禁則処理を行うか (trueorfalse)。 (デフォルト値:"false")control_line_break_chars: (任意) 行頭禁則文字。 (デフォルト値:"、。)」』】,.)]")
-
期待される動作:
- 現在のメッセージレイヤの
current_spanを確定させます。 kag.stat.message_configオブジェクトを必要なら初期化します。- 指定されたパラメータのうち、デフォルトコンフィグ(
default_message_config)に存在するキーの値をkag.stat.message_configに格納します。 kag.stat.word_nobreak_listを必要なら初期化します。add_word_nobreakが指定されていれば、単語リストに追加します(重複は避ける)。remove_word_nobreakが指定されていれば、単語リストから削除します。- 次のタグへ進みます (
nextOrder)。
- 現在のメッセージレイヤの
-
サンプルコード:
;クリックされても文字表示速度を変更しない [message_config ch_speed_in_click="default" effect_speed_in_click="default"] ;クリックされたら残りを瞬間表示 [message_config ch_speed_in_click="0" effect_speed_in_click="0ms"] ;セリフの先頭のカギカッコだけを左側にずらして、カギカッコの下に文章が回り込まないようにする [message_config speech_bracket_float="true"] ;"――"はワードブレイクされてほしくない [message_config add_word_nobreak="――"] ;行間も字間もめちゃくちゃ広げてみる [message_config line_spacing="50" letter_spacing="30"] ;ダッシュの字間を詰めてみる @macro name="――" [message_config letter_spacing="-4"]―[message_config letter_spacing="0"]― @endmacro ――力が欲しいか?[l][r] [――]力が欲しいか?[l][r]
2.7. [ruby]
- グループ: メッセージ・テキスト
- タイトル: ルビを振る
- 説明:
- このタグの直後に書かれる1文字に対して、ルビを振ります。
- 複数の文字にルビを振る場合は、文字ごとにこのタグを記述する必要があります。
- パラメータ:
text: (必須) ルビとして表示する文字列。
- 期待される動作:
kag.stat.ruby_strにpm.textの値を格納します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
tyranoscript [ruby text="かん"]漢[ruby text="じ"]字
2.8. [mark]
-
グループ: メッセージ・テキスト
-
タイトル: テキストマーカー
-
説明:
- このタグから
[endmark]タグまでのテキストに、蛍光ペンのようなマーカー効果を適用します。
- このタグから
-
パラメータ:
color: (任意) マーカーの色 (0xRRGGBB形式)。 (デフォルト値:"0xFFFF00")font_color: (任意) マーカー部分の文字色 (0xRRGGBB形式)。省略時は現在の文字色。 (デフォルト値:"")size: (任意) マーカーの高さの割合 (0-100)。50で文字の下半分。 (デフォルト値:"")
-
期待される動作:
kag.stat.markを1に設定します。kag.stat.style_markに、指定されたcolor,font_color,sizeに基づくインラインCSS文字列を生成して格納します。sizeが指定された場合はbackground: linear-gradient(...)を使用します。padding-top,padding-bottomを追加します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
ここはまだです。[mark]ここにマーカーがひかれています。[endmark]ここはひかれません。 [mark color="0xff7f50" size=70]マーカーの色やサイズを指定することもできます。[endmark]
2.9. [endmark]
-
グループ: メッセージ・テキスト
-
タイトル: テキストマーカー終了
-
説明:
[mark]タグで開始したテキストマーカー効果を終了します。
-
パラメータ: (なし)
-
期待される動作:
kag.stat.markが1ならば2に設定します (次の文字からマーカーを解除するため)。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
ここはまだです。[mark]ここにマーカーがひかれています。[endmark]ここはひかれません。 [mark color="0xff7f50" size=70 ]マーカーの色やサイズを指定することもできます。[endmark]
2.10. [text]
- グループ: (内部的)
- タイトル: テキストの表示処理
- 説明:
- シナリオファイル内のテキストや、
[emb]タグなどで評価された文字列を表示するための内部的なタグです。通常、シナリオファイルに直接記述することはありません。 - メッセージウィンドウにテキストを追加し、1文字ずつ表示するアニメーションを実行します。
- シナリオファイル内のテキストや、
- パラメータ:
val: (必須) 表示するテキスト文字列。backlog: (任意) バックログへの追加方法 (addまたはjoin)。 (デフォルト値:"add")
- 期待される動作:
- スクリプト(
iscript)またはHTML(html)解析中の場合は、それぞれのバッファに文字列を追加してnextOrderを呼び、処理を終了します。 - メッセージレイヤのインナー要素 (
.message_inner) を取得します。 - インナー要素にCSSスタイル (字間、行間、フォントなど) を適用します。
- 現在表示中の文字列 (
kag.stat.current_message_str) を更新します。 - 自動改ページ処理 (
autoInsertPageBreak) を実行します (コンフィグで有効な場合)。 showMessageメソッドを呼び出して、以下の処理を実行します。- 発言者名を取得します。
- バックログにテキストを追加します (
pushTextToBackLog)。 - 読み上げが有効なら読み上げます (
speechMessage)。 - 表示するテキスト文字列(
pm.val)からHTML(<span>)要素を生成します (buildMessageHTML)。ルビやマーカーもここで処理されます。 - 生成したHTMLを現在の
current_spanに追加します。 - ふきだしが有効ならサイズを調整します (
adjustFukiSize)。 - 1文字ずつ表示するアニメーションを開始します (
addChars)。- アニメーション中は
kag.stat.is_adding_textがtrueになります。 - スキップまたはクリック割り込みを監視します (
checkClickInterrupt)。 - 全文字表示完了後、
finishAddingCharsを呼び出してis_adding_textをfalseにし、nextOrderを実行します。
- アニメーション中は
- スクリプト(
2.11. [r]
- グループ: メッセージ・テキスト
- タイトル: 改行
- 説明:
- 現在のメッセージレイヤに改行 (
<br>) を挿入します。
- 現在のメッセージレイヤに改行 (
- パラメータ: (なし)
- 期待される動作:
- 現在の
current_spanに<br>タグを追加します。 - 次のタグへ進みます (
nextOrder)。
- 現在の
- サンプルコード:
テキスト表示[l]
改行します[l][r]
改行します[l][r]
2.12. [l]
- グループ: メッセージ・テキスト
- タイトル: クリック待ち
- 説明:
- プレイヤーのクリックまたは入力待ち状態になります。
- クリックされるまでシナリオの進行が停止します。
- メッセージの末尾にクリック待ちグリフが表示されます。
- パラメータ: (なし)
- 期待される動作:
- クリック待ちグリフを表示します (
showNextImg)。 - スキップモード (
is_skip == true) の場合は、即座にnextOrderを呼び出して次のタグへ進みます。 - オートモード (
is_auto == true) の場合は、設定された待機時間 (autoSpeed+ 文字数に応じた追加時間) の後にnextOrderを呼び出します。ただし、ボイス再生中 (is_vo_play == true) の場合はボイス再生終了後に進むようにフラグ (is_vo_play_wait = true) を立てます。 - スキップでもオートでもない場合は、イベントレイヤを表示し、クリック/入力を待ち受けます (
waitClick("l"))。クリックされるとnextOrderが呼ばれます。
- クリック待ちグリフを表示します (
- サンプルコード:
テキスト表示[l]
テキスト表示[l][r]
2.13. [p]
- グループ: メッセージ・テキスト
- タイトル: クリック待ち+改ページ
- 説明:
[l]タグと同様にクリック待ちを行いますが、クリックされるとメッセージレイヤの内容がクリアされる「改ページ」動作を伴います。
- パラメータ: (なし)
- 期待される動作:
- 改ページフラグ (
kag.stat.flag_ref_page = true) を立てます。これにより、次に[text]タグなどが実行される際にメッセージレイヤがクリアされます。 - 以降の動作は
[l]タグと同じです(グリフ表示、スキップ/オート処理、クリック待ち)。
- 改ページフラグ (
- サンプルコード:
テキスト表示[p]
テキスト表示[p][r]
2.14. [graph]
-
グループ: メッセージ・テキスト
-
タイトル: インライン画像表示
-
説明:
- メッセージテキストの途中に画像を表示します。絵文字のような表現に使用できます。
-
パラメータ:
storage: (必須) 表示する画像ファイル名。data/imageフォルダから読み込まれます。
-
期待される動作:
- 現在のメッセージレイヤのインナー要素 (
.message_inner) を取得します。 - 現在の
current_spanの内容 (innerHTML) を取得します。 - 画像パスを構築します (
./data/image/+storage)。HTTP URLの場合はそのまま使用します。 <img>タグを生成し、現在のcurrent_spanの内容の後ろに追加します (appendMessage)。- 次のタグへ進みます (
nextOrder)。
- 現在のメッセージレイヤのインナー要素 (
-
サンプルコード:
;heart.png はハートマークの画像 [macro name="heart"] [graph storage="heart.png"] [endmacro] ;以後、[heart] タグでハートマークを使用可能 大好き[heart][p]
2.15. [er]
- グループ: メッセージ・テキスト
- タイトル: メッセージレイヤの文字の消去
- 説明:
- 現在操作対象となっているメッセージレイヤの表示内容(テキストやグラフィックボタンなど)をすべて消去します。
- 同時に、そのレイヤのフォントスタイルをデフォルトに戻します (
resetfontと同じ動作)。
- パラメータ: (なし)
- 期待される動作:
- クリック待ちグリフを非表示にします (
hideNextImg)。 - 現在のメッセージレイヤのインナー要素 (
.message_inner) の内容を空にします (html(""))。 [resetfont]タグを実行します。これによりフォントスタイルがデフォルトに戻り、nextOrderが呼び出されます。
- クリック待ちグリフを非表示にします (
- サンプルコード:
クリックするとメッセージがクリアされます[l][er]
クリアされました[l]
2.16. [cm]
- グループ: メッセージ・テキスト
- タイトル: すべてのメッセージレイヤのクリア
- 説明:
- すべてのメッセージレイヤの内容(テキスト)を消去します。
- フリーレイヤの内容(
[button],[glink],[html]などで表示された要素)も消去します。 - 現在のメッセージレイヤのフォントスタイルをデフォルトに戻します (
resetfontと同じ動作)。 - 操作対象のメッセージレイヤは変更されません。
- パラメータ:
next: (任意)falseを指定すると、nextOrderを呼び出しません。 (デフォルト値:"true")
- 期待される動作:
- クリック待ちグリフを非表示にします (
hideNextImg)。 - Vchatモードが有効な場合、
[vchat_in]を実行して新しい入力欄を用意します。 - Vchatモードが無効な場合、すべてのメッセージレイヤのインナー要素の内容を空にします (
clearMessageInnerLayerAll)。 - バックログの連結フラグを解除し、次回ログ追加時に改行されるようにします (
log_clear = true)。 - フリーレイヤの内容を空にし、非表示にします (
html("").hide())。 [resetfont]タグを実行します。pm.nextは引き継がれます。
- クリック待ちグリフを非表示にします (
- サンプルコード:
テキスト表示[l]
画面クリアする[l][cm]
もう一度画面クリアする[l][cm]
2.17. [ct]
- グループ: メッセージ・テキスト
- タイトル: メッセージレイヤのリセット
- 説明:
- すべてのメッセージレイヤの内容(テキスト)を消去します。
- フリーレイヤの内容(
[button],[glink],[html]などで表示された要素)も消去します。 - 現在のメッセージレイヤのフォントスタイルをデフォルトに戻します。
- 操作対象のメッセージレイヤを
message0の表ページ (fore) に変更します。
- パラメータ: (なし)
- 期待される動作:
- クリック待ちグリフを非表示にします (
hideNextImg)。 - すべてのメッセージレイヤのインナー要素の内容を空にします (
clearMessageInnerLayerAll)。 - フリーレイヤの内容を空にし、非表示にします (
html("").hide())。 - 操作対象レイヤを
message0に、ページをforeに設定します (kag.stat.current_layer,kag.stat.current_page)。 [resetfont]タグを実行します。
- クリック待ちグリフを非表示にします (
- サンプルコード:
テキスト表示[l]
画面リセットする[l][ct]
もう一度画面リセットする[l][ct]
2.18. [current]
- グループ: メッセージ・テキスト
- タイトル: 操作対象のメッセージレイヤの指定
- 説明:
- テキスト表示やフォント変更などの操作対象となるメッセージレイヤを指定します。
- パラメータ:
layer: (任意) 操作対象とするメッセージレイヤ名 (message0,message1など)。省略時は現在のレイヤ。 (デフォルト値:"")page: (任意) 操作対象とするページ (foreまたはback)。 (デフォルト値:"fore")
- 期待される動作:
pm.layerが指定されていれば、kag.stat.current_layerを更新します。pm.pageが指定されていれば、kag.stat.current_pageを更新します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[current layer="message0"]
message0レイヤに表示されています[l]
[current layer="message1"]
message1レイヤに表示されています[l]
2.19. [position]
- グループ: メッセージ関連の設定
- タイトル: メッセージウィンドウの属性変更
- 説明:
- メッセージウィンドウ(アウターおよびインナー)の表示位置、サイズ、色、透明度、余白、枠線、背景画像などを変更します。
- パラメータ:
layer: (任意) 対象のメッセージレイヤ名。 (デフォルト値:"message0")page: (任意) 対象のページ (foreまたはback)。 (デフォルト値:"fore")left,top,width,height: (任意) アウター要素のCSSプロパティ (px)。frame: (任意) アウター要素の背景画像ファイル。data/imageフォルダから読み込みます。noneで標準枠。color: (任意) アウター要素の背景色 (0xRRGGBB形式)。frame指定時は無効。border_color: (任意) アウター要素の枠線の色 (0xRRGGBB形式)。border_size: (任意) アウター要素の枠線の太さ (px)。0で枠線なし。opacity: (任意) アウター要素の不透明度 (0-255)。radius: (任意) アウター要素の角丸半径 (px)。marginl,margint,marginr,marginb: (任意) インナー要素のパディング (px)。marginr,marginbはふきだし時の計算にも使用されます。margin: (任意) インナー要素のパディングを一括指定 (px)。カンマ区切りで方向別指定も可 (上下,左右など)。vertical: (任意) 縦書きにするか (trueorfalse)。kag.stat.verticalを更新します。visible: (任意) レイヤを表示するか (trueorfalse)。gradient: (任意) アウター要素の背景グラデーション (CSSグラデーション形式)。frame,colorより優先。next: (任意)falseを指定するとnextOrderを呼び出しません。 (デフォルト値:"true")
- 期待される動作:
- 対象のメッセージレイヤ要素 (
j_message_layer)、アウター要素 (j_message_outer)、インナー要素 (j_message_inner) を取得します。 visibleが指定されていれば、レイヤの表示/非表示を切り替えます (showLayer/hideLayer)。- 指定されたパラメータに基づき、アウター要素のCSSスタイルを更新します (
left,top,width,height,color,opacity,frame,radius,border,gradient)。 - アウター要素のスタイル情報を
kag.stat.fuki.def_styleに保存します。 [position_filter]が適用されている場合、フィルター要素のスタイルもアウターに合わせて更新します。- インナー要素のスタイルをリフレッシュします (
refMessageLayer)。これによりインナーはアウターの10px内側に配置されます。 verticalが指定されていれば、kag.stat.verticalを更新し、インナー内の<p>要素にvertical_textクラスを追加/削除します。- 指定された
margin関連のパラメータに基づき、インナー要素のpaddingスタイルを更新します。 kag.stat.fuki.marginr,kag.stat.fuki.marginbを更新します。- インナー要素のスタイル情報を
kag.stat.fuki.def_style_innerに保存します。 pm.nextが"false"でない場合、次のタグへ進みます (nextOrder)。
- 対象のメッセージレイヤ要素 (
- サンプルコード:
;メッセージウィンドウの位置とサイズを変更
[position width=400 height=300 top=100 left=20]
;メッセージウィンドウの色と透明度を変更 [
position color=blue opacity=100]
2.20. [fuki_start]
- グループ: メッセージ・テキスト
- タイトル: メッセージレイヤをふきだし化する
- 説明:
- 指定したメッセージレイヤをふきだし表示モードに切り替えます。
- このタグを実行する前に、
[fuki_chara]タグでキャラクターごとのふきだし設定を行っておく必要があります。 - ふきだし表示中は、キャラクター名表示欄 (
chara_ptextで指定した領域) が非表示になります。
- パラメータ:
layer: (任意) ふきだし化するメッセージレイヤ名。 (デフォルト値:"message0")page: (任意) 対象ページ (foreまたはback)。 (デフォルト値:"fore")
- 期待される動作:
kag.stat.fuki.activeをtrueに設定します。- 対象メッセージレイヤのアウター要素 (
.message_outer) にfuki_boxクラスを追加します。 - インナー要素 (
.message_inner) のwidth,heightをリセットし、box-sizingをcontent-boxに設定します。 - 次のタグへ進みます (
nextOrder)。
2.21. [fuki_stop]
- グループ: メッセージ・テキスト
- タイトル: メッセージレイヤのふきだし化を無効にする
- 説明:
- ふきだし表示モードを終了し、通常のメッセージウィンドウ表示に戻します。
- メッセージレイヤのスタイルは
[fuki_start]を実行する前の状態に戻ります。
- パラメータ: (なし)
- 期待される動作:
kag.stat.fuki.activeをfalseに設定します。- 現在のアウター要素から
fuki_boxクラスを削除します。 - アウター要素のスタイルを
kag.stat.fuki.def_styleに保存されているスタイルに戻します。 - インナー要素のスタイルを
kag.stat.fuki.def_style_innerに保存されているスタイルに戻し、位置を再計算し、box-sizingをborder-boxに設定します。 - キャラクター名表示欄 (
.chara_name_area) を表示します。 - 次のタグへ進みます (
nextOrder)。
2.22. [fuki_chara]
- グループ: メッセージ・テキスト
- タイトル: ふきだしのキャラクター登録
- 説明:
- キャラクターごとに、ふきだしの表示位置、しっぽの形状・位置、サイズ、色などを個別に設定します。
name="others"と指定することで、画面上にキャラクターがいない場合のデフォルトのふきだしスタイルを設定できます。
- パラメータ:
name: (必須) 設定対象のキャラクター名、または"others"。left: (任意) ふきだしの左端位置 (キャラ画像の左端からの相対px)。top: (任意) ふきだしの上端位置 (キャラ画像の上端からの相対px)。sippo: (任意) しっぽの向き (top,bottom,left,right,none)。 (デフォルト値:"top")sippo_left: (任意) しっぽの左端からの位置 (px)。sippoがtop/bottomの場合に有効。 (デフォルト値:"40")sippo_top: (任意) しっぽの上端からの位置 (px)。sippoがleft/rightの場合に有効。 (デフォルト値:"40")sippo_width: (任意) しっぽの幅 (px)。 (デフォルト値:"12")sippo_height: (任意) しっぽの高さ (px)。 (デフォルト値:"20")max_width: (任意) ふきだしの最大横幅 (px)。自動調整時の上限。 (デフォルト値:"300")fix_width: (任意) ふきだしの横幅を固定する場合に指定 (px)。 (デフォルト値:"")color: (任意) ふきだしの背景色 (0xRRGGBB形式)。 (デフォルト値:"")border_color: (任意) ふきだしの枠線色 (0xRRGGBB形式)。 (デフォルト値:"")border_size: (任意) ふきだしの枠線太さ (px)。 (デフォルト値:"")opacity: (任意) ふきだしの不透明度 (0-255)。 (デフォルト値:"")radius: (任意) ふきだしの角丸半径 (px)。 (デフォルト値:"")font_color: (任意) ふきだし内の文字色 (0xRRGGBB形式)。 (デフォルト値:"")font_size: (任意) ふきだし内の文字サイズ (px)。 (デフォルト値:"")
- 期待される動作:
name="others"の場合、kag.stat.fuki.others_styleオブジェクトを指定されたパラメータで更新します。- キャラクター名を指定した場合、
kag.stat.charas[pm.name]を参照します。存在しない場合はエラーとなります。- キャラクター定義内の
fukiオブジェクトを指定されたパラメータで更新します。
- パラメータのうち、色が指定されていないものは削除され、デフォルトスタイルが適用されるようにします。
- 次のタグへ進みます (
nextOrder)。
2.23. [nolog]
- グループ: メッセージ関連の設定
- タイトル: バックログ記録の一時停止
- 説明:
- このタグ以降、
[endnolog]タグが現れるまでのテキスト表示がバックログに記録されなくなります。
- このタグ以降、
- パラメータ: (なし)
- 期待される動作:
kag.stat.log_writeをfalseに設定します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
ここはログに記録される[p]
[nolog]
ログに記録されない[p]
ここもログに記録されない[p]
[endnolog]
ここから、ログ記録再開[p]
2.24. [endnolog]
- グループ: メッセージ関連の設定
- タイトル: バックログ記録の再開
- 説明:
[nolog]タグで一時停止したバックログへの記録を再開します。
- パラメータ: (なし)
- 期待される動作:
kag.stat.log_writeをtrueに設定します。- 次のタグへ進みます (
nextOrder)。
2.25. [pushlog]
- グループ: メッセージ関連の設定
- タイトル: バックログにテキスト追加
- 説明:
- 任意のテキスト文字列をバックログに追加します。
[mtext]など、通常ではバックログに残らないテキストの内容を記録したい場合に使用します。
- パラメータ:
text: (必須) バックログに追加するテキスト文字列。join: (任意) 直前のログに連結するか (trueorfalse)。 (デフォルト値:"false")
- 期待される動作:
kag.pushBackLog(pm.text, join_type)を呼び出してバックログにテキストを追加します。join_typeはpm.joinの値に応じて"join"または"add"となります。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[pushlog text="ここに好きなログ文字列を記述できます"]
2.26. [configdelay]
- グループ: メッセージ関連の設定
- タイトル: デフォルトの文字の表示速度の設定
- 説明:
- デフォルトの文字表示速度を設定します。
- コンフィグ画面などで使用し、設定値はシステム変数
sf._config_ch_speedに保存されます。 [delay]タグとは異なり、このタグで設定した速度は[resetdelay]で復元される対象となります。
- パラメータ:
speed: (任意) デフォルトの文字表示速度 (ミリ秒/文字)。 (デフォルト値:"")
- 期待される動作:
pm.speedが指定されている場合:kag.stat.ch_speedを空文字列に設定します (現在の速度をリセット)。kag.config.chSpeedをpm.speedで更新します。[eval]タグを内部的に呼び出し、sf._config_ch_speedにpm.speedの値を保存します。
pm.speedが指定されていない場合は、そのまま次のタグへ進みます (nextOrder)。
2.27. [delay]
- グループ: メッセージ関連の設定
- タイトル: 文字の表示速度の設定
- 説明:
- 一時的に文字の表示速度を変更します。
- このタグで設定した速度は、
[resetdelay]タグでデフォルト速度に戻すことができます。
- パラメータ:
speed: (任意) 文字表示速度 (ミリ秒/文字)。 (デフォルト値:"")
- 期待される動作:
pm.speedが指定されている場合、kag.stat.ch_speedをparseInt(pm.speed)で更新します。- 次のタグへ進みます (
nextOrder)。
2.28. [resetdelay]
- グループ: メッセージ関連の設定
- タイトル: 文字の表示速度をデフォルトに戻す
- 説明:
[delay]タグで変更した文字表示速度を、デフォルトの値(Config.tjsまたは[configdelay]で設定された値)に戻します。
- パラメータ: (なし)
- 期待される動作:
kag.stat.ch_speedを空文字列に設定します。これにより、次回テキスト表示時にはkag.config.chSpeedが参照されるようになります。- 次のタグへ進みます (
nextOrder)。
2.29. [nowait]
- グループ: メッセージ関連の設定
- タイトル: テキスト瞬間表示モードの開始
- 説明:
- テキストを1文字ずつ表示するのではなく、一瞬で全文を表示するモードを開始します。
- パラメータ: (なし)
- 期待される動作:
kag.stat.is_nowaitをtrueに設定します。- 次のタグへ進みます (
nextOrder)。
2.30. [endnowait]
- グループ: メッセージ関連の設定
- タイトル: テキスト瞬間表示モードの停止
- 説明:
[nowait]タグで開始したテキスト瞬間表示モードを終了します。
- パラメータ: (なし)
- 期待される動作:
kag.stat.is_nowaitをfalseに設定します。- 次のタグへ進みます (
nextOrder)。
2.31. [config_record_label]
- グループ: メッセージ関連の設定
- タイトル: 既読管理の設定
- 説明:
- 既読テキストの色や、未読テキストのスキップ可否を設定します。
- パラメータ:
color: (任意) 既読テキストの色 (0xRRGGBB形式)。 (デフォルト値:"")skip: (任意) 未読テキストをスキップ可能にするか (trueorfalse)。 (デフォルト値:"")
- 期待される動作:
pm.colorが指定されていれば、kag.config.alreadyReadTextColorを更新し、システム変数sf._system_config_already_read_text_colorに保存します。pm.skipが指定されていれば、kag.config.unReadTextSkipを更新し、システム変数sf._system_config_unread_text_skipに保存します。- 次のタグへ進みます (
nextOrder)。
3. 画像・背景・レイヤ操作関連タグ
3.1. [image]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: 画像を表示
-
説明:
- 指定したレイヤに画像を追加します。背景レイヤ(
base)または前景レイヤ(0以上の整数)を指定できます。 - 前景レイヤはデフォルトで非表示のため、
visible="true"を指定するか、事前に[layopt]で表示状態にする必要があります。
- 指定したレイヤに画像を追加します。背景レイヤ(
-
パラメータ:
storage: (必須) 画像ファイル名。背景レイヤならdata/bgimage、前景レイヤならdata/fgimageから読み込みます。folderで変更可。layer: (任意) 画像を追加するレイヤ名 (base,0,1, …)。 (デフォルト値:"base")page: (任意) 対象ページ (foreまたはback)。 (デフォルト値:"fore")visible: (任意)trueを指定すると、対象レイヤを表示状態にします (layerがbase以外の場合)。 (デフォルト値:"")left,x: (任意) 画像の左端位置 (px)。xが優先。 (デフォルト値:"")top,y: (任意) 画像の上端位置 (px)。yが優先。 (デフォルト値:"")width: (任意) 画像の表示横幅 (px)。 (デフォルト値:"")height: (任意) 画像の表示高さ (px)。 (デフォルト値:"")folder: (任意) 画像を読み込むフォルダ。デフォルトはlayerに応じてbgimageまたはfgimage。name: (任意) 画像要素にname属性値を設定します。 (デフォルト値:"")time: (任意) フェードイン時間 (ミリ秒)。0または空で瞬間表示。 (デフォルト値:"")wait: (任意) フェードイン完了を待つか (trueorfalse)。 (デフォルト値:"true")zindex: (任意) 重ね順。数値が大きいほど前面。 (デフォルト値:"1")depth: (任意)zindexが同じ場合の重ね順 (frontまたはback)。 (デフォルト値:"front")reflect: (任意) 左右反転するか (trueorfalse)。 (デフォルト値:"")pos: (任意) キーワードで位置を指定 (left,lc,c,rc,right)。Config.tjsのscPositionXを参照。layerがbase以外の場合のみ有効。 (デフォルト値:"")animimg: (任意) アニメーション画像(GIF/APNG)を最初から再生するか (trueorfalse)。 (デフォルト値:"")
-
期待される動作:
- 前景レイヤ (
layerがbase以外) の場合:visible="true"なら対象レイヤを表示状態にします。posが指定されていれば、キーワードからleftの値を決定します。- 画像パス (
storage_url) を構築します (folderを考慮)。 <img>(SVGの場合は<object>) 要素 (img_obj) を生成します。- CSS スタイル (
position,top,left,width,height,zindex) を適用します。 reflect="true"ならreflectクラスを追加します。animimg="true"なら、画像のURLに?count=数値を追加してキャッシュを回避し、イベント(remove)を設定します。nameがあれば設定します。timeが指定されている場合 (フェードイン):- 画像を透明状態 (
opacity:0) でレイヤに追加します (depthに応じてprepend/append)。 .animate({opacity:1})でフェードインさせます。- 完了後、
wait=trueならnextOrderを呼び出します。
- 画像を透明状態 (
timeが指定されていない場合 (瞬間表示):- 画像をレイヤに追加します。
nextOrderを呼び出します。
wait=falseの場合は、アニメーション開始と同時にnextOrderを呼び出します。
- 背景レイヤ (
layerがbase) の場合:- 画像パス (
storage_url) を構築します (folderを考慮)。 - 対象レイヤ (
base,foreまたはback) のbackground-imageスタイルを設定します。 positionが指定されていれば、background-size: coverとbackground-positionを設定します。nextOrderを呼び出します。
- 画像パス (
- 前景レイヤ (
-
サンプルコード:
;レイヤ1を表示状態に [layopt layer="1" visible="true"] ;レイヤ1にcat.pngを追加 [image layer="1" x="150" y="150" storage="cat.png"] [l] ;画像を削除 [freeimage layer="1"]
3.2. [freeimage], [freelayer]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: レイヤのクリア
-
説明:
- 指定したレイヤの内容(画像やテキストなど)をすべて削除します。
[freelayer]は[freeimage]の別名です。
-
パラメータ:
layer: (必須) クリアするレイヤ名 (base,0,1, …,message0, …)。page: (任意) 対象ページ (foreまたはback)。 (デフォルト値:"fore")time: (任意) フェードアウト時間 (ミリ秒)。0または空で瞬間削除。 (デフォルト値:"")wait: (任意) フェードアウト完了を待つか (trueorfalse)。 (デフォルト値:"true")
-
期待される動作:
- 前景レイヤまたはメッセージレイヤの場合:
timeが指定されている場合:- 対象レイヤの子要素を取得します。要素がなければ
nextOrderを呼び出して終了します。 - 子要素を
.animate({opacity:0})でフェードアウトさせます。 - 完了後、レイヤの内容を空にし (
empty())、wait=trueならnextOrderを呼び出します。
- 対象レイヤの子要素を取得します。要素がなければ
timeが指定されていない場合:- 対象レイヤの内容を空にします (
empty())。 nextOrderを呼び出します。
- 対象レイヤの内容を空にします (
wait=falseの場合は、フェードアウト開始と同時にnextOrderを呼び出します。
- 背景レイヤ (
layerがbase) の場合:- 対象レイヤの
background-imageスタイルを空にします。 nextOrderを呼び出します。
- 対象レイヤの
- 前景レイヤまたはメッセージレイヤの場合:
-
サンプルコード:
;イメージを配置 [image layer="0" page="fore" visible="true" top="100" left="300" storage="chara.png"] ;レイヤをクリア [freeimage layer="0"]
3.3. [free]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: オブジェクトの解放
-
説明:
- 指定したレイヤ内にある、指定した
name属性を持つ要素をすべて削除します。
- 指定したレイヤ内にある、指定した
-
パラメータ:
layer: (必須) 対象のレイヤ名。name: (必須) 削除する要素のname。page: (任意) 対象ページ (foreまたはback)。 (デフォルト値:"fore")time: (任意) フェードアウト時間 (ミリ秒)。0または空で瞬間削除。 (デフォルト値:"")wait: (任意) フェードアウト完了を待つか (trueorfalse)。 (デフォルト値:"true")
-
期待される動作:
- 対象レイヤ要素 (
j_layer) を取得します。 j_layer.find("." + pm.name)で対象要素 (j_obj) を取得します。timeが指定されている場合:j_objが存在しなければnextOrderを呼び出して終了します。j_obj.animate({opacity:0})でフェードアウトさせます。- 完了後、
j_obj.remove()で要素を削除し、wait=trueならnextOrderを呼び出します。
timeが指定されていない場合:j_obj.remove()で要素を削除します。nextOrderを呼び出します。
wait=falseの場合は、フェードアウト開始と同時にnextOrderを呼び出します。
- 対象レイヤ要素 (
-
サンプルコード:
;名前を指定してイメージを配置 [image name="myimg" layer="0" visible="true" top="100" left="300" storage="myimg.png"] ;イメージの名前を指定して1つだけ消す [free name="myimg" layer="0"]
3.4. [ptext]
- グループ: メッセージ・テキスト
- タイトル: レイヤにテキストを表示
- 説明:
- 指定した前景レイヤまたはfixレイヤにテキストを表示します。メッセージウィンドウとは独立して画面上に文字を表示したい場合に使用します。
[free]や[freeimage]で削除する必要があります。
- パラメータ:
layer: (必須) テキストを表示するレイヤ (0以上の整数、またはfix)。x: (必須) テキストの左端位置 (px)。y: (必須) テキストの上端位置 (px)。page: (任意) 対象ページ (foreまたはback)。 (デフォルト値:"fore")text: (任意) 表示するテキスト文字列。 (デフォルト値:"")vertical: (任意) 縦書きにするか (trueorfalse)。 (デフォルト値:"false")size: (任意) フォントサイズ (px)。省略時はデフォルトフォントサイズ。 (デフォルト値:"")face: (任意) フォント名。省略時はデフォルトフォント。 (デフォルト値:"")color: (任意) 文字色 (0xRRGGBB形式)。省略時はデフォルト色。 (デフォルト値:"")bold: (任意) 太字にするか (trueorfalse)。 (デフォルト値:"")italic: (任意) イタリック体にするか (trueorfalse)。 (デフォルト値:"")edge: (任意) 縁取り色 (0xRRGGBB形式) またはnone。V515以降は太さも指定可能。 (デフォルト値:"")shadow: (任意) 文字影色 (0xRRGGBB形式) またはnone。edge指定時は無効。 (デフォルト値:"")name: (任意) テキスト要素にname属性値を設定します。 (デフォルト値:"")width: (任意) テキスト表示領域の横幅 (px)。 (デフォルト値:"")align: (任意) 横方向の文字揃え (left,center,right)。width指定時のみ有効。 (デフォルト値:"left")time: (任意) フェードイン時間 (ミリ秒)。0または空で瞬間表示。 (デフォルト値:"")zindex: (任意) 重ね順。 (デフォルト値:"9999")overwrite: (任意) 同名の要素が存在する場合に内容を上書きするか (trueorfalse)。 (デフォルト値:"false")gradient: (任意) 文字グラデーション (CSSグラデーション形式) またはnone。 (デフォルト値:"")
- 期待される動作:
overwrite=trueかつ同名の要素が存在する場合:- 既存要素のテキスト内容 (
updatePText)、位置、色、サイズを更新します。 nextOrderを呼び出して終了します。
- 既存要素のテキスト内容 (
- フォント関連のパラメータが未指定の場合、
kag.stat.fontからデフォルト値を補完します。 <p>要素 (tobj) を生成します。- CSS スタイル (
position,top,left,width,text-align,font,color,edge,shadow,gradient) を適用します。 vertical="true"ならvertical_textクラスを追加します。layer="fix"ならfixlayerクラスを追加します。nameがあれば設定します。- 個別装飾 (
is_individual_decoration) が必要な場合 (edge_method="stroke"など)、イベントハンドラを設定します。 - テキスト内容をセットします (
updatePText)。個別装飾が必要な場合は、1文字ずつ<span>で囲む処理を行います。 - 対象レイヤ (
target_layer) を取得します。 timeが指定されている場合 (フェードイン):tobjを透明状態 (opacity:0) でレイヤに追加します。.animate({opacity:1})でフェードインさせます。- 完了後、
nextOrderを呼び出します。
timeが指定されていない場合 (瞬間表示):tobjをレイヤに追加します。nextOrderを呼び出します。
- サンプルコード:
[backlay]
[ptext page=back text="テキストテキスト" size=30 x=200 y=300 color=red vertical=true]
[trans time=2000] [wt] [l]
表示したテキストを消去します
[freeimage layer=0]
3.5. [clearfix]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: fixレイヤーのクリア
-
説明:
- fixレイヤ(
[button fix=true]などで要素を追加する特殊な最前面レイヤ)の内容を消去します。 nameを指定すると、そのnameを持つ要素のみを削除します。
- fixレイヤ(
-
パラメータ:
name: (任意) 削除する要素のname。省略するとfixレイヤ全体をクリア。 (デフォルト値:"")
-
期待される動作:
pm.nameが指定されている場合、.fixlayer.+pm.nameクラスを持つ要素を削除します (remove())。pm.nameが指定されていない場合、.fixlayerクラスを持つすべての要素を削除します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
;fixレイヤーへの追加 [ptext name="sample" layer=fix page=fore text="テキストテキスト" size=30 x=200 y=100 color=red ] ;fixレイヤーのクリア [clearfix name="sample"]
3.6. [backlay]
- グループ: 画像・背景・レイヤ操作
- タイトル: レイヤ情報の表ページから裏ページへのコピー
- 説明:
- 指定したレイヤ、またはすべてのレイヤの表ページ (
fore) の内容(DOM要素とスタイル)を裏ページ (back) にコピーします。 [trans]タグと組み合わせて、画面遷移演出に使用します。
- 指定したレイヤ、またはすべてのレイヤの表ページ (
- パラメータ:
layer: (任意) コピー対象のレイヤ名。省略するとすべてのレイヤが対象。 (デフォルト値:"")
- 期待される動作:
- 対象となるレイヤを決定します (
pm.layerが空なら全レイヤ)。 - 各対象レイヤについて:
- 表ページのjQueryオブジェクト (
map_layer_fore[key]) を取得します。 - 裏ページのクラス名を取得します。
- 表ページをディープコピー (
clone()) して新しい裏ページオブジェクト (map_layer_back[key]) を作成します。 - 新しい裏ページオブジェクトのクラスを表ページのものから裏ページのものに変更します。
- 既存の裏ページ要素をDOMから削除します (
remove())。 - 新しい裏ページオブジェクトを非表示 (
hide()) にしてDOMに追加します (appendLayer)。
- 表ページのjQueryオブジェクト (
- 次のタグへ進みます (
nextOrder)。
- 対象となるレイヤを決定します (
3.7. [wt]
- グループ: 画像・背景・レイヤ操作
- タイトル: トランジションの終了待ち
- 説明:
- 実行中のトランジション (
[trans]タグによるもの) が完了するまで待機します。
- 実行中のトランジション (
- パラメータ: (なし)
- 期待される動作:
kag.stat.is_transがfalse(トランジション中でない) なら、即座にnextOrderを呼び出します。kag.stat.is_transがtrue(トランジション中) なら、weaklyStop()を呼び出して一時停止します。トランジション完了時にcompleteTransが呼ばれ、そこでnextOrderが実行されます。
3.8. [trans]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: レイヤのトランジション
-
説明:
- 指定したレイヤの裏ページ (
back) の内容を表ページ (fore) に、指定した時間と効果で切り替えます。 - 通常、
[backlay]タグで準備した裏ページを表示するために使用します。
- 指定したレイヤの裏ページ (
-
パラメータ:
layer: (必須) トランジション対象のレイヤ名。 (デフォルト値:"base")method: (任意) トランジション効果 (fadeIn,crossfadeなど)。 (デフォルト値:"fadeIn")time: (必須) トランジション時間 (ミリ秒)。 (デフォルト値:1500)children: (任意) 【廃止】 (デフォルト値:false)
-
期待される動作:
kag.stat.is_transをtrueに設定します。pm.childrenがtrueまたはpm.layerが空の場合、すべてのレイヤを対象とします。そうでなければpm.layerのみを対象とします。- 各対象レイヤについて:
- 表ページ (
layer_fore) と裏ページ (layer_back) のjQueryオブジェクトを取得します。 - メッセージレイヤの場合、
visible属性が"false"ならトランジションを行わず、単にforelayを呼び出して裏を表にコピーし、completeTransを呼び出します。 - それ以外の場合、
$.transを呼び出してアニメーションを実行します。- 裏ページ (
layer_back) をshowさせます。 - 完了コールバック内で:
forelay(key)を呼び出して裏ページの内容を表ページに完全に反映させます。completeTrans()を呼び出してis_transフラグをfalseにし、停止状態ならnextOrderを呼び出します。
- 裏ページ (
- 表ページ (
- 次のタグへ進みます (
nextOrder)。この時点ではアニメーションは完了していません。完了を待つには[wt]が必要です。
-
サンプルコード:
[backlay] [image layer=base page=back storage=rouka.jpg] [trans time=2000] トランジションしてるよ…… [wt] [cm] トランジションが終わったよ[p]
3.9. [bg]
- グループ: 画像・背景・レイヤ操作
- タイトル: 背景の切り替え
- 説明:
- 背景レイヤ (
base) の画像を切り替えるための簡易タグです。 - 常に表ページ (
fore) に対して実行されます。 - トランジション効果も指定できます。
- 背景レイヤ (
- パラメータ:
storage: (必須) 表示する背景画像ファイル名。data/bgimageから読み込みます。method: (任意) 切り替え効果 (crossfade,fadeInなど)。 (デフォルト値:"crossfade")wait: (任意) 切り替え完了を待つか (trueorfalse)。 (デフォルト値:"true")time: (任意) 切り替え時間 (ミリ秒)。 (デフォルト値:3000)cross: (任意) クロスフェード方式か (trueorfalse)。falseだと旧背景の上に新背景を重ねます。 (デフォルト値:"false")position: (任意) 背景画像の表示位置 (left,center,right,top,bottom)。指定するとbackground-size: coverが適用されます。 (デフォルト値:"")
- 期待される動作:
- クリック待ちグリフを隠します (
hideNextImg)。 - 画像パス (
storage_url) を構築します。 - 指定された画像をプリロードします (
kag.preload)。 - プリロード完了後:
- 現在の背景レイヤ (
base,fore) のjQueryオブジェクト (j_old_bg) を取得します。 j_old_bgをクローンして新しい背景レイヤ (j_new_bg) を作成します。j_new_bgのbackground-imageを新しい画像に設定します。positionが指定されていればbackground-size: coverとbackground-positionを設定します。j_new_bgを非表示 (display:none) にしてj_old_bgの直後に追加します。kag.layer.updateLayer("base", "fore", j_new_bg)で参照を更新します。wait=trueならweaklyStop()を呼び出します。pm.cross=trueの場合は、j_old_bgに対して$.trans(method, time, "hide")を実行し、完了後にj_old_bg.remove()します。j_new_bgに対して$.trans(method, time, "show")を実行します。showアニメーション完了後:j_new_bgのopacityを1にします。pm.cross=falseの場合は、ここでj_old_bg.remove()します。wait=trueならcancelWeakStop()とnextOrder()を呼び出します。
- 現在の背景レイヤ (
wait=falseの場合は、プリロード開始とほぼ同時にnextOrderを呼び出します。
- クリック待ちグリフを隠します (
- サンプルコード:
tyranoscript [bg storage=fg0.png time=1500 wait=true]
3.10. [bg2]
- グループ: 画像・背景・レイヤ操作
- タイトル: 背景の切り替え
- 説明:
[bg]とほぼ同じですが、背景をbackground-imageではなく<img>要素で表示します。- これにより、画像のサイズや位置を
width,height,left,topで細かく指定できます。
- パラメータ:
storage: (必須) 画像ファイル名。data/bgimageから読み込みます。name: (任意) 生成される<img>要素にname属性値を設定します。 (デフォルト値:"")method: (任意) 切り替え効果。 (デフォルト値:"crossfade")wait: (任意) 切り替え完了を待つか (trueorfalse)。 (デフォルト値:"true")time: (任意) 切り替え時間 (ミリ秒)。 (デフォルト値:3000)width,height,left,top: (任意)<img>要素のサイズと位置 (px)。 (デフォルト値:"")cross: (任意) クロスフェード方式か (trueorfalse)。 (デフォルト値:"false")
- 期待される動作:
[bg]と同様に画像をプリロードします。- プリロード完了後:
- 現在の背景レイヤ (
base,fore) をクローンして新しい背景レイヤ (j_new_bg) を作成します。 - 新しい
<img>要素 (j_bg_img) を生成し、src,position,width,height,left,topスタイルを設定します。 j_new_bg内の既存の<img>を削除し、j_bg_imgを追加します。nameがあればj_new_bgに設定します。- 以降のトランジション処理は
[bg]と同様です。
- 現在の背景レイヤ (
- サンプルコード: (省略。
[bg]のサンプル参照)
3.11. [layopt]
- グループ: 画像・背景・レイヤ操作
- タイトル: レイヤの属性設定
- 説明:
- 前景レイヤまたはメッセージレイヤの属性(表示状態、位置、不透明度など)を変更します。
- パラメータ:
layer: (必須) 対象レイヤ名 (message,message0,0,1, …,fix)。messageは現在の操作対象レイヤ。page: (任意) 対象ページ (foreorback)。 (デフォルト値:"fore")visible: (任意) レイヤを表示するか (trueorfalse)。 (デフォルト値:"")left: (任意) レイヤの左端位置 (px)。 (デフォルト値:"")top: (任意) レイヤの上端位置 (px)。 (デフォルト値:"")opacity: (任意) レイヤの不透明度 (0-255)。 (デフォルト値:"")
- 期待される動作:
layer="message"の場合、kag.stat.current_layer,kag.stat.current_pageを参照して対象レイヤを決定します。- 対象レイヤのjQueryオブジェクト (
j_layer) を取得します。layer="fix"の場合は.fixlayer全体を取得します。 visibleが指定されていれば、displayスタイルとl_visible属性を更新します。left,top,opacityが指定されていれば、対応するCSSスタイルを更新します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
;メッセージレイヤを消去
@layopt layer=message0 visible=false
[backlay]
[image layer=0 page=back visible=true top=100 left=50 storage = miku1.png]
[trans time=2000] @wt
;そしてレイヤ表示
@layopt layer=message0 visible=true
3.12. [locate]
-
グループ: 画像・背景・レイヤ操作
-
タイトル: 表示位置の指定
-
説明:
- 次に実行される
[button]タグなどの表示位置のデフォルト値を設定します。 - テキスト (
[ptext]) には影響しません。
- 次に実行される
-
パラメータ:
x: (任意) デフォルトの左端位置 (px)。 (デフォルト値:null)y: (任意) デフォルトの上端位置 (px)。 (デフォルト値:null)
-
期待される動作:
pm.xが指定されていればkag.stat.locate.xを更新します。pm.yが指定されていればkag.stat.locate.yを更新します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[locate x=20 y=100] [button graphic="oda.png" target=*oda] [locate x=300 y=100] [button graphic="toyo.png" target=*toyo]
4. ラベル・ジャンプ操作関連タグ
4.1. [label]
- グループ: (内部的)
- タイトル: ラベル定義
- 説明:
- シナリオファイル内のジャンプ先となるラベルを定義します。
- 通常、シナリオファイルには
label_nameの形式で記述し、内部的にこの[label]タグに変換されます。 - 既読管理機能 (
Config.tjsのautoRecordLabel) が有効な場合、ラベル通過時に既読情報を記録・判定します。
- パラメータ:
label_name: (必須) ラベル名。val: (任意) ラベルの表示名 (コメントなど)。 (デフォルト値:"")line: (内部的) シナリオファイル内の行番号。index: (内部的) タグ配列内でのインデックス。nextorder: (任意) ラベル定義後にnextOrderを呼ぶか。通常はtrue。 (デフォルト値:"true")
- 期待される動作:
- 既読管理が有効な場合:
- 通過したラベルの情報をシステム変数 (
sf.record) に記録します (kag.stat.buff_label_nameを使用)。 - 現在のラベルがすでに記録されているかを確認し、
kag.stat.already_read(既読フラグ) を更新します。 kag.stat.buff_label_nameを現在のラベル情報で更新します。
- 通過したラベルの情報をシステム変数 (
pm.nextorderが"true"なら次のタグへ進みます (nextOrder)。
- 既読管理が有効な場合:
- サンプルコード: (通常は
label_name形式で記述)
4.2. [jump]
- グループ: ラベル・ジャンプ操作
- タイトル: シナリオのジャンプ
- 説明:
- 指定したシナリオファイル、または現在のシナリオファイル内の指定したラベルにジャンプします。
[call]とは異なり、コールスタックには残らないため、[return]で戻ることはできません。
- パラメータ:
storage: (任意) ジャンプ先のシナリオファイル名。省略時は現在のシナリオ。 (デフォルト値:null)target: (任意) ジャンプ先のラベル名 ( は省略可)。省略時はファイルの先頭。 (デフォルト値:null)countpage: (任意) 【廃止予定?】 (デフォルト値:true)
- 期待される動作:
- ホールド状態の
[glink]が存在すれば、そのstorage,targetをpmに反映させ、ホールド状態を解除します。 setTimeoutを使用して、わずかに遅延させてからnextOrderWithLabel(pm.target, pm.storage)を呼び出します。これにより、ジャンプ処理が非同期的に実行され、直後の処理との競合を防ぎます。
- ホールド状態の
- サンプルコード:
;second.ks というシナリオファイルの *start ラベルへ移動する
[jump storage=second.ks target=*start]
4.3. [link]
- グループ: ラベル・ジャンプ操作
- タイトル: ハイパーリンク(選択肢)の開始
- 説明:
[link]と[endlink]で囲まれたテキストを、クリック可能な選択肢(ハイパーリンク)にします。- クリックされると指定した
storage/targetにジャンプします ([jump]と同様の動作)。 - 選択肢を表示した後は、通常
[s]タグでゲームの進行を停止させる必要があります。
- パラメータ:
storage: (任意) ジャンプ先のシナリオファイル名。 (デフォルト値:null)target: (任意) ジャンプ先のラベル名。 (デフォルト値:null)keyfocus: (任意) キーボード/ゲームパッドでのフォーカスを有効にするか、またはフォーカス順序を指定。 (デフォルト値:"")once: (任意) 一度クリックされたら無効にするか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
- 現在のメッセージレイヤに新しい
<span>を追加し、current_spanに設定します。 kag.stat.display_linkをtrueに設定します (リンク表示中フラグ)。<span>要素にpointerカーソルとフォーカス関連のクラス・属性を設定します (kag.setElmCursor,kag.makeFocusable)。kag.event.addEventElementでイベント情報を登録します。setEventメソッドを呼び出してクリックイベントリスナを設定します。- クリック時:
- 音声再生制限を解除します (
kag.readyAudio)。 - 仮想マウスカーソルが表示中などはクリックを無効化します。
once=trueでクリック済みなら無効化します。- クリック済みフラグ (
clicked) を立てます。 once=trueの場合、画面上のすべての[link]要素のクリックイベントを解除し、カーソルを元に戻し、イベント属性を削除します。- 仮想マウスカーソルを隠します (
kag.key_mouse.vmouse.hide)。 kag.stat.display_linkをfalseに設定します。[jump]タグを実行してジャンプします (nextOrderWithLabel)。- スキップ継続設定 (
kag.stat.skip_link) に応じてスキップ状態を制御します。
- 音声再生制限を解除します (
- クリック時:
- 次のタグへ進みます (
nextOrder)。
- 現在のメッセージレイヤに新しい
- サンプルコード: (省略。
[endlink]のサンプル参照)
4.4. [endlink]
-
グループ: ラベル・ジャンプ操作
-
タイトル: ハイパーリンク(選択肢)の終了
-
説明:
[link]タグで開始したテキストのリンク化を終了します。
-
パラメータ: (なし)
-
期待される動作:
- 現在のメッセージレイヤの
current_spanを確定させます (新しい<span>を挿入します)。 - 次のタグへ進みます (
nextOrder)。
- 現在のメッセージレイヤの
-
サンプルコード:
選択肢を表示します[l][r][r] [link target=*select1]【1】選択肢 その1[endlink][r] [link target=*select2]【2】選択肢 その2[endlink][r] [s] *select1 [cm] 「選択肢1」がクリックされました[l] @jump target=*common *select2 [cm] 「選択肢2」がクリックされました[l] @jump target=*common *common [cm] 共通ルートです
4.5. [glink]
-
グループ: ラベル・ジャンプ操作
-
タイトル: グラフィカルリンク
-
説明:
- テキストボタン(グラフィカルリンク)を表示します。画像不要で様々なデザインのボタンを作成できます。
- クリックされると指定した
storage/targetにジャンプします ([jump]と同様の動作)。 - 通常、クリック後は自動的に
[cm]が実行され、表示されていたボタン類が消去されます。 - V515以降、
[glink_config]タグによる自動配置機能が追加されました。
-
パラメータ:
color: (任意) ボタンのデザインテンプレート名 (black,red,btn_01_redなど)。 (デフォルト値:"black")font_color: (任意) ボタンテキストの色 (0xRRGGBB形式)。 (デフォルト値:"")storage: (任意) ジャンプ先のシナリオファイル名。 (デフォルト値:null)target: (任意) ジャンプ先のラベル名。 (デフォルト値:null)name: (任意) ボタン要素にname属性値を設定します。 (デフォルト値:"")text: (任意) ボタンに表示するテキスト。 (デフォルト値:"")x: (任意) ボタンの左端位置 (px)。autoまたは省略で自動配置対象。 (デフォルト値:"auto")y: (任意) ボタンの上端位置 (px)。省略で自動配置対象。 (デフォルト値:"")width: (任意) ボタンの横幅 (px)。 (デフォルト値:"")height: (任意) ボタンの高さ (px)。 (デフォルト値:"")size: (任意) フォントサイズ (px)。 (デフォルト値:30)face: (任意) フォント名。 (デフォルト値:"")graphic: (任意) ボタンの背景画像ファイル。data/imageから読み込み。指定時はcolor無視。 (デフォルト値:"")enterimg: (任意)graphic指定時、マウスホバー時の背景画像。 (デフォルト値:"")cm: (任意) クリック後に[cm]を実行するか (trueorfalse)。 (デフォルト値:"true")opacity: (任意) ボタンの不透明度 (0-255)。 (デフォルト値:"")clickse: (任意) クリック時の効果音ファイル。data/soundから。 (デフォルト値:"")enterse: (任意) マウスホバー時の効果音ファイル。 (デフォルト値:"")leavese: (任意) マウスアウト時の効果音ファイル。 (デフォルト値:"")exp: (任意) クリック時に実行するJavaScript式。 (デフォルト値:"")preexp: (任意)exp内で使用できる値を事前に評価して設定。 (デフォルト値:"")bold: (任意) 太字にするか (trueorfalse)。 (デフォルト値:"")edge: (任意) 文字の縁取り。[font]と同様。 (デフォルト値:"")shadow: (任意) 文字の影。[font]と同様。 (デフォルト値:"")keyfocus: (任意) キーボード/ゲームパッドでのフォーカスを有効にするか、またはフォーカス順序を指定。 (デフォルト値:"")autopos: (任意)trueで自動配置対象にする (x="auto",y=""と同じ)。 (デフォルト値:"false")show_*,select_*,reject_*: (内部的)[glink_config]から引き継がれるアニメーション設定。
-
期待される動作:
- フリーレイヤを取得します。
<div>要素 (j_button) を生成し、基本スタイル (position,z-index,font-sizeなど) を適用します。autopos=trueならpm.x = "auto",pm.y = ""とします。font_color,width,height,opacity,bold,edge,shadow,faceを適用します。graphicがあれば背景画像を設定し、なければcolorに応じたクラスを追加します。x,yまたはlocate情報に基づいて位置を設定します。nameがあれば設定します。preexpを評価し、pmに再格納します。[glink_config]からアニメーション関連のパラメータをpmにマージします。kag.event.addEventElementでイベント情報を登録します。setEventメソッドを呼び出してイベントリスナを設定します。- ホバー時:
enterimgの切り替え、enterseの再生。 - マウスダウン時: イベント伝搬停止。
- クリック時:
- 各種無効化チェック (信頼済みイベントか、ストロングストップ中か、クリック済みかなど)。
- クリック済みフラグ (
button_clicked) を立てます (cm=falseの場合は立てません)。 - 他の
[glink]ボタンのイベントを解除します (cancelAllFreeLayerButtonsEvents)。 clicked_buttonクラスを追加します。clickimgがあれば画像を変更します。- 効果音 (
clickse) を再生します。 expがあればJavaScriptを実行します。select_*,reject_*パラメータに基づいて、クリックされたボタンとされなかったボタンに退場アニメーション (startAnim) を適用します。- アニメーションが不要またはスキップ中の場合、即座に
next()(内部関数) を呼び出します。 next():cm=trueなら[cm]を実行します。pm.holdが"true"ならジャンプ情報を保持します。[jump]タグを実行します。- スキップ継続設定 (
kag.stat.skip_link) に応じてスキップ状態を制御します。
- ホバー時:
- 自動配置が有効な場合 (
pm.x="auto",pm.y=""など) は、glink_button_auto_placeクラスを追加し、要素を非表示にします。[s]タグ実行時にshowGLinksが呼ばれて表示・配置されます。 - 自動配置が無効な場合、表示アニメーション (
show_*パラメータ) が設定されていればstartAnimを呼び出して実行します。 - ボタン要素をフリーレイヤに追加し、表示します (
target_layer.append(j_button).show())。 - 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[glink target="j1" text="選択肢1" size=20 width="500" y=300] [glink target="j2" text="選択肢2" size=30 width="500" y=400] [glink target="j3" text="選択肢3" size=30 width="500" y=400] [s]
4.6. [glink_config]
-
グループ: ラベル・ジャンプ操作
-
タイトル: グラフィカルリンクの設定
-
説明: (V515以降)
[glink]の自動配置やアニメーションに関するデフォルト設定を行います。
-
パラメータ:
auto_place: (任意) 自動配置を有効にするか (trueorfalse)。 (デフォルト値:"true")auto_place_force: (任意)x,y指定のある[glink]も強制的に自動配置対象にするか (trueorfalse)。 (デフォルト値:"false")margin_x,margin_y: (任意) ボタン外側の余白 (px)。 (デフォルト値:margin_x="0",margin_y="20")padding_x,padding_y: (任意) ボタン内側の余白 (px)。defaultで無調整。 (デフォルト値:"default")direction: (任意) ボタンの並び方向 (rowまたはcolumn)。 (デフォルト値:"column")wrap: (任意) 折り返し (wrapまたはnowrap)。 (デフォルト値:"nowrap")dx,dy: (任意) 配置領域全体のオフセット (px)。 (デフォルト値:"0")width,height: (任意) ボタンサイズ揃え (max, 数値(px),default)。 (デフォルト値:"default")vertical: (任意) 縦方向揃え (top,center,bottom)。 (デフォルト値:"center")horizontal: (任意) 横方向揃え (left,center,right)。 (デフォルト値:"center")place_area: (任意) 配置基準領域 (auto,cover,left,top,width,height)。 (デフォルト値:"auto")show_*,select_*,reject_*: (任意) 各タイミングでのアニメーション設定 (time,effect,keyframe,delay,easing)。
-
期待される動作:
kag.stat.glink_configオブジェクトを必要ならデフォルト値 (default_glink_config) で初期化します。horizontal,verticalの値をCSSのflexプロパティ値に変換します。- 指定されたパラメータの値を
kag.stat.glink_configに格納します。 - 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[glink_config auto_place="true" show_time="300"] [position left="160" top="500" width="1000" height="200" visible="true"] [position margint="45" marginl="50" marginr="70" marginb="60"] ティラノスクリプトに興味ある?[l] [glink color="btn_13_red" text="はい。興味あります" target="*selectinterest"] [glink color="btn_13_red" text="興味あります!" target="*selectinterest"] [glink color="btn_13_red" text="どちらかと言うと興味あり" target="*selectinterest"] [s] *selectinterest ホント!?うれしいなー[p]
5. 変数・JS操作・ファイル読込関連タグ
5.1. [eval]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: 式の評価
-
説明:
expパラメータに指定されたJavaScriptの文を実行します。- 主にゲーム変数(
f.*)やシステム変数(sf.*)に値を代入するために使用されます。
-
パラメータ:
exp: (必須) 実行するJavaScript文。next: (任意)falseを指定するとnextOrderを呼び出しません。 (デフォルト値:"true")
-
期待される動作:
kag.evalScript(pm.exp)を呼び出してJavaScript文を実行します。これにより、f,sf,tf,mp変数がスコープ内で利用可能になります。pm.nextが"true"なら次のタグへ進みます (nextOrder)。
-
サンプルコード:
[eval exp="f.akane_like=50"] ;↑ゲーム変数 akane_like に 50 という数値をセット ;あかねの好感度は50のようだ [eval exp="f.akane_nickname='あーちゃん'"] ;↑ゲーム変数 akane_nickname に あーちゃん という文字列をセット ;あかねのあだ名はあーちゃんのようだ ;※文字列はシングルクォーテーション(')で囲みます [eval exp="f.yamato_like = f.akane_like * 2"] ;↑ゲーム変数 yamato_like に ゲーム変数 akane_like の 2倍の数値をセット ;やまとの好感度はあかねの好感度の2倍のようだ
5.2. [clearvar]
- グループ: 変数・JS操作・ファイル読込
- タイトル: 変数の消去
- 説明:
- ゲーム変数(
f.*)またはシステム変数(sf.*)を消去します。 expを省略すると、すべてのゲーム変数(f.*)と一時変数(tf.*、ただしtf.systemを除く)が消去されます。
- ゲーム変数(
- パラメータ:
exp: (任意) 消去する変数名 (f.name,sf.flagなど)。省略時は全消去。 (デフォルト値:"")
- 期待される動作:
pm.expが空文字列の場合:kag.clearVariable()を呼び出します。これによりkag.stat.fとkag.variable.sfが空のオブジェクト{}になり、kag.variable.tfもsystemプロパティを除いて空になります。その後、システム変数 (sf) をストレージに保存します (saveSystemVariable)。
pm.expが指定されている場合:kag.evalScript("delete " + pm.exp)を呼び出して指定された変数を削除します。
- 次のタグへ進みます (
nextOrder)。
5.3. [clearsysvar]
- グループ: 変数・JS操作・ファイル読込
- タイトル: システム変数の全消去
- 説明:
- すべてのシステム変数 (
sf.*) を消去します。
- すべてのシステム変数 (
- パラメータ: (なし)
- 期待される動作:
kag.variable.sfを空のオブジェクト{}に設定します。- 次のタグへ進みます (
nextOrder)。
5.4. [trace]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: コンソールへの値の出力
-
説明:
expパラメータに指定されたJavaScript式を評価し、その結果をブラウザのコンソールに出力します。デバッグ用途に使用します。
-
パラメータ:
exp: (任意) 評価するJavaScript式。 (デフォルト値:"")
-
期待される動作:
kag.embScript(pm.exp)を呼び出して式を評価します。- 評価結果を
kag.log("trace出力:" + val)でコンソールに出力します。 - 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
;ゲーム変数testに1を入れる [eval exp="f.test=1"] ;ゲーム変数testの内容をコンソールに出力する [trace exp="f.test"]
5.5. [emb]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: 式評価結果の埋め込み
-
説明:
expパラメータに指定されたJavaScript式を評価し、その結果を現在のメッセージテキストに追加します。- 主に変数の中身をテキスト中に表示したい場合に使用します。
-
パラメータ:
exp: (必須) 評価するJavaScript式。
-
期待される動作:
kag.embScript(pm.exp)を呼び出して式を評価し、結果を文字列に変換します ("" + ...)。- 内部的に
[text]タグを呼び出し、評価結果の文字列を表示します。この際、backlog="join"が渡されるため、バックログ上では直前のテキストと連結されます。
-
サンプルコード:
;ゲーム変数 name に ポチ という文字列をセット [eval exp="f.name='ポチ'"] ;↑長くなるためここでは扱いませんが ; [edit]タグでプレイヤーに入力させてみても面白いですね ;テキスト中に変数の中身を埋め込む 今日からこの子の名前は[emb exp="f.name"]だ。[l][r] ;キャラの名前のようなケースでは ;仮名でマクロ化しておくとシナリオファイルが読みやすくなるでしょう [macro name="シロ"] [emb exp="f.name"] [endmacro] ;仮名マクロで記述する おーい、[シロ]。[シロ]!元気?[s] ;※サンプルでは f.name に ポチ が入っているのでポチと表示される
5.6. [iscript], [endscript]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: JavaScriptの記述 / JavaScriptの終了
-
説明:
[iscript]と[endscript]で囲まれた部分に直接JavaScriptコードを記述できます。- 変数操作、DOM操作、外部ライブラリの呼び出しなど、JavaScriptで可能なことは基本的に実行できます。
- 囲まれた部分のテキストは、タグとして解析されずにJavaScriptコードとしてバッファに蓄積され、
[endscript]タグ到達時にまとめて評価・実行されます。
-
パラメータ (
[iscript]): (なし) -
パラメータ (
[endscript]):stop: (任意)trueを指定すると、[endscript]実行後にnextOrderを呼び出しません。JavaScript内でジャンプ処理を行いたい場合に使用します。 (デフォルト値:"false")
-
期待される動作:
[iscript]:kag.stat.is_scriptをtrueに設定します。kag.stat.buff_scriptを空文字列に初期化します。- 次のタグへ進みます (
nextOrder)。
[endscript]:kag.stat.is_scriptをfalseに設定します。kag.stat.buff_scriptに蓄積されたJavaScriptコードをkag.evalScript()で実行します。kag.stat.buff_scriptを空文字列にリセットします。pm.stopが"false"なら次のタグへ進みます (nextOrder)。
-
サンプルコード:
[iscript] var test = 22; f.name = test; //JavaScriptの関数にアクセス可能 alert("JavaScript"); //jQueryも利用可能 $("body").html(); //JS方式の行コメントも書けますが ;ティラノスクリプトの行コメントも有効のままなので注意が必要です ;alert("!!") [endscript]
5.7. [loadjs]
- グループ: 変数・JS操作・ファイル読込
- タイトル: 外部JavaScriptファイル読み込み
- 説明:
- 指定した外部JavaScriptファイルを動的に読み込み、実行します。
- 読み込むファイルは
data/othersフォルダに配置します。
- パラメータ:
storage: (必須) 読み込むJavaScriptファイル名。type: (任意) 読み込み方式。moduleを指定すると ES Modules としてインポートします。 (デフォルト値:"")
- 期待される動作:
pm.typeが"module"の場合:import()を使用して、../../../data/others/+pm.storageのパスにあるファイルをモジュールとして読み込みます。- 読み込み完了後 (Promiseが解決された後)、
nextOrderを呼び出します。
pm.typeが"module"でない場合:$.getScript("./data/others/" + pm.storage)を呼び出してJavaScriptファイルを読み込み、実行します。- 読み込みと実行が完了した後、
nextOrderを呼び出します。
- サンプルコード:
tyranoscript ;data/others/sample.jsを読み込み [loadjs storage="sample.js"]
5.8. [preload]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: 素材ファイルの事前読み込み
-
説明:
- 画像や音声などの素材ファイルを事前に読み込み(プリロード)ます。
- これにより、実際に素材を使用する際の表示や再生がスムーズになります。
storageにはファイルパスの文字列、またはファイルパス文字列の配列を指定できます。- V515以降、音声ファイルはデフォルトで使い捨て(
single_use="true")となり、一度再生されるとプリロードデータが破棄されます。繰り返し使う音声はsingle_use="false"を指定するか、都度[preload]してください。
-
パラメータ:
storage: (必須) プリロードするファイルパス(data/フォルダからの相対パス)、またはファイルパスの配列。wait: (任意)trueを指定すると、すべてのファイルの読み込みが完了するまで待機します。 (デフォルト値:"false")single_use: (任意) 音声ファイルの場合、一度使用したらプリロードデータを破棄するか (trueorfalse)。 (デフォルト値:"true")name: (任意) 音声ファイルの場合、プリロードデータに名前(グループ名)を付けます。カンマ区切りで複数指定可。[unload]でまとめて削除する際に使用。 (デフォルト値:"")
-
期待される動作:
wait="true"の場合、weaklyStop()を呼び出して一時停止します。storageが配列の場合:- 配列内の各ファイルパスに対して
kag.preload()を呼び出します。 - すべてのプリロードが完了した時点で、
wait="true"ならcancelWeakStop()とnextOrder()を呼び出します。
- 配列内の各ファイルパスに対して
storageが文字列の場合:kag.preload(pm.storage, ...)を呼び出します。- プリロード完了後、
wait="true"ならcancelWeakStop()とnextOrder()を呼び出します。
wait="false"の場合、kag.preload()呼び出し後(プリロード完了を待たずに)cancelWeakStop()とnextOrder()を呼び出します。kag.preload内部処理:- ファイル拡張子を判定します。
- 音声ファイルの場合:
- プリロード済みかチェックします。ロード中なら完了を待ち、ロード済みなら即コールバックを呼びます。
- 未ロードなら
Howlオブジェクトを生成し、preload_audio_mapに格納します。 __preload,__single_use,__namesプロパティを設定します。- ロードを開始 (
audio_obj.load()) し、完了またはエラー時にコールバックを呼びます。
- 動画ファイルの場合:
<video>要素を生成し、srcを設定します。loadeddataまたはloadedmetadataイベントでコールバックを呼びます。
- 画像ファイルの場合:
<img>要素を生成し、srcを設定します。loadイベントでコールバックを呼びます。
-
サンプルコード:
;画像ファイルはフルパス(プロジェクトファイル以下)で指定します [preload storage="data/fgimage/girl.jpg"] ;配列を渡すと、まとめてロードすることもできます。 [iscript] f.preload_images = [ 'data/fgimage/girl.jpg', 'data/fgimage/haruko.png', 'data/fgimage/miku1.png', 'data/fgimage/miku2.png' ]; [endscript] [preload storage=&f.preload_images]
5.9. [unload]
- グループ: 変数・JS操作・ファイル読込
- タイトル: 音声プリロードデータの破棄
- 説明: (V515以降)
[preload]タグでsingle_use="false"を指定して読み込んだ音声プリロードデータをメモリから破棄します。storage,name,all_soundのいずれかのパラメータで破棄対象を指定します。
- パラメータ:
storage: (任意) 破棄する音声ファイルのパス。name: (任意) 破棄する音声のグループ名 ([preload]のnameで指定したもの)。all_sound: (任意)trueを指定すると、すべての音声プリロードデータを破棄。 (デフォルト値:"false")
- 期待される動作:
all_sound="true"の場合:kag.tmp.preload_audio_map内のすべての Howl オブジェクトに対してunload()を呼び出し、マップから削除します。
nameが指定されている場合:preload_audio_mapを走査し、指定されたnameを__names配列に含む Howl オブジェクトに対してunload()を呼び出し、マップから削除します。
storageが指定されている場合:storageパスに対応する Howl オブジェクトを取得し、unload()を呼び出してマップから削除します。
- 次のタグへ進みます (
nextOrder)。
5.10. [plugin]
-
グループ: 変数・JS操作・ファイル読込
-
タイトル: プラグイン読み込み
-
説明:
- 外部プラグイン(
data/others/plugin/内のフォルダ)を読み込みます。 - デフォルトではプラグインフォルダ内の
init.ksが[call]されます。 - 任意のパラメータを渡すことができ、プラグイン内のシナリオ (
init.ksなど) でmp変数を通じてアクセスできます。
- 外部プラグイン(
-
パラメータ:
name: (必須) 読み込むプラグインのフォルダ名。storage: (任意) 最初に読み込むシナリオファイル名。 (デフォルト値:"init.ks")- (任意) その他: 自由にパラメータを指定できます。
-
期待される動作:
pm.storageにプラグインフォルダへのパス (../others/plugin/name/) を追加します。- 現在のマクロパラメータ (
kag.stat.mp) を、このタグに渡されたパラメータ (pm) で上書きします。 [call]タグを内部的に呼び出し、プラグインのstorageを実行します。
-
サンプルコード:
;プラグイン my_plugin を読み込み [plugin name="my_plugin" ] ;↑ data/others/plugin/my_plugin/init.ks にジャンプしているよ ;自由に引数を渡すことも可能 [plugin name="my_plugin" font_color="black" arg2="aaaaaa" ]
6. マクロ・分岐・サブルーチン関連タグ
6.1. [if], [elsif], [else], [endif]
-
グループ: マクロ・分岐・サブルーチン関連
-
タイトル: 条件分岐
-
説明:
- JavaScript の式 (
exp) を評価し、その結果 (trueまたはfalse) に基づいてシナリオの実行フローを分岐させます。 [if]で最初の条件を評価します。[elsif]で追加の条件を評価します(先行する[if]や[elsif]がfalseだった場合のみ)。[else]は、先行するすべての[if]と[elsif]がfalseだった場合に実行されます。[endif]で条件分岐ブロックを終了します。[if]には必ず対応する[endif]が必要です。
- JavaScript の式 (
-
パラメータ:
exp([if],[elsif]): (必須) 評価するJavaScript式。
-
期待される動作:
[if]:kag.embScript(pm.exp)で式を評価します。- 結果が
trueの場合:ifスタックに{bool: true, deep: ...}をプッシュします。- 次のタグへ進みます (
nextOrder)。
- 結果が
falseの場合:ifスタックに{bool: false, deep: ...}をプッシュします。- 対応する
[elsif],[else],[endif]のいずれかまでタグをスキップします (nextOrderWithTagSearch)。見つからない場合はエラー。
[elsif]:- 現在の
ifスタックの状態 (kag.getStack("if").bool) を確認します。すでにtrue(いずれかの条件が満たされている) ならば、対応する[else]または[endif]までスキップします。 ifスタックがfalseの場合、kag.embScript(pm.exp)で式を評価します。- 結果が
trueの場合:ifスタックの状態を{bool: true}に更新します (setStack)。- 次のタグへ進みます (
nextOrder)。
- 結果が
falseの場合:- 対応する
[elsif],[else],[endif]のいずれかまでスキップします。
- 対応する
- 現在の
[else]:- 現在の
ifスタックの状態を確認します。trueならば、対応する[endif]までスキップします。 ifスタックがfalseの場合:ifスタックの状態を{bool: true}に更新します。- 次のタグへ進みます (
nextOrder)。
- 現在の
[endif]:ifスタックから最新の要素をポップします (popStack("if"))。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
;ゲーム変数 like に 50 という数値をセット ;自由に変えてみてください [iscript] f.like = 50 [endscript] 例1[p] [if exp="f.like < 30"] 好感度が低いです[p] [endif] 例2[p] [if exp="f.like < 30"] 好感度が低いです[p] [else] 好感度が低くはないようです[p] [endif] 例3[p] [if exp="f.like >= 80"] 最高の好感度です[p] [elsif exp="f.like >= 40"] かなり高い好感度です[p] [else] 好感度は高くありません[p] [endif]
6.2. [clearstack]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: スタックの消去
- 説明:
[call],[if],[macro]タグの実行によって蓄積される内部的なスタック情報を消去します。[return],[endif],[endmacro]を経由しないジャンプ ([jump]) を多用するとスタックが溜まり、動作不良の原因となる可能性があるため、シナリオの区切りなどで定期的に実行することが推奨されます。- V515以降、
stack="anim"を指定するとアニメーションスタック (kag.tmp.num_anim) をリセットできます。
- パラメータ:
stack: (任意) 消去するスタックの種類 (call,if,macro,anim)。省略時はcall,if,macroをすべて消去。 (デフォルト値:"")
- 期待される動作:
pm.stackが空文字列の場合、kag.stat.stack.if,kag.stat.stack.call,kag.stat.stack.macroをすべて空の配列[]で初期化します。pm.stackが"anim"の場合、kag.tmp.num_animを0に設定します。pm.stackが"call","if","macro"のいずれかの場合、対応するkag.stat.stack内の配列を空にします。- 次のタグへ進みます (
nextOrder)。
6.3. [call]
-
グループ: マクロ・分岐・サブルーチン関連
-
タイトル: サブルーチンの呼び出し
-
説明:
- 指定したシナリオファイル・ラベル(サブルーチン)にジャンプします。
- ジャンプ先で
[return]タグに到達すると、この[call]タグを実行した場所に戻ってくることができます。 - 共通処理などをサブルーチン化して呼び出すのに便利です。
-
パラメータ:
storage: (任意) 呼び出すサブルーチンが存在するシナリオファイル名。省略時は現在のシナリオ。 (デフォルト値:null)target: (任意) 呼び出すサブルーチンのラベル名。省略時はファイルの先頭。 (デフォルト値:null)countpage: (任意) 【廃止予定?】 (デフォルト値:true)auto_next: (任意)[return]で戻ってきた後に自動でnextOrderを呼ぶか (yesorno)。通常はyes。 (デフォルト値:"yes")
-
期待される動作:
- 現在の実行位置情報(インデックス、シナリオファイル名)、
auto_nextパラメータ、[call]タグ自身のパラメータ (pm) を含むオブジェクト (back_pm) を作成します。 kag.pushStack("call", back_pm)でコールスタックにプッシュします。pm.targetがnullでpm.storageが指定されている場合は、指定シナリオの先頭 (index = -1) にジャンプします (nextOrderWithIndex)。- それ以外の場合は、指定された
targetラベルにジャンプします (nextOrderWithLabel)。
- 現在の実行位置情報(インデックス、シナリオファイル名)、
-
サンプルコード:
頭をなでた。[p] [call target=sub] しっぽをなでた。[p] [call target=sub] おなかをなでた。[p] [call target=sub] おわり[s] *sub [font color=green] 好感度が上がったぞ! [resetfont][p] [return]
6.4. [return]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: サブルーチンから戻る
- 説明:
[call]タグで呼び出されたサブルーチンから、呼び出し元の[call]タグの次の位置に戻ります。
- パラメータ: (なし)
- 期待される動作:
- コールスタックから最新の呼び出し元情報 (
pm) を取得します (kag.getStack("call"))。取得できない場合はエラーにはならず、そのまま処理を続行しようとしますが、通常は想定されません。 make.ksやresizecallからのreturnの場合、特定のフラグ (flag_ref_page,loading_make_ref) を操作し、必要であれば"load-complete"イベントを発火させます。- コールスタックから最新の要素をポップします (
kag.popStack("call"))。 - 取得した呼び出し元情報 (
pm) を使用して、nextOrderWithIndex(pm.index, pm.storage, undefined, undefined, pm.auto_next)を呼び出し、呼び出し元の次のタグから実行を再開します。
- コールスタックから最新の呼び出し元情報 (
- サンプルコード: (省略。
[call]のサンプル参照)
6.5. [macro], [endmacro]
-
グループ: マクロ・分岐・サブルーチン関連
-
タイトル: マクロ定義の開始 / マクロ定義の終了
-
説明:
[macro]と[endmacro]で囲まれた部分を、新しいカスタムタグ(マクロ)として定義します。name属性で指定した名前がマクロ名(タグ名)となります。- マクロ内で使用されるタグのパラメータには特殊な記述が可能です。
%param: マクロ呼び出し時に渡されたparamパラメータの値を使用します。%param|default:paramが渡されなかった場合のデフォルト値を指定できます。- : マクロ呼び出し時に渡されたすべてのパラメータをそのタグに渡します。
-
パラメータ (
[macro]):name: (必須) 定義するマクロ(カスタムタグ)の名前。既存のタグ名や予約語(text,labelなど)は使用できません。
-
パラメータ (
[endmacro]): (なし) -
期待される動作:
[macro]:- 現在の実行位置(インデックス、シナリオファイル名)を
kag.stat.map_macro[pm.name]に格納します。 - マクロ定義解析中フラグ (
kag.tmp.checking_macro = true) を立てます。 - 対応する
[endmacro]までタグをスキップします (nextOrderWithTagSearch)。見つからない場合はエラー。
- 現在の実行位置(インデックス、シナリオファイル名)を
[endmacro]:- マクロ定義解析中フラグ (
kag.tmp.checking_macro) がtrueならば、フラグをfalseにしてnextOrderを呼び、処理を終了します。 - マクロ実行中の場合(解析中でない場合):
- マクロスタックから最新の呼び出し元情報 (
map_obj) を取得します (kag.getStack("macro"))。 - マクロスタックをポップします (
popStack("macro"))。 - さらにマクロスタックを取得し(ネストされたマクロの場合)、
kag.stat.mp(現在のマクロパラメータ)を復元します。 nextOrderWithIndex(map_obj.index, map_obj.storage, true)を呼び出して、マクロ呼び出し元の次のタグから実行を再開します。
- マクロスタックから最新の呼び出し元情報 (
- マクロ定義解析中フラグ (
-
サンプルコード:
;自分で[my_color_1]というタグを作れる!! [macro name="my_color_1"] [font color="0xff0000"] 新しいタグです[p] [resetfont] [endmacro] ;さっそく使ってみる [my_color_1] ;iroパラメータを指定できる、もし指定がなかったら0xff0000 [macro name="my_color_2"] [font color=%iro|0xff0000] iroパラメータを指定できるタグです[p] [resetfont] [endmacro] ;さっそく使ってみる [my_color_2 iro=0x00ff00] [my_color_2] ;すべてのパラメータを流用するマクロ [macro name="my_color_3"] [font *] すべてのパラメータを渡せるタグです[p] [resetfont] [endmacro] [my_color_3 color=0x0000ff bold=true size=80]
6.6. [erasemacro]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: マクロの削除
- 説明:
[macro]タグで定義したマクロを削除します。
- パラメータ:
name: (必須) 削除するマクロの名前。
- 期待される動作:
kag.stat.map_macroオブジェクトから指定されたnameのキーを持つプロパティを削除します (delete)。- 次のタグへ進みます (
nextOrder)。
6.7. [ignore], [endignore]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: 条件によりシナリオを無視 / [ignore]の終了
- 説明:
[ignore]タグのexpパラメータで指定されたJavaScript式を評価します。- 結果が
trueの場合、[ignore]と[endignore]で囲まれた部分のタグやテキストを無視(スキップ)します。 - 結果が
falseの場合は、通常通り実行されます。
- パラメータ (
[ignore]):exp: (必須) 評価するJavaScript式。
- パラメータ (
[endignore]): (なし) - 期待される動作:
[ignore]:kag.embScript(pm.exp)で式を評価します。- 結果が
trueの場合、対応する[endignore]までタグをスキップします (nextOrderWithTagSearch)。見つからない場合はエラー。 - 結果が
falseの場合、次のタグへ進みます (nextOrder)。
[endignore]:- 次のタグへ進みます (
nextOrder)。
- 次のタグへ進みます (
6.8. [sleepgame]
-
グループ: マクロ・分岐・サブルーチン関連
-
タイトル: ゲームの一時停止
-
説明:
- 現在のゲーム状態(変数、表示中のレイヤ、実行位置など)を一時的に保存(スナップ)し、指定したシナリオ・ラベルにジャンプします。
- 主に、ゲーム本編からメニュー画面(コンフィグ、セーブ/ロードなど)へ一時的に遷移し、その後ゲーム本編に戻る、といった用途に使用されます。
- ジャンプ先では
[awakegame]タグを実行することで、保存した状態に復帰できます。 [sleepgame]をネストすることはできません。
-
パラメータ:
storage: (任意) ジャンプ先のシナリオファイル名。 (デフォルト値:"")target: (任意) ジャンプ先のラベル名。 (デフォルト値:"")next: (任意)[awakegame]で復帰した後にnextOrderを呼ぶか (trueorfalse)。 (デフォルト値:true)
-
期待される動作:
- 現在のゲーム状態のスナップを作成します (
kag.menu.snapSave)。サムネイルは作成しません。 - スナップ作成完了後:
kag.menu.setGameSleep(pm.next)を呼び出し、作成したスナップをkag.tmp.sleep_gameに格納し、復帰後のnextOrder呼び出しフラグ (kag.tmp.sleep_game_next) を設定します。[jump]タグを内部的に呼び出し、指定されたstorage/targetへジャンプします。
- 現在のゲーム状態のスナップを作成します (
-
サンプルコード:
[sleepgame storage="scene3.ks" target="*start" ] ;buttonに紐付ける方法 [button name="button" role="sleepgame" fix="true" graphic="button/skip.gif" x=450 y=400 storage="scene3.ks" ]
6.9. [awakegame]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: ゲームの一時停止からの復帰
- 説明:
[sleepgame]タグで保存されたゲーム状態に復帰します。[sleepgame]中に変更されたゲーム変数 (f.*) やBGMの状態を引き継ぐかどうかを指定できます。- 復帰時には
make.ksシナリオが読み込まれます。
- パラメータ:
variable_over: (任意)f.*変数を引き継ぐか (trueorfalse)。 (デフォルト値:"true")sound_opt_over: (任意) BGM/SEの個別音量設定 (kag.stat.map_*_volume) を引き継ぐか (trueorfalse)。 (デフォルト値:"true")bgm_over: (任意) BGM再生状態を引き継ぐか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
kag.tmp.sleep_gameに保存されたスナップデータ (sleep_data) を取得します。存在しない場合はnextOrderを呼び出して終了します。variable_over="true"の場合、現在のkag.stat.fをsleep_data.stat.fに上書きします。sound_opt_over="true"の場合、現在の音量設定マップをsleep_data.stat.map_*_volumeに上書きします。kag.menu.loadGameData(sleep_data, options)を呼び出してゲーム状態を復元します。optionsにはbgm_overと、kag.tmp.sleep_game_nextに基づくauto_nextが含まれます。kag.tmp.sleep_gameをnullに設定します。
- サンプルコード: (省略。
[sleepgame]のサンプル参照)
6.10. [breakgame]
- グループ: マクロ・分岐・サブルーチン関連
- タイトル: ゲームの停止データの削除
- 説明:
[sleepgame]タグで保存された一時停止状態のデータを破棄します。- これにより、
[awakegame]で復帰することができなくなります。
- パラメータ: (なし)
- 期待される動作:
kag.tmp.sleep_gameをnullに設定します。- 次のタグへ進みます (
nextOrder)。
7. システム操作関連タグ
7.1. [s]
- グループ: システム操作
- タイトル: ゲームを停止する
- 説明:
- シナリオの実行を完全に停止します。プレイヤーのクリックや入力では再開できません。
- 主に選択肢 (
[link],[glink],[button]) を表示した後に使用し、プレイヤーの選択によってジャンプするのを待ちます。
- パラメータ: (なし)
- 期待される動作:
- 強力な停止フラグ (
kag.stat.is_strong_stop = true) を立てます。 - 弱い停止フラグ (
kag.stat.is_stop = true) も立てます。 [glink]の自動配置が有効な場合 (glink_config.auto_place === "true"),showGLinks()を呼び出して保留されていた[glink]を表示・配置します。
- 強力な停止フラグ (
- サンプルコード: (省略。
[link]などのサンプル参照)
7.2. [wait]
-
グループ: システム操作
-
タイトル: ウェイト
-
説明:
- 指定した時間 (ミリ秒単位) だけ、ゲームの進行を停止させます。
- この間、プレイヤーはクリックなどの操作ができません。
-
パラメータ:
time: (必須) 停止する時間 (ミリ秒)。
-
期待される動作:
weaklyStop(),stronglyStop()を呼び出してゲームを停止し、kag.stat.is_wait = trueを設定します。setTimeoutを使用して、pm.timeミリ秒後に以下の処理を実行するタイマーをセットし、タイマーIDをkag.tmp.wait_idに保存します。cancelStrongStop(),cancelWeakStop()を呼び出して停止状態を解除します。kag.stat.is_wait = falseを設定します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
2秒待つよ…… ;2000ミリ秒(2秒)処理を停止します [wait time=2000] 2秒待ったよ[p]
7.3. [wait_cancel]
- グループ: システム操作
- タイトル: ウェイトのキャンセル
- 説明:
[wait]タグによる待機状態を即座にキャンセルします。
- パラメータ: (なし)
- 期待される動作:
clearTimeout(this.kag.tmp.wait_id)で[wait]タグがセットしたタイマーを解除します。cancelStrongStop(),cancelWeakStop()を呼び出して停止状態を解除します。kag.stat.is_wait = falseを設定します。- 次のタグへ進みます (
nextOrder)。
7.4. [showsave]
- グループ: メニュー・HTML表示
- タイトル: セーブ画面の表示
- 説明:
- ゲームをプレイ中にセーブ画面を直接表示します。
- パラメータ: (なし)
- 期待される動作:
kag.stat.load_auto_nextをtrueに設定します。これにより、この画面でセーブしたデータをロードした際に、ロード完了後に自動で次のタグに進むようになります。kag.menu.displaySave()を呼び出してセーブ画面を表示します。その際のコールバックとして、セーブ画面が閉じられたときにload_auto_nextをfalseに戻し、nextOrderを呼び出す関数を渡します。
- サンプルコード:
[showsave]
7.5. [showload]
- グループ: メニュー・HTML表示
- タイトル: ロード画面の表示
- 説明:
- ゲームをプレイ中にロード画面を直接表示します。
- パラメータ: (なし)
- 期待される動作:
kag.menu.displayLoad()を呼び出してロード画面を表示します。その際のコールバックとして、ロード画面が閉じられたときにnextOrderを呼び出す関数を渡します。
- サンプルコード:
[showload]
7.6. [showmenu]
- グループ: メニュー・HTML表示
- タイトル: メニュー画面の表示
- 説明:
- ゲームをプレイ中にメニュー画面を直接表示します。
- パラメータ: (なし)
- 期待される動作:
kag.menu.showMenu()を呼び出してメニュー画面を表示します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[showmenu]
7.7. [showlog]
- グループ: メニュー・HTML表示
- タイトル: バックログの表示
- 説明:
- ゲームをプレイ中にバックログ画面を直接表示します。
- パラメータ: (なし)
- 期待される動作:
kag.menu.displayLog()を呼び出してバックログ画面を表示します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[showlog]
7.8. [savesnap]
- グループ: システム操作
- タイトル: セーブスナップの作成
- 説明:
- 現在のゲーム状態を一時的に保存(スナップ)します。
- このスナップは、
tyrano.ks拡張プラグインの[setsave]タグなどで実際のセーブデータとして保存されることを想定しています。
- パラメータ:
title: (必須) セーブデータのタイトル。
- 期待される動作:
kag.menu.snapSave(pm.title, callback)を呼び出してゲーム状態のスナップを作成します。- スナップ作成完了後、コールバック関数内で
nextOrderを呼び出して次のタグへ進みます。
7.9. [autosave]
-
グループ: システム操作
-
タイトル: オートセーブを実行
-
説明:
- 現在のゲーム状態をオートセーブデータとして自動的に保存します。
- オートセーブデータが存在する場合、システム変数
sf.system.autosaveがtrueになります。
-
パラメータ:
title: (任意) オートセーブデータのタイトル。省略時は現在のメッセージ (kag.stat.current_save_str)。 (デフォルト値:"")
-
期待される動作:
pm.titleが空の場合、kag.stat.current_save_strで補完します。kag.menu.snapSave(pm.title, callback)を呼び出してスナップを作成します。- スナップ作成完了後、コールバック関数内で
kag.menu.doSetAutoSave()を呼び出してオートセーブデータを保存し、nextOrderを呼び出します。
-
サンプルコード:
オートセーブデータの判定を行います[l][r] [if exp="sf.system.autosave === true"] 自動的に保存されたデータが存在します。ロードしますか?[r] [link target=select1]【1】はい[endlink][r] [link target=select2]【2】いいえ[endlink][r] [s] *select1 ロードを実行します[l] [autoload] *select2 [cm] ロードを実行しません[l][r] [else] 自動的に保存されたデータはありません[l][r] [endif] オートセーブを実行しました[autosave][l][r] ゲームを再起動してみてください[s]
7.10. [autoload]
- グループ: システム操作
- タイトル: オートロードを実行
- 説明:
[autosave]タグで保存されたオートセーブデータを読み込み、ゲームを再開します。
- パラメータ: (なし)
- 期待される動作:
kag.menu.loadAutoSave()を呼び出します。- 内部でオートセーブデータを取得し、
loadGameDataを呼び出してゲーム状態を復元します。
- サンプルコード: (省略。
[autosave]のサンプル参照)
7.11. [checkpoint]
- グループ: システム操作
- タイトル: チェックポイントの登録
- 説明:
- 現在のゲーム状態を「チェックポイント」として名前をつけて保存します。
- 保存されたチェックポイントには
[rollback]タグで戻ることができます。
- パラメータ:
name: (必須) チェックポイントの名前。
- 期待される動作:
kag.menu.snapSave("checkpoint", callback, "false")を呼び出してスナップを作成します (サムネイルなし)。- スナップ作成完了後、コールバック関数内で
kag.menu.doSetCheckpoint(pm.name)を呼び出してスナップデータをkag.stat.checkpoint[pm.name]に保存し、nextOrderを呼び出します。
- サンプルコード:
tyranoscript [checkpoint name="p1"]
7.12. [rollback]
-
グループ: システム操作
-
タイトル: ロールバック
-
説明:
[checkpoint]タグで保存したチェックポイントの状態に戻ります。
-
パラメータ:
checkpoint: (必須) 戻りたいチェックポイントの名前。variable_over: (任意) ロールバック後のゲーム変数(f.*)を、ロールバック実行前の状態にするか (trueorfalse)。 (デフォルト値:"true")bgm_over: (任意) ロールバック後のBGM再生状態を、ロールバック実行前の状態にするか (trueorfalse)。 (デフォルト値:"false")
-
期待される動作:
kag.menu.doRollback(pm.checkpoint, pm.variable_over, pm.bgm_over)を呼び出します。doRollback内部:kag.stat.checkpoint[pm.checkpoint]からチェックポイントデータを取得します。存在しない場合はfalseを返します。variable_over="true"の場合、現在のf.*変数をチェックポイントデータのstat.fに上書きします。loadGameDataを呼び出してゲーム状態を復元します。is_rollback=true,auto_next="yes",bgm_overオプションが渡されます。
doRollbackがfalseを返した場合(チェックポイントが存在しない場合)、エラーメッセージを表示し、nextOrderを呼び出します。
-
サンプルコード:
[checkpoint name="p1"] ;ここでいろいろ画面をつくりかえる ;チェックポイントの位置へどこからでも戻ることができる [rollback checkpoint="p1"]
7.13. [clear_checkpoint]
-
グループ: システム操作
-
タイトル: チェックポイントの削除
-
説明:
[checkpoint]タグで保存したチェックポイントデータを削除します。nameを指定しない場合は、すべてのチェックポイントが削除されます。
-
パラメータ:
name: (任意) 削除するチェックポイントの名前。 (デフォルト値:"")
-
期待される動作:
pm.nameが空文字列の場合、kag.stat.checkpointを空のオブジェクト{}で初期化します。pm.nameが指定されている場合、kag.stat.checkpointから指定されたキーを持つプロパティを削除します (delete)。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
;チェックポイントの作成 [checkpoint name="p1"] [clear_checkpoint name="p1"]
7.14. [start_keyconfig], [stop_keyconfig]
- グループ: システム操作
- タイトル: キーコンフィグ操作の有効化 / キーコンフィグ操作の無効化
- 説明:
[start_keyconfig]は、キーボードやマウス、ゲームパッドによる操作(キーコンフィグで定義されたアクション)を有効にします。[stop_keyconfig]は、これらの操作を一時的に無効にします。
- パラメータ: (なし)
- 期待される動作:
[start_keyconfig]:kag.stat.enable_keyconfigをtrueに設定します。- 次のタグへ進みます (
nextOrder)。
[stop_keyconfig]:kag.stat.enable_keyconfigをfalseに設定します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
キーコンフィグが有効[p]
[stop_keyconfig]
ここは無効[p]
ここも無効[p]
[start_keyconfig]
ここからまた有効[p]
7.15. [close]
- グループ: システム操作
- タイトル: ウィンドウを閉じる
- 説明:
- ゲームウィンドウまたはブラウザタブを閉じます。
- パラメータ:
ask: (任意) 閉じる前に確認ダイアログを表示するか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
pm.askが"true"の場合:- 確認ダイアログ (
$.confirm) を表示します。 - 「はい」が選択された場合、
close()メソッドを呼び出します。 - 「いいえ」が選択された場合、
nextOrderを呼び出します。
- 確認ダイアログ (
pm.askが"false"の場合、直接close()メソッドを呼び出します。close()メソッド内部:window.close()を呼び出します。- アプリ環境 (
navigator.app) ならnavigator.app.exitApp()を呼び出します。 - NW.js環境 (
require("nw.gui")) ならrequire("nw.gui").Window.get().close()を呼び出します。
7.16. [screen_full]
- グループ: システム操作
- タイトル: フルスクリーン
- 説明:
- ゲーム画面のフルスクリーン表示とウィンドウ表示を切り替えます。PC環境でのみ動作します。
- パラメータ: (なし)
- 期待される動作:
kag.menu.screenFull()を呼び出します。screenFull()内部で、現在のフルスクリーン状態を確認し、適切なAPI (requestFullscreen,exitFullscreenなど) を呼び出して状態を切り替えます。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[screen_full]
7.17. [dialog]
-
グループ: システム操作
-
タイトル: ダイアログ表示
-
説明:
- シンプルなダイアログボックスを表示します。
alert(警告)、confirm(確認)、input(入力) の3タイプがあります。 inputタイプは非推奨です。confirmまたはinputでボタンが押された後、指定されたstorage/targetにジャンプできます。
- シンプルなダイアログボックスを表示します。
-
パラメータ:
type: (任意) ダイアログの種類 (alert,confirm,input)。 (デフォルト値:"alert")name: (任意)type="input"の場合、入力内容を格納する変数名。 (デフォルト値:"tf.dialog_value")text: (任意) ダイアログに表示するメッセージ。 (デフォルト値:"")storage,target: (任意) OKボタン押下時のジャンプ先。両方省略時はnextOrder。storage_cancel,target_cancel: (任意) Cancelボタン押下時のジャンプ先。両方省略時はnextOrder。label_ok: (任意) OKボタンのテキスト。 (デフォルト値:"OK")label_cancel: (任意) Cancelボタンのテキスト。 (デフォルト値:"Cancel")
-
期待される動作:
- リモーダルウィンドウのOK/Cancelボタンのテキストを設定します (
#remodal-confirm,#remodal-cancel)。 type="confirm"の場合:$.confirmを呼び出して確認ダイアログを表示します。- OK時、Cancel時それぞれのコールバックで
finish(pm)を呼び出します (Cancel時はpm.storage,pm.targetを cancel 用の値で上書き)。
type="input"の場合:alertify.promptを呼び出して入力ダイアログを表示します。- OK時、入力内容を変数 (
pm.name) に格納し、finish(pm)を呼び出します。 - Cancel時、
pm.storage,pm.targetを cancel 用の値で上書きし、finish(pm)を呼び出します。
type="alert"の場合:$.alertを呼び出して警告ダイアログを表示します。- OK時、
finish(pm)を呼び出します。
finish(pm)内部:pm.storageまたはpm.targetが指定されていれば、[jump]タグを実行します。- そうでなければ
nextOrderを呼び出します。
- リモーダルウィンドウのOK/Cancelボタンのテキストを設定します (
-
サンプルコード:
;警告 [dialog type="alert" text="ここから先は危険地帯です"] ;確認してOKならシナリオジャンプ [dialog type="confirm" text="本当に進みますか?" target="ok" target_cancel="cancel"] *ok 進みます[p] [jump target=input] *cancel 進みませんでした[p] [jump target=input] *input ;inputは廃止予定!! ;入力 [dialog type="input" name="f.name" text="名前を教えてください" target="next"] *next あなたの名前は[emb exp="f.name"]ですね[s]
7.18. [apply_local_patch]
- グループ: システム操作
- タイトル: パッチファイルの適用
- 説明: (V470以降, PCアプリのみ)
- ローカルにあるパッチファイル (
.tpatch) を現在のゲームデータに適用します。
- ローカルにあるパッチファイル (
- パラメータ:
file: (必須) パッチファイルのパス (exeファイルからの相対パス)。reload: (任意) 適用後にゲームを再起動するか (trueorfalse)。 (デフォルト値:"false")
- 期待される動作:
- PCアプリ環境でなければ
nextOrderを呼び出して終了します。 - パッチファイルの絶対パス (
patch_path) を構築します。 kag.applyPatch(patch_path, pm.reload, callback)を呼び出します。applyPatch内部 (非同期):- パッチファイルが存在しなければコールバックを呼び出して終了します。
- asar パッケージ化されているかどうか (
unzip_path) を確認します。 - asar の場合:
- 一時フォルダ (
update_tmp) を作成します。 - 現在の
app.asarを一時フォルダに展開します (asar.extractAll)。 - パッチファイル (
.tpatch, 実体はzip) を一時フォルダに展開・上書きします (AdmZip.extractAllTo)。 - 一時フォルダの内容から新しい
app.asarを作成します (asar.createPackage)。 - 完了メッセージを表示し、パッチファイルと一時フォルダを削除し、ウィンドウを閉じます。
- 一時フォルダ (
- asar でない場合:
- パッチファイルを一時フォルダ (
update_tmp) に展開します。 - 一時フォルダの内容を現在のゲームフォルダに上書きコピーします (
fse.copySync)。 - 一時フォルダとパッチファイルを削除します。
- 完了メッセージを表示し、
reload="true"ならリロードします。
- パッチファイルを一時フォルダ (
applyPatchのコールバック内でnextOrderを呼び出します (リロードしない場合)。
- PCアプリ環境でなければ
- サンプルコード:
[apply_local_patch file="test.tpatch" ]
7.19. [check_web_patch]
- グループ: システム操作
- タイトル: アップデートのチェック
- 説明: (V470以降, PCアプリのみ)
- 指定されたURLにある
jsonファイルを読み込み、ゲームのバージョンと比較して、新しいパッチが存在すればユーザーに通知し、ダウンロードと適用(再起動が必要)を促します。
- 指定されたURLにある
- パラメータ:
url: (必須) パッチ情報が記述されたjsonファイルのURL。
- 期待される動作:
- PCアプリ環境でなければ
nextOrderを呼び出して終了します。 - 指定された
urlに AJAX リクエストを送信します。 - 成功時 (
success):- 受信したJSONデータをパースします。
checkPatch(json, pm)を呼び出します。
- 失敗時 (
error):- エラーログを出力し、エラーメッセージを表示します。
checkPatch内部:- 現在のパッチバージョン (
sf._patch_version) と JSON内のバージョンを比較します。 - JSON内のバージョンの方が新しい場合:
- 確認ダイアログ (
$.confirm) を表示します。 - 「はい」の場合:
- 適用メッセージを表示します。
- JSON内の
fileに基づいてパッチファイル (.tpatch) のURLを構築します。 http.get(またはhttps.get) を使用してパッチファイルをダウンロードし、ローカルに保存します。- ダウンロード完了後 (
res.on("end")):sf._patch_versionを更新します。- ウィンドウを閉じます (再起動を促す)。
- 「いいえ」の場合、
nextOrderを呼び出します。
- 確認ダイアログ (
- バージョンが同じか古い場合は、
nextOrderを呼び出します。
- 現在のパッチバージョン (
- PCアプリ環境でなければ
- サンプルコード:
[check_web_patch url="http://tyrano.jp/patch/mygame.json" ]
7.20. [closeconfirm_on], [closeconfirm_off]
- グループ: システム操作
- タイトル: 終了時の確認の有効化 / 終了時の確認の無効化
- 説明:
[closeconfirm_on]を通過すると、ゲームが未保存状態(最後にセーブ/ロードしてからタグが1つ以上進んだ状態)でウィンドウ/タブを閉じようとした際に確認ダイアログが表示されるようになります。[closeconfirm_off]を通過すると、この確認ダイアログが表示されなくなります。
- パラメータ: (なし)
- 期待される動作:
[closeconfirm_on]:kag.stat.use_close_confirmをtrueに設定します。- 次のタグへ進みます (
nextOrder)。(nextOrder内部で$.enableCloseConfirm()が呼ばれ、beforeunloadイベントが設定されます)
[closeconfirm_off]:kag.stat.use_close_confirmをfalseに設定します。$.disableCloseConfirm()を呼び出してbeforeunloadイベントを解除します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
ここで閉じようとしても終了時の確認はない[p]
ここで閉じようとしても終了時の確認はない[p]
[closeconfirm_on]
ここから未保存状態で閉じようとすると終了時の確認が出る[p]
ここから未保存状態で閉じようとすると終了時の確認が出る[p]
[closeconfirm_off]
ここで閉じようとしても終了時の確認はない[p]
ここで閉じようとしても終了時の確認はない[p]
8. システムデザイン変更関連タグ
8.1. [body]
- グループ: システムデザイン変更
- タイトル: ゲーム画面外の設定
- 説明:
- ゲーム画面の外側の領域(HTMLの
<body>要素)の背景色や背景画像を変更します。 - ゲーム画面自体のサイズ (
scWidth,scHeight) を動的に変更することも可能です。
- ゲーム画面の外側の領域(HTMLの
- パラメータ:
bgimage: (任意) 背景画像ファイル。data/bgimageから読み込みます。transparentで透明化。 (デフォルト値:"")bgrepeat: (任意) 背景画像の繰り返し方法 (repeat,repeat-x,repeat-y,no-repeat,round)。 (デフォルト値:"")bgcolor: (任意) 背景色 (0xRRGGBB形式)。bgimage指定時は無視。 (デフォルト値:"")bgcover: (任意) 背景画像を全体に引き伸ばすか (trueorfalse)。 (デフォルト値:"false")scWidth,scHeight: (任意) ゲーム画面のオリジナルの幅/高さ (px)。変更した場合、リサイズイベントが発火します。 (デフォルト値:"")
- 期待される動作:
bgcolorが指定されていれば$("body")のbackground-colorを設定します。bgimageが指定されていれば:"transparent"ならlayer=baseを非表示にし、bodyと.tyrano_baseの背景を透明にします。- それ以外なら
$("body")のbackground-imageを設定します。
bgrepeatが指定されていればbackground-repeatを設定します。bgcover="true"ならbackground-size: coverを設定します。scWidth,scHeightが現在の値と異なる場合:kag.config.scWidth/scHeightを更新します。.tyrano_base,.layerのwidth/heightを更新します。- リサイズフラグ (
flag_resize) を立てます。
flag_resizeが立っていれば、$(window).trigger("resize")を呼び出して画面の再描画を促します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[body bgimage="back.png" bgcolor="black" ]
8.2. [title]
- グループ: システムデザイン変更
- タイトル: タイトル指定
- 説明:
- ゲームウィンドウのタイトルバーやブラウザのタブに表示されるタイトル文字列を変更します。
- パラメータ:
name: (必須) 新しく設定するタイトル文字列。
- 期待される動作:
pm.nameが空でなければkag.setTitle(pm.name)を呼び出します。setTitle内部でkag.stat.titleを更新し、document.titleを設定します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[title name="変更後のタイトル"]
8.3. [save_img]
- グループ: システムデザイン変更
- タイトル: セーブデータのサムネイル変更
- 説明:
- セーブデータ一覧画面に表示されるサムネイル画像を、現在のゲーム画面のキャプチャではなく、指定した画像ファイルに変更します。
storage="default"を指定すると、通常の画面キャプチャに戻ります。
- パラメータ:
storage: (任意) サムネイルに使用する画像ファイル名。defaultで画面キャプチャ。 (デフォルト値:"")folder: (任意) 画像を読み込むフォルダ。 (デフォルト値:"bgimage")
- 期待される動作:
pm.storageが空なら"default"に設定します。folderが未指定なら"bgimage"を使用します。- 画像パス (
storage_url) を構築します。pm.storageが"default"なら空文字列にします。 kag.stat.save_imgにstorage_urlを設定します。これにより、次回セーブ時にこの画像がサムネイルとして使用されます。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
;サムネイル画像の変更
[save_img storage="my_capture.png" ]
8.4. [cursor]
-
グループ: システムデザイン変更
-
タイトル: マウスカーソルに画像を設定
-
説明:
- マウスカーソルの表示画像を変更します。デフォルトカーソルと、ボタンなどに乗せたときのポインターカーソルを個別に設定できます。
- マウスの自動非表示やクリックエフェクトの設定も可能です。
-
パラメータ:
storage: (任意) カーソル画像ファイル名。data/imageから読み込みます。defaultで標準カーソル。 (デフォルト値:"")x,y: (任意) カーソルのホットスポット座標 (px)。 (デフォルト値:"0")type: (任意) 変更するカーソルの種類 (defaultまたはpointer)。 (デフォルト値:"default")auto_hide: (任意) 自動非表示 (true,false, または非表示までの時間(ミリ秒))。 (デフォルト値:"")click_effect: (任意) クリックエフェクトを有効にするか (trueorfalse)。 (デフォルト値:"")e_*: (任意) クリックエフェクトの詳細設定 (e_width,e_opacity,e_time,e_color,e_blend,e_scale)。next: (任意)falseを指定するとnextOrderを呼び出しません。 (デフォルト値:"true")
-
期待される動作:
storageが指定されている場合:type="default"ならkag.setCursor(pm)を呼び出し、bodyのcursorスタイルと仮想マウスのデフォルト画像を設定します。type="pointer"など他の値なら、kag.stat.current_cursor_mapに情報を格納し、overwriteCSS()を呼び出して<style>タグを生成・更新し、ポインター要素のcursorスタイルを上書きします。仮想マウスの画像情報も更新します。
auto_hideが指定されている場合:"false"なら自動非表示を無効化し、関連イベントを解除します。trueまたは数値なら自動非表示を有効化し、mousemoveイベントリスナを設定して、一定時間マウス操作がない場合にカーソルを非表示にする処理を実装します。
click_effectが指定されている場合:kag.stat.click_effect.is_enabledを更新します。trueならクリック/ポインターダウンイベントリスナを設定し、showEffectを呼び出すようにします。falseならイベントリスナを解除します。
e_*パラメータが指定されていれば、kag.stat.click_effect内の対応するプロパティを更新します。- 仮想マウスカーソルの画像を更新します (
vmouse.refreshImage())。 pm.nextが"false"でない場合、次のタグへ進みます (nextOrder)。
-
サンプルコード:
;デフォルトのマウスカーソル画像を変更 [cursor storage="my_cursor_32x32.png"] ;ボタンの上にマウスカーソルを乗せたときの画像を変更 [cursor storage="my_cursor_pointer_32x32.png" type="pointer"] ;一定時間マウスの操作がなかった場合にマウスカーソルを非表示にする [cursor auto_hide="true"] ;クリックエフェクトを有効にする [cursor click_effect="true"] ;クリックエフェクトの設定変更 [cursor e_width="200" e_color="0xff0000" e_time="600" e_scale="200" e_blend="normal" e_opacity="100"] ;クリックエフェクトの設定変更(デフォルト設定) [cursor e_width="100" e_color="0xffffff" e_time="300" e_scale="120" e_blend="overlay" e_opacity="204"]
8.5. [showmenubutton], [hidemenubutton]
- グループ: システムデザイン変更
- タイトル: メニューボタンの表示 / メニューボタンの非表示
- 説明:
- 画面右下などに表示されるメニューボタン(歯車アイコンなど)の表示/非表示を切り替えます。
- パラメータ (
[showmenubutton]):keyfocus: (任意) キーボード/ゲームパッドでのフォーカスを有効にするか、またはフォーカス順序を指定。 (デフォルト値:"false")
- パラメータ (
[hidemenubutton]): (なし) - 期待される動作:
[showmenubutton]:.button_menu要素を表示 (show()) します。kag.makeFocusable()でフォーカス可能にします。kag.stat.visible_menu_buttonをtrueに設定します。kag.config.configVisibleを"true"に設定します。- 次のタグへ進みます (
nextOrder)。
[hidemenubutton]:.button_menu要素を非表示 (hide()) にします。kag.stat.visible_menu_buttonをfalseに設定します。kag.config.configVisibleを"false"に設定します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[showmenubutton]
[hidemenubutton]
8.6. [sysview]
- グループ: システムデザイン変更
- タイトル: システム画面変更
- 説明:
- セーブ、ロード、バックログ、メニュー画面で使用されるHTMLファイルのパスを変更します。これにより、これらの画面のデザインをカスタマイズできます。
- パラメータ:
type: (必須) 変更する画面の種類 (save,load,backlog,menu)。storage: (必須) 新しく使用するHTMLファイルのパス。
- 期待される動作:
- 指定された
typeのHTMLキャッシュ (kag.cache_html[type]) を削除します。 kag.stat.sysview[type]に新しいHTMLファイルのパス (pm.storage) を設定します。- 次のタグへ進みます (
nextOrder)。
- 指定された
- サンプルコード:
[sysview type="save" storage="./data/others/plugin/mytheme/html/save.html" ]
[sysview type="load" storage="./data/others/plugin/mytheme/html/load.html" ]
[sysview type="backlog" storage="./data/others/plugin/mytheme/html/backlog.html" ]
[sysview type="menu" storage="./data/others/plugin/mytheme/html/menu.html"]
8.7. [loadcss]
- グループ: 変数・JS操作・ファイル読込
- タイトル: CSS反映
- 説明:
- 外部CSSファイルを動的に読み込み、スタイルを適用します。
- パラメータ:
file: (必須) 読み込むCSSファイルのパス (data/から記述)。
- 期待される動作:
<link>要素を生成し、href属性にpm.file(+キャッシュ対策の乱数) を設定します。- 生成した
<link>要素を<head>内の最後の<link>要素の後に追加します。 keyFocusWithHoverStyleコンフィグが有効な場合、CSSロード完了時に:hoverスタイルを:focus.focusにコピーする処理 ($.copyHoverCSSToFocusCSS) をイベントリスナとして設定します。- 読み込んだファイルパスを
kag.stat.cssload[file]に記録します。 - 次のタグへ進みます (
nextOrder)。
- サンプルコード:
;CSSファイルの読み込み
[loadcss file="./data/others/css/mystyle.css" ]
8.8. [set_resizecall]
-
グループ: システムデザイン変更
-
タイトル: レスポンシブデザイン対応
-
説明:
- 画面の向き(縦長/横長)が変わったときに呼び出されるシナリオファイルとラベルを指定します。
- これにより、画面レイアウトの動的な変更(レスポンシブデザイン)に対応できます。
- 呼び出されたシナリオでは、最後に
[return]タグを実行する必要があります。
-
パラメータ:
storage: (必須) 呼び出すシナリオファイル名。target: (任意) 呼び出すラベル名。 (デフォルト値:"")
-
期待される動作:
kag.stat.resizecall.storageとkag.stat.resizecall.targetをpmの値で更新します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[call storage="resize.ks"] ;画面比率が変わったタイミングでresize.ksを呼び出す、という宣言 [set_resizecall storage="resize.ks" ]
8.9. [dialog_config], [dialog_config_ok], [dialog_config_ng], [dialog_config_filter]
- グループ: システムデザイン変更
- タイトル: 確認ダイアログのデザイン変更
- 説明:
$.confirmなどで表示される確認ダイアログ (リモーダルウィンドウ) のデザインを変更します。[dialog_config]は全体的な設定(背景、フォント、ボックス、アニメーションなど)。[dialog_config_ok]はOKボタン固有の設定。[dialog_config_ng]はキャンセルボタン固有の設定。[dialog_config_filter]はダイアログ背景に適用するフィルター効果。- これらのタグで変更した内容はセーブ/ロードで復元されません。通常は
first.ksなどゲーム開始前に記述します。
- パラメータ:
[dialog_config]:btntype,btnwidth,btnmargin,btnpadding(ボタン共通),fontsize,fontbold,fontface,fontcolor(メッセージ),btnfontsize,btnfontbold,btnfontface,btnfontcolor(ボタンテキスト),boxcolor,boxopacity,boxradius,boxwidth,boxheight,boxpadding,boximg,boximgpos,boximgrepeat,boximgsize(メッセージボックス),bgcolor,bgopacity,bgimg,bgimgpos,bgimgrepeat,bgimgsize(ダイアログ外背景),openeffect,opentime,closeeffect,closetime(開閉アニメーション),gotitle(タイトルへ戻る確認文言),okpos(OKボタン位置left/right),ingame(trueでゲーム画面内に表示)[dialog_config_ok],[dialog_config_ng]:text,type,width,margin,padding,fontsize,fontbold,fontface,fontcolor,img,imgwidth,enterimg,activeimg,clickimg,enterse,leavese,clickse,btnimgtype(bgで背景画像化)[dialog_config_filter]:layer,name,grayscale,sepia,saturate,hue,invert,opacity,brightness,contrast,blur([filter]と同様)
- 期待される動作:
- 初回実行時に
init()で関連するjQueryオブジェクト (j_overlay,j_box,j_buttonなど) を取得・生成し、プロパティに保持します。 [dialog_config]: 指定されたパラメータに基づき、対応する要素のCSSスタイルや内部状態 (kag.tmp.remodal_*) を更新します。[dialog_config_ok/ng]:changeButton(pm, is_ok)を呼び出します。pm.imgが指定されている場合はreplaceButton()を呼び出し、<button>を<img>に置き換えます。- そうでなければ、対象ボタン (
j_okまたはj_cancel) のテキスト、クラス、スタイル、イベントリスナ(ホバー/クリック音、画像切替など)を更新します。背景画像を使用する場合は内部のCSSマップを更新します。
[dialog_config_filter]:[filter]タグのbuildFilterPropertyValueを利用してフィルタ文字列を生成し、.remodal-base要素のbackdrop-filterスタイルを設定します。- 各タグの最後で
nextOrder()を呼び出します。
- 初回実行時に
- サンプルコード:
[dialog_config bgimg="pattern.jpg" bgimgrepeat="repeat" bgopacity="66"]
[dialog_config boxradius="20" boxcolor="#F0E3FD" boximg="../bgimage/title.jpg" boximgpos="right bottom" boximgsize="200" boxopacity="200"]
[dialog_config openeffect="rotateIn" opentime="800" closeeffect="rotateOut" closetime="800"]
[dialog_config_ok text="いいですよ"] [dialog_config_ok width="200" margin="10,30" type="btn_04_green"]
;画像ボタンにする場合はひとつのタグで記述
[dialog_config_ok img="dialog/ok.png" width="100" margin="20" enterimg="dialog/ok_enter.png" activeimg="dialog/ok_active.png" clickimg="dialog/ok_click.png" enterse="lab1.mp3" leavese="lab2.mp3" clickse="lab3.mp3"]
[dialog_config_ng text="ダメです"]
[dialog_config_filter blur="15"]
8.10. [mode_effect]
- グループ: システムデザイン変更
- タイトル: モード変化エフェクト
- 説明:
- スキップ/オート/ホールドスキップモードの開始・停止時に、画面中央にアイコンや画像を表示するエフェクトを設定します。
- パラメータ:
skip,auto,stop,holdskip,holdstop,all: (任意) 各モード変化時に表示する内容 (none,default, または画像ファイルパス)。allで一括指定可。env: (任意) 設定対象の環境 (all,pc,phone)。 (デフォルト値:"all")width,height: (任意) エフェクト画像のサイズ (px)。color: (任意)defaultエフェクト時の図形の色。bgcolor: (任意)defaultエフェクト時の背景円の色。
- 期待される動作:
pm.allが指定されていれば、他のモード変化パラメータ (skip, auto など) が未指定の場合にpm.allの値で補完します。pm.envに基づいて対象環境 (target_env_keys) を決定します。- 各対象環境 (
env_key) について、kag.tmp.mode_effect[env_key]マップを更新します。- 各モード (
skip,autoなど) について、storage(内容指定) とwidth,height,color,bgcolorを格納します。
- 各モード (
- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[mode_effect all="default" holdskip="none" holdstop="none"]
8.11. [loading_log]
- グループ: システムデザイン変更
- タイトル: ローディングログ
- 説明:
- 素材読み込み (
preload) やセーブ処理 (savesnap) 中に、画面端に「Loading…」のようなテキストとアイコンを表示する設定を行います。
- 素材読み込み (
- パラメータ:
preload,save,all: (任意) 各タイミングで表示するテキスト (none,default,notext, または任意の文字列)。allで一括指定可。dottime: (任意) テキスト末尾の「…」アニメーションの時間 (ミリ秒)。0で無効化。 (デフォルト値:1500)icon: (任意) ローディングアイコンを表示するか (trueorfalse)。 (デフォルト値:"true")mintime: (任意) ログを最低限表示する時間 (ミリ秒)。これより短い時間で処理が終わっても、この時間だけはログが表示されます。 (デフォルト値:20)left,top,right,bottom: (任意) ログ表示位置 (px)。 (デフォルト値:"")
- 期待される動作:
- 初回実行時に
init()でログ表示用の要素 (#tyrano-loading) を生成・取得し、関連するkag.statとkag.tmpプロパティを初期化します。 pm.allが指定されていれば、preload,saveが未指定の場合にpm.allの値で補完します。- 指定されたパラメータに基づき、
kag.stat.loading_logオブジェクトの各プロパティ (min_time,dot_time,use_icon,message_map) を更新します。 left,top,right,bottomが指定されていれば、#tyrano-loading要素のCSSスタイルを更新します。- 次のタグへ進みます (
nextOrder)。
- 初回実行時に
- サンプルコード:
[loading_log all="default"]
8.12. [lang_set]
- グループ: システムデザイン変更
- タイトル: 言語の切替
- 説明:
- ゲーム内で使用する言語設定ファイルを読み込み、切り替えます。
- 指定された言語名の
.jsonファイル (data/others/lang/内) を読み込み、内部の翻訳情報をkag.map_langに格納します。 - 切り替え後、現在のシナリオファイルを再読み込みして翻訳を適用します。
- パラメータ:
name: (必須) 切り替える言語名 (en,cnなど)。defaultでローカライズを無効化。
- 期待される動作:
pm.nameが"default"でない場合:- 対応する言語ファイル (
./data/others/lang/+pm.name+.json) を非同期で読み込みます ($.loadTextSync)。 - 読み込み成功時、
kag.langをpm.nameに、kag.map_langをパースしたJSONデータに設定します。 - 読み込み失敗時、
kag.langとkag.map_langをリセットします。
- 対応する言語ファイル (
pm.nameが"default"の場合、kag.langとkag.map_langをリセットします。- シナリオキャッシュ (
kag.cache_scenario) をクリアします。 - システム変数
sf._system_config_langにpm.nameを保存します。 - 現在のシナリオファイル (
kag.stat.current_scenario) を再読み込み (kag.loadScenario) します。 - 再読み込み完了後、コールバック内でタグ配列 (
kag.ftag.array_tag) を更新し、nextOrderを呼び出します。
- サンプルコード:
[lang_set name="en"]
9. 入力フォーム関連タグ
9.1. [edit]
-
グループ: 入力フォーム
-
タイトル: テキストボックス
-
説明:
- プレイヤーがテキストを入力できるテキストボックス (
<input type="text">) を画面上に表示します。 - テキストボックス表示中はシナリオ進行が停止します。必ず
[glink]や[button]などでジャンプできるようにしてください。 - 入力された内容は
[commit]タグ実行時に指定された変数に格納されます。
- プレイヤーがテキストを入力できるテキストボックス (
-
パラメータ:
name: (必須) 入力内容を格納する変数名 (f.player_nameなど)。initial: (任意) テキストボックスの初期値。 (デフォルト値:"")placeholder: (任意) 入力欄が空の時に表示されるプレースホルダーテキスト。 (デフォルト値:"")color: (任意) 文字色。 (デフォルト値:"black")left,top: (任意) テキストボックスの表示位置 (px)。 (デフォルト値:"0")size: (任意) フォントサイズ (px)。 (デフォルト値:"20")face: (任意) フォント名。省略時はデフォルトフォント。 (デフォルト値:"")width: (任意) テキストボックスの横幅 (px)。 (デフォルト値:"200")height: (任意) テキストボックスの高さ (px)。 (デフォルト値:"40")maxchars: (任意) 最大入力文字数。 (デフォルト値:"1000")autocomplete: (任意) ブラウザの自動補完を有効にするか (trueorfalse)。 (デフォルト値:"false")
-
期待される動作:
<input class="text_box form" type="text">要素 (j_text) を生成します。- 指定されたパラメータに基づき、CSSスタイル (
color,left,top,width,height,font-size,font-family) を適用します。 placeholder,maxlength,autocomplete属性を設定します。kag.event.addEventElementでイベント情報を登録します。setEventメソッドを呼び出して、初期値の設定、クリック時のフォーカス処理、キー入力時のイベント伝搬停止 (stopPropagation) を行います。j_textをフリーレイヤに追加し、表示します (kag.layer.getFreeLayer().append(j_text).show())。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
この子の名前を決めなければ…[l] [edit name="f.dog_name" left=50 top=100] [glink text="決定" target=next x=250 y=100 cm=false] [s] *next [commit name="f.dog_name"] [cm] この子の名前は「[emb exp=f.dog_name]」だ![r] やあ[emb exp=f.dog_name]!一緒に遊ぼう![s]
9.2. [commit]
- グループ: 入力フォーム
- タイトル: フォームの確定
- 説明:
[edit]タグで表示されているすべてのテキストボックスの現在の入力内容を取得し、それぞれのname属性で指定された変数に値を格納します。- このタグ実行時にテキストボックスが表示されている必要があります。
- パラメータ: (なし)
- 期待される動作:
- フリーレイヤ (
.layer_free) 内の.formクラスを持つ要素(現状は<input>のみ)をすべて取得します。 - 各要素について:
name属性の値を取得します。.val()で現在の入力値を取得します。name + " = '" + val + "'"の形式でJavaScriptの代入文文字列を生成します。kag.evalScript()で代入文を実行し、変数に値を格納します。
- 次のタグへ進みます (
nextOrder)。
- フリーレイヤ (
- サンプルコード: (省略。
[edit]のサンプル参照)
10. 演出・効果・動画関連タグ
10.1. [quake]
- グループ: 演出・効果・動画
- タイトル: 画面を揺らす
- 説明:
- 指定した回数・時間・強さでゲーム画面全体 (
.tyrano_base) を揺らします。 - jQuery UI の
shakeエフェクトを使用しています。
- 指定した回数・時間・強さでゲーム画面全体 (
- パラメータ:
count: (任意) 揺らす回数。 (デフォルト値:5)time: (必須) 1回の揺れにかかる時間 (ミリ秒)。hmax: (任意) 横方向の最大振幅 (px)。 (デフォルト値:"0")vmax: (任意) 縦方向の最大振幅 (px)。 (デフォルト値:"10")wait: (任意) 揺れの完了を待つか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
hmaxが"0"でない場合、.tyrano_baseに対して横方向 (direction: "left") のshakeエフェクトを実行します。vmaxが"0"でない場合、.tyrano_baseに対して縦方向 (direction: "up") のshakeエフェクトを実行します。- エフェクト完了後、
pm.waitが"true"ならnextOrderを呼び出します。 pm.waitが"false"の場合は、エフェクト開始と同時にnextOrderを呼び出します。
- サンプルコード:
[quake count=5 time=300 hmax=20]
10.2. [quake2]
-
グループ: 演出・効果・動画
-
タイトル: 画面を揺らす
-
説明: (V515以降?)
- 指定した時間、ゲーム画面全体 (
#root_layer_game,#root_layer_system) を揺らします。 [quake]よりも滑らかな揺れを表現できます。
- 指定した時間、ゲーム画面全体 (
-
パラメータ:
time: (任意) 揺れ全体の時間 (ミリ秒)。 (デフォルト値:"1000")hmax: (任意) 横方向の最大振幅 (px)。 (デフォルト値:"0")vmax: (任意) 縦方向の最大振幅 (px)。 (デフォルト値:"200")wait: (任意) 揺れの完了を待つか (trueorfalse)。 (デフォルト値:"true")copybase: (任意) 揺れ中に背景レイヤのコピーを表示するか (trueorfalse)。画面端のチラつき防止。 (デフォルト値:"true")skippable: (任意) スキップ中にこの揺れを無視するか (trueorfalse)。 (デフォルト値:"true")
-
期待される動作:
- 前回の
[quake2]が完了していなければ強制終了します。 - スキップ中で
skippable="true"ならnextOrderを呼んで終了します。 copybase="true"なら背景レイヤ (.base_fore) をクローンして最背面に配置します。- アニメーションスタックをプッシュします (
pushAnimStack)。 - 揺れ終了処理 (
quake2_finish) をkag.tmpに定義します。 requestAnimationFrameを使用したループ (loop) を開始します。- 経過フレーム数 (
current_frame) と目標フレーム数 (end_frame) を比較します。 easeOutQuadを使用して現在の揺れ幅 (v,h) を計算します。- 対象要素 (
j_quake) のtransform: translate()スタイルを更新します。 - ループが終了したら
quake2_finishを呼び出します。
- 経過フレーム数 (
- ロード開始時 (
load-start) とスキップ開始時 (skip-start) にquake2_finishを呼び出すイベントリスナを設定します。 wait=falseならnextOrderを呼び出します。
- 前回の
-
サンプルコード:
画面を揺らすよ。[l][s] [quake2 time="1000"] [cm]揺れたね。[p] [quake2 time="1000" wait="false"] 揺らしたまま次のタグに進むよ。[p] [quake2 time="3000" wait="false"] 揺らしたまま次のタグに進んで、揺れの完了を待つよ…[wa]終わったよ。[p]
10.3. [vibrate], [vibrate_stop]
-
グループ: 演出・効果・動画
-
タイトル: スマホ・パッドの振動 / スマホ・パッドの振動停止
-
説明:
[vibrate]はモバイル端末や接続されているゲームパッドを振動させます。timeにカンマ区切りで数値を指定することで、振動と静止を繰り返すパターンを作成できます。[vibrate_stop]は進行中の振動を停止させます。
-
パラメータ (
[vibrate]):time: (任意) 振動時間(ミリ秒)または振動パターンの配列 ("600,200,600")。 (デフォルト値:"500")power: (任意) 振動の強さ (0-100)。ゲームパッドのみ有効。 (デフォルト値:"100")count: (任意) 振動パターンを繰り返す回数。 (デフォルト値:"")
-
パラメータ (
[vibrate_stop]): (なし) -
期待される動作:
[vibrate]:timeをパースして数値または数値配列time_valを生成します。powerをパースして 0.0〜1.0 の値にします。countが指定されていれば、time_valを指定回数繰り返した新しい配列を作成します。- ゲームパッドが最後に使用されたか (
last_used_next_gamepad_index> -1) を確認します。 - ゲームパッドが使用されていれば
kag.key_mouse.gamepad.vibrate()を呼び出し、そうでなければnavigator.vibrate()を呼び出して振動を開始します。パターン指定の場合はsetTimeoutで再帰的に呼び出します。 - 次のタグへ進みます (
nextOrder)。
[vibrate_stop]:kag.key_mouse.gamepad.vibrate({ duration: 0, power: 0 })とnavigator.vibrate(0)を呼び出して振動を停止します。- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[vibrate time=1000 power=100] 1秒振動[p] [vibrate time="800,200" power="50" count="3"] パターン振動を3回繰り返し[p] [vibrate time="5000" power="50" count="3"] 途中で振動停止… [wait time="1000"] [vibrate_stop] 停止させました。[p]
10.4. [movie]
-
グループ: 演出・効果・動画
-
タイトル: 動画の再生
-
説明:
- ゲーム画面全体に動画を再生します。再生終了後、または
skip=true時にクリックされると次のタグに進みます。 - 動画ファイルは
data/videoフォルダに配置します。
- ゲーム画面全体に動画を再生します。再生終了後、または
-
パラメータ:
storage: (必須) 再生する動画ファイル名。skip: (任意) クリックによるスキップを許可するか (trueorfalse)。 (デフォルト値:"false")mute: (任意) 音声をミュートするか (trueorfalse)。trueで自動再生制限を回避しやすくなります。 (デフォルト値:"false")volume: (任意) 音量 (0-100)。省略時はConfig.tjsのdefaultMovieVolumeを参照。 (デフォルト値:"")bgmode: (任意) 【内部用】背景動画モードか。 (デフォルト値:"false")loop: (任意) 【内部用】ループ再生するか。 (デフォルト値:"false")
-
期待される動作:
- ユーザー環境に応じて動画ファイル形式を調整します (Firefox/Opera では .mp4 → .webm)。
<video>要素を生成します。src,volume,autoplay,playsinline,muted,loop属性を設定します。- CSS スタイル (全画面表示、黒背景など) を設定します。
endedイベントリスナを設定します。再生終了時にnextOrderを呼び出すようにします (bgmode=falseの場合)。skip=trueの場合、クリック/タッチイベントリスナを設定し、クリック時に動画を削除してnextOrderを呼び出すようにします (bgmode=falseの場合)。<video>要素を.tyrano_baseに追加し、.animate({opacity:1})でフェードインさせます (ただし time パラメータは存在しないため、実質的な効果はない可能性があります)。video.load()とvideo.play()を呼び出して再生を開始します。canplayイベントでdisplayスタイルを設定して再生ボタンのチラつきを防ぎます。
-
サンプルコード:
;動画を再生した回数をゲーム変数f.watch_countで数えてみる [eval exp="f.watch_count = 0"] *loop 動画を再生するよ[p] ;動画を再生したことがまだ1回もないなら、スキップできない ;動画を再生したことが1回以上あるなら、スキップできる ;という設定を一時変数tf.skipにをセット [iscript] if (f.watch_count === 0) { tf.skip = "false"; } else { tf.skip = "true"; } [endscript] ;data/video/cat.mp4を再生するよ [movie storage="cat.mp4" skip=&tf.skip] 動画を再生しおわったよ[p] ;動画を再生した回数を増やす [eval exp="f.watch_count += 1"] [jump target="loop"]
10.5. [bgmovie]
- グループ: 演出・効果・動画
- タイトル: 背景ムービーの再生
- 説明:
- ゲーム画面の背景として動画を再生します。PC環境限定です。
[stop_bgmovie]が実行されるまで再生され続けます (loop=trueの場合)。
- パラメータ:
storage: (必須) 再生する動画ファイル名。data/videoから。time: (任意) フェードイン時間 (ミリ秒)。 (デフォルト値:"300")mute: (任意) 音声をミュートするか (trueorfalse)。 (デフォルト値:"false")volume: (任意) 音量 (0-100)。 (デフォルト値:"")loop: (任意) ループ再生するか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
kag.stat.current_bgmovieにstorageとvolumeを保存します。- すでに背景動画が再生中 (
kag.tmp.video_playing == true) の場合:- 現在の動画のループを停止 (
video.loop = false) します。 kag.stat.video_stackにpmを格納します。これにより、現在の動画再生終了後に新しい動画が再生されます。nextOrderを呼び出して終了します。
- 現在の動画のループを停止 (
- 背景動画が再生中でない場合:
pmにskip="false",bgmode="true"を追加します。[movie]タグを内部的に呼び出して動画再生を開始します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
[bgmovie storage=cat.mp4]
10.6. [wait_bgmovie]
- グループ: 演出・効果・動画
- タイトル: 背景ムービーの再生完了を待つ
- 説明:
- 現在再生中の背景ムービー (
[bgmovie]で再生したもの) の再生完了を待ちます。 - 対象の動画がループ再生 (
loop=true) に設定されていた場合、このタグ実行時にループが解除され、現在の再生が完了した時点で次に進みます。
- 現在再生中の背景ムービー (
- パラメータ: (なし)
- 期待される動作:
- 背景動画が再生中 (
kag.tmp.video_playing == true) の場合:kag.stat.is_wait_bgmovieをtrueに設定します。- 背景動画要素 (
#bgmovie) のloop属性をfalseに設定します。動画のendedイベントハンドラ内でis_wait_bgmovieがチェックされ、trueならnextOrderが呼ばれます。
- 背景動画が再生中でない場合、即座に
nextOrderを呼び出します。
- 背景動画が再生中 (
10.7. [stop_bgmovie]
-
グループ: 演出・効果・動画
-
タイトル: 背景ムービーの停止
-
説明:
[bgmovie]で再生している背景動画を停止し、画面から削除します。
-
パラメータ:
time: (任意) フェードアウト時間 (ミリ秒)。 (デフォルト値:"300")wait: (任意) フェードアウト完了を待つか (trueorfalse)。 (デフォルト値:"true")
-
期待される動作:
kag.tmp.video_playingをfalseに設定します。kag.stat.current_bgmovieをリセットします。.tyrano_base内のすべての<video>要素に対して.animate({opacity:0})を実行します。- アニメーション完了後、要素を削除 (
remove()) し、wait=trueならnextOrderを呼び出します。 - 対象の
<video>要素が存在しない場合は即座にnextOrderを呼び出します。 wait=falseの場合は、アニメーション開始と同時にnextOrderを呼び出します。
-
サンプルコード:
[bgmovie storage=cat.mp4] 動画を停止します[p] [stop_bgmovie] 動画を停止しました[p]
10.8. [layermode]
- グループ: 演出・効果・動画
- タイトル: レイヤーモード
- 説明:
- ゲーム画面全体に画像または単色を重ね、指定したブレンドモードで合成します。
- 乗算、スクリーン、オーバーレイなど、様々な合成効果を表現できます。
- IEなど一部ブラウザ非対応。
- パラメータ:
name: (任意) この合成レイヤに名前を付けます。[free_layermode]で個別に削除する際に使用。 (デフォルト値:"")graphic: (任意) 合成する画像ファイル。data/imageから。folderで変更可。 (デフォルト値:"")color: (任意) 合成する色 (0xRRGGBB形式)。graphic指定時は無視。 (デフォルト値:"")mode: (任意) ブレンドモード (multiply,screen,overlayなど)。 (デフォルト値:"multiply")folder: (任意)graphicの読み込みフォルダ。 (デフォルト値:"")opacity: (任意) レイヤの不透明度 (0-255)。 (デフォルト値:"")time: (任意) フェードイン時間 (ミリ秒)。 (デフォルト値:"500")wait: (任意) フェードイン完了を待つか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
- クリック待ちグリフを隠します。
<div class='layer_blend_mode blendlayer'>要素 (blend_layer) を生成します。nameがあればクラス (layer_blend_+name) を追加します。color,opacity,graphic(背景画像),mode(mix-blend-mode) スタイルを設定します。blend_layerを#tyrano_baseに追加します。graphicが指定されている場合は画像をプリロードします。- プリロード完了後 (または
graphicがない場合)、blend_layer.fadeIn(time, callback)を実行します。 - フェードイン完了後、
wait=trueならnextOrderを呼び出します。 wait=falseの場合は、プリロード完了後 (または即時) にnextOrderを呼び出します。
- サンプルコード:
tyranoscript [layermode graphic=fg0.png time=1500 mode=overlay]
10.9. [layermode_movie]
- グループ: 演出・効果・動画
- タイトル: レイヤーモード(動画)
- 説明:
- ゲーム画面全体に動画を重ね、指定したブレンドモードで合成します。
- IEなど一部ブラウザ非対応。
- パラメータ:
name: (任意) 合成レイヤの名前。 (デフォルト値:"")video: (必須) 合成する動画ファイル。data/videoから。volume: (任意) 動画の音量 (0-100)。 (デフォルト値:"")mute: (任意) ミュートするか (trueorfalse)。 (デフォルト値:"false")loop: (任意) ループ再生するか (trueorfalse)。 (デフォルト値:"true")speed: (任意) 再生速度 (例:1.0,0.5,2.0)。 (デフォルト値:"")mode: (任意) ブレンドモード。 (デフォルト値:"multiply")opacity: (任意) レイヤの不透明度 (0-255)。 (デフォルト値:"")time: (任意) フェードイン時間 (ミリ秒)。 (デフォルト値:"500")left,top,width,height: (任意) レイヤの位置とサイズ (px)。 (デフォルト値:"")fit: (任意) 画面全体に引き伸ばすか (trueorfalse)。height指定がない場合に影響。 (デフォルト値:"true")wait: (任意) 再生完了を待つか (trueorfalse)。loop=trueの場合は無視され、完了を待ちません。 (デフォルト値:"false")
- 期待される動作:
- クリック待ちグリフを隠します。
<video class='layer_blend_mode blendlayer blendvideo'>要素 (blend_layer) を生成します。nameがあればdata-video-name属性とクラス (layer_blend_+name) を設定します。src,volume,defaultPlaybackRate,autoplay,autobuffer,playsinline,muted,loop属性を設定します。- CSS スタイル (
backgroundColor,position,top,left,width,height,minHeight,minWidth,backgroundSize,opacity,mix-blend-mode) を設定します。fitに応じてheightのデフォルト値を調整します。 endedイベントリスナを設定します。loop=falseなら動画要素を削除します。wait=trueならnextOrderを呼び出します。
pmをJSON文字列化してdata-video-pm属性に格納します (ロード復元用)。- 要素を非表示 (
hide()) にして#tyrano_baseに追加します。 video.load()とvideo.play()を呼び出して再生を開始します。blend_layer.fadeIn(time, callback)でフェードインさせます。- フェードイン完了後、
wait=trueかつloop=trueの場合にnextOrderを呼び出します。 wait=falseの場合は、フェードイン開始と同時にnextOrderを呼び出します。
- サンプルコード:
tyranoscript [layermode_movie video=test.webm time=1500 wait=true]
10.10. [free_layermode]
- グループ: 演出・効果・動画
- タイトル: 合成レイヤの消去
- 説明:
[layermode]または[layermode_movie]で作成した合成レイヤを削除します。
- パラメータ:
name: (任意) 削除するレイヤのname。省略時はすべての合成レイヤ (.blendlayer)。 (デフォルト値:"")time: (任意) フェードアウト時間 (ミリ秒)。 (デフォルト値:"500")wait: (任意) フェードアウト完了を待つか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
- クリック待ちグリフを隠します。
- 対象となる合成レイヤ要素 (
blend_layer) を取得します (name指定があれば.layer_blend_+name、なければ.blendlayer)。 - 対象要素が存在しない場合は
nextOrderを呼び出して終了します。 - 各対象要素に対して
.fadeOut(time, callback)を実行します。 - フェードアウト完了後、要素を削除 (
remove()) し、すべての対象要素のアニメーションが完了したら、wait=trueならnextOrderを呼び出します。 wait=falseの場合は、フェードアウト開始と同時にnextOrderを呼び出します。
- サンプルコード:
tyranoscript [free_layermode name="test"]
10.11. [mask]
-
グループ: 演出・効果・動画
-
タイトル: スクリーンマスク表示
-
説明:
- 画面全体を特定の色や画像で覆い隠すマスクを表示します。表示時にアニメーション効果を適用できます。
- 主に、場面転換などで裏で画面構成を変更する間の目隠しとして使用します。
-
パラメータ:
time: (任意) マスク表示にかかる時間 (ミリ秒)。 (デフォルト値:1000)effect: (任意) 表示時のアニメーション効果 (fadeIn,fadeInDownBigなど)。 (デフォルト値:"fadeIn")color: (任意) マスクの色 (0xRRGGBB形式)。"none"で背景色なし。 (デフォルト値:"0x000000")graphic: (任意) マスクとして表示する画像ファイル。data/imageから。 (デフォルト値:"")folder: (任意)graphicの読み込みフォルダ。 (デフォルト値:"")
-
期待される動作:
weaklyStop()で一時停止します。<div class='layer layer_mask'>要素 (j_div) を生成します。animation-durationをpm.timeに設定します。width,heightをゲーム画面サイズに設定します。colorが"none"でなければbackground-colorを設定します。graphicが指定されていればbackground-imageを設定します。graphicが指定されていない場合、マスクの外に線が見えるのを防ぐためtransform: scale(1.02)を設定します。j_divを.tyrano_baseに追加します。j_divにanimatedクラスとpm.effectで指定された効果クラスを追加します。animationendイベントリスナを設定します。- アニメーション完了後:
graphicが指定されていない場合、ゲーム画面本体 (#root_layer_game) を非表示 (opacity: 0) にします。nextOrderを呼び出します。
- アニメーション完了後:
-
サンプルコード:
;暗転開始 [mask effect="fadeInDownBig" time=2000] ;裏で画面操作 [bg storage="umi.jpg" time=500] ;暗転解除 [mask_off]
10.12. [mask_off]
- グループ: 演出・効果・動画
- タイトル: スクリーンマスク消去
- 説明:
[mask]タグで表示したスクリーンマスクを、アニメーション効果とともに消去します。
- パラメータ:
time: (任意) マスク消去にかかる時間 (ミリ秒)。 (デフォルト値:1000)effect: (任意) 消去時のアニメーション効果 (fadeOut,fadeOutDownBigなど)。 (デフォルト値:"fadeOut")
- 期待される動作:
- マスク要素 (
.layer_mask) (j_div) を取得します。存在しない場合はcancelWeakStop()とnextOrder()を呼んで終了します。 - ゲーム画面本体 (
#root_layer_game) を表示状態 (opacity: 1) に戻します。 j_divから既存のアニメーションクラスを削除し、animation-durationをpm.timeに設定します。j_divにanimatedクラスとpm.effectで指定された効果クラスを追加します。animationendイベントリスナを設定します。- アニメーション完了後:
j_divを削除します (remove())。cancelWeakStop()を呼び出します。nextOrderを呼び出します。
- アニメーション完了後:
- マスク要素 (
- サンプルコード: (省略。
[mask]のサンプル参照)
11. アニメーション関連タグ
11.1. [anim]
-
グループ: アニメーション
-
タイトル: アニメーション
-
説明:
- 画面上の要素(画像、テキスト、レイヤなど)の位置、サイズ、不透明度、色などをアニメーションさせます。
nameまたはlayerで対象を指定します。left,topには相対指定 (+=,=) が可能です。- アニメーションの完了は待ちません。待つ場合は
[wa]タグを使用します。
-
パラメータ:
name: (任意) アニメーション対象要素のname。layer: (任意) アニメーション対象レイヤ。name指定時は無視。left,top,width,height,opacity,color: (任意) アニメーション後の目標値。opacityは 0-255。time: (任意) アニメーション時間 (ミリ秒)。 (デフォルト値:"2000")effect: (任意) イージング効果。jQuery UI Easing または jQuery Easing Plugin で定義されている名前。 (デフォルト値:"")
-
期待される動作:
left,top,width,height,opacity,colorパラメータからアニメーションさせるスタイル (anim_style) を構築します。nameまたはlayerパラメータに基づいてアニメーション対象のjQueryオブジェクト (j_targets) を決定します。- 対象が存在する場合、各対象要素 (
j_target) に対して:- アニメーションスタックをプッシュします (
kag.pushAnimStack)。 .stop(true, true).animate(anim_style, time, effect, callback)を実行します。- アニメーション中に要素が削除された場合の対策として、
remove.animイベントを設定し、その中でpopAnimStackを呼ぶようにします。 tyrano-animクラスを追加します (アニメーション中を示すマーカー)。- アニメーション完了時のコールバックで、
remove.animイベントを解除し、tyrano-animクラスを削除し、アニメーションスタックをポップします (kag.popAnimStack)。
- アニメーションスタックをプッシュします (
- 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
[ptext layer=1 page=fore text="文字列" size=30 x=0 y=0 color=red vertical=true] [image layer=0 left=100 top=100 storage = yuko1.png page=fore visible=true name=yuko,chara ] [image layer=1 left=300 top=100 storage = haruko1.png page=fore visible=true name=haruko ] ;name属性を指定してアニメーション [anim name=haruko left="+=100" time=10000 effect=easeInCirc opacity=0 ] ;レイヤを指定してアニメーション [anim layer=1 left="+=100" effect=easeInCirc opacity=0 ] ;すべてのアニメーション完了を待ちます [wa] アニメーション終了
11.2. [wa]
- グループ: アニメーション
- タイトル: アニメーション終了待ち
- 説明:
- 現在実行中のすべてのアニメーション (
[anim]や[kanim]など、内部でpushAnimStack/popAnimStackを使用するもの) が完了するまで待機します。
- 現在実行中のすべてのアニメーション (
- パラメータ: (なし)
- 期待される動作:
kag.tmp.num_anim(実行中のアニメーション数) が0より大きい場合:kag.stat.is_wait_anim = trueを設定します。weaklyStop()を呼び出して一時停止します。アニメーション完了時にpopAnimStackが呼ばれ、num_animが0になった時点でnextOrderが実行されます。
kag.tmp.num_animが0以下の場合、即座にnextOrderを呼び出します。
- サンプルコード: (省略。
[anim]のサンプル参照)
11.3. [stopanim]
- グループ: アニメーション
- タイトル: アニメーション強制停止
- 説明:
- 指定された
nameを持つ要素で実行中のアニメーション ([anim]によるもの) を強制的に停止させます。
- 指定された
- パラメータ:
name: (必須) アニメーションを停止する要素のname。
- 期待される動作:
$("." + pm.name).stop()を呼び出して、対象要素のjQueryアニメーションを停止します。kag.popAnimStack()を呼び出してアニメーションスタックを1つ減らします (停止したアニメーションに対応)。- 次のタグへ進みます (
nextOrder)。
11.4. [keyframe], [endkeyframe]
- グループ: アニメーション
- タイトル: キーフレームアニメーション定義の開始 / キーフレームアニメーション定義の終了
- 説明:
[frame]タグを使って、CSSの@keyframesに相当するカスタムアニメーションを定義します。name属性でアニメーションに名前を付け、[kanim]タグで呼び出して使用します。
- パラメータ (
[keyframe]):name: (必須) 定義するキーフレームアニメーションの名前。
- パラメータ (
[endkeyframe]): (なし) - 期待される動作:
[keyframe]:kag.stat.current_keyframeにpm.nameを設定します。これにより、後続の[frame]タグがどのキーフレーム定義に属するかが決まります。- 次のタグへ進みます (
nextOrder)。
[endkeyframe]:kag.stat.current_keyframeを空文字列にリセットします。- 次のタグへ進みます (
nextOrder)。
- サンプルコード: (省略。
[frame]のサンプル参照)
11.5. [frame]
-
グループ: アニメーション
-
タイトル: キーフレームアニメーション定義
-
説明:
[keyframe]と[endkeyframe]の間で、アニメーションの中間状態(キーフレーム)を定義します。pパラメータでアニメーション全体のどの時点での状態かをパーセンテージで指定します。x,y,rotate,scale,opacityなど、様々なCSSプロパティの値を指定できます。
-
パラメータ:
p: (必須) キーフレームの位置 (0%-100%)。x,y,z: (任意) 移動量 (px)。始まりで絶対位置指定可。rotate,rotateX,rotateY,rotateZ: (任意) 回転量 (deg,radなど)。scale,scaleX,scaleY,scaleZ: (任意) 拡大・縮小率 (数値)。skew,skewX,skewY: (任意) 傾斜 (degなど)。perspective: (任意) 遠近効果 (px など)。opacity: (任意) 不透明度 (0-255)。- (任意) その他: CSSプロパティを直接指定可能。
-
期待される動作:
kag.stat.current_keyframeで指定されているキーフレーム定義を取得または新規作成します (kag.stat.map_keyframe[keyframe_name])。pmからpを削除し、残りのパラメータをtrans(transform関連) とstyles(その他CSS) に振り分けます (master_transで判定)。- キーフレーム定義内の
frames[percentage]に{trans: map_trans, styles: map_style}を格納します。 - 次のタグへ進みます (
nextOrder)。
-
サンプルコード:
;----keyframeの定義 [keyframe name="fuwafuwa"] [frame p=40% x="100" ] [frame p=100% y="-200" opacity=0 ] [endkeyframe]
11.6. [kanim]
- グループ: アニメーション
- タイトル: キーフレームアニメーションの実行
- 説明:
[keyframe]タグで定義したキーフレームアニメーションを指定した要素に適用します。- アニメーションの継続時間、繰り返し回数、遅延などを指定できます。
- パラメータ:
keyframe: (必須) 実行するキーフレームアニメーションのname。name: (任意) アニメーション対象要素のname。layer: (任意) アニメーション対象レイヤ。name指定時は無視。time: (任意) アニメーション時間 (ミリ秒)。 (デフォルト値:"")easing: (任意) イージング効果。 (デフォルト値:"")count: (任意) 繰り返し回数。infiniteで無限ループ。 (デフォルト値:"")delay: (任意) 開始遅延時間 (ミリ秒)。 (デフォルト値:"")direction: (任意) 再生方向 (normal,reverse,alternate,alternate-reverse)。 (デフォルト値:"")mode: (任意) 終了後の状態 (none,forwards,backwards,both)。 (デフォルト値:"")
- 期待される動作:
nameまたはlayerパラメータに基づいてアニメーション対象のjQueryオブジェクト (j_targets) を決定します。対象が見つからない場合はnextOrderを呼び出して終了します。keyframeパラメータで指定されたキーフレーム定義 (anim) をkag.stat.map_keyframeから取得します。存在しない場合はエラーを出してnextOrderを呼び出して終了します。- アニメーションオプション (
anim.config) をpmから構築します (duration,delayはミリ秒に変換)。 - 無限ループ (
count="infinite") でない場合は、アニメーションスタック (should_push_anim_stack) を有効にします。 - 各対象要素 (
j_target) について:- アニメーション定義 (
this_anim) をディープコピーします。 - 要素が左右反転 (
reflectクラスを持つ) している場合、キーフレーム内のscaleXの値を反転させます。 - アニメーション完了時のコールバック (
this_anim.complete) を設定し、その中でアニメーションスタックをポップ (popAnimStack) するようにします (スタックが有効な場合)。 - アニメーションスタックが有効な場合はプッシュ (
pushAnimStack) します。 - 無限ループアニメーションの場合、ロード時に復元するための情報を
data-restore属性に設定します。 - 要素削除時にアニメーションを強制完了させるための
removeイベントリスナを設定します。 j_target.a3d(this_anim)を呼び出してアニメーションを開始します。
- アニメーション定義 (
- 次のタグへ進みます (
nextOrder)。
- サンプルコード: (省略。
[keyframe]のサンプル参照)
11.7. [stop_kanim]
- グループ: アニメーション
- タイトル: キーフレームアニメーションの停止
- 説明:
[kanim]タグで実行中のキーフレームアニメーションを停止します。
- パラメータ:
name: (任意) アニメーションを停止する要素のname。layer: (任意) アニメーションを停止するレイヤ。name指定時は無視。
- 期待される動作:
nameまたはlayerパラメータに基づいて対象のjQueryオブジェクト (j_targets) を決定します。対象が見つからない場合はnextOrderを呼び出して終了します。- 各対象要素 (
j_target) について:- アニメーションスタックが存在すればポップ (
popAnimStack) します。 - CSSのアニメーション関連プロパティ (
animation-*,transform) を空文字列に設定してアニメーションを解除します。 data-restore属性からkanimの情報を削除します。
- アニメーションスタックが存在すればポップ (
- 次のタグへ進みます (
nextOrder)。
11.8. [xanim]
-
グループ: アニメーション
-
タイトル: 汎用アニメーションの実行
-
説明: (V515以降)
[anim]と[kanim]の機能を統合した汎用的なアニメーションタグです。- キーフレームアニメーション (
keyframe指定) と、CSSプロパティ直接指定のアニメーションを同時に、または個別に行えます。 - SVGパスに沿ったアニメーション (
svg指定) も可能です。
-
パラメータ:
name,layer: (任意) アニメーション対象。keyframe: (任意) 適用するキーフレームアニメーション名。time,easing,count,delay,direction,mode: (任意) アニメーション共通オプション。svg: (任意) アニメーションパスとして使用するSVGファイル (data/imageから)。svg_x,svg_y,svg_rotate: (任意) SVGパスをどの座標軸/回転に適用するか (trueorfalse)。wait: (任意) アニメーション完了を待つか (trueorfalse)。 (デフォルト値:"false")next: (任意)falseを指定するとnextOrderを呼び出しません。 (デフォルト値:"true")- (任意) その他: CSSプロパティを直接指定可能 (
x,y,opacityなど)。
-
期待される動作:
svgパラメータが指定されている場合:- SVGファイルをロードまたはキャッシュから取得します (
j_svg)。 _start(pm, j_svg)を呼び出します。
- SVGファイルをロードまたはキャッシュから取得します (
svgパラメータが指定されていない場合、_start(pm)を呼び出します。_start内部:- アニメーション対象 (
j_targets) を取得します。なければnext()を呼んで終了。 - アニメーションオプション (
duration,delay,direction,loop,easingなど) を設定します。 keyframeが指定されていれば、キーフレーム定義 (keyframes) を取得・構築します。pm内のCSS直接指定パラメータ (css_in_pm) を抽出します。- 各対象要素 (
j_this) について:- 無限ループでない場合、アニメーションスタックをプッシュ (
pushAnimStack) します。 anime.jsのオプション (anime_opt) を構築します (targets,duration,easing,keyframes, CSSプロパティなど)。- SVGパスアニメーションの場合、
translateX,translateY,rotateZにanime.path()を設定します。 - アニメーション完了時のコールバック (
complete) を設定し、その中でスタックをポップ (popAnimStack) し、必要ならnext()を呼び出すようにします。 - 無限ループの場合、ロード復元用の情報を
data-restore属性に設定します。 - 要素削除時にアニメーションを強制完了させる
removeイベントリスナを設定します。 anime(anime_opt)を呼び出してアニメーションを開始します。
- 無限ループでない場合、アニメーションスタックをプッシュ (
wait=falseならnext()を呼び出します。
- アニメーション対象 (
-
サンプルコード:
;キーフレームアニメーションを無限ループで適用 [keyframe name="yoko"] [frame p="0%" x="0"] [frame p="100%" x="100"] [endkeyframe] [xanim name="akane" keyframe="yoko" count="infinite" time="1000" direction="alternate" easing="linear"] ;2秒かけて500px右に移動 デフォルトではアニメーションの完了は待たずに次に進むよ [xanim name="akane" x="500" time="2000"]
11.9. [stop_xanim]
- グループ: アニメーション
- タイトル: [xanim]の停止
- 説明: (V515以降)
[xanim]タグで実行中のアニメーションを停止します。
- パラメータ:
name: (任意) アニメーションを停止する要素のname。layer: (任意) アニメーションを停止するレイヤ。name指定時は無視。complete: (任意)trueを指定すると、アニメーションの最終状態にジャンプしてから停止します。 (デフォルト値:"false")
- 期待される動作:
nameまたはlayerパラメータに基づいて対象のjQueryオブジェクト (j_targets) を決定します。対象が見つからない場合はnextOrderを呼び出して終了します。- 各対象要素 (
j_this) について:- その要素に関連付けられた
anime.jsのインスタンス (anime_state) をthis.anime_state_set(内部プロパティ) から取得します。 anime_stateが存在し、完了していなければ:pm.complete="true"ならanime_state.seek(anime_state.duration)で最終状態に移動します。anime_state.pause()で一時停止し、anime_state.complete()でアニメーションを完了状態にします (これによりcompleteコールバックが呼ばれ、スタックがポップされるはずです)。
- その要素に関連付けられた
- 次のタグへ進みます (
nextOrder)。
12. AR関連タグ
12.1. [bgcamera]
-
グループ: AR関連
-
タイトル: ストリームカメラ背景
-
説明:
- デバイスのカメラを起動し、その映像をゲームの背景として表示します。
https://でアクセス可能なサーバーが必要です。- QRコード読み取り機能も持ち、特定の場所にジャンプさせることができます (
[s]タグで停止中のみ有効)。
-
パラメータ:
wait: (任意) カメラ表示の完了を待つか (trueorfalse)。 (デフォルト値:"true")time: (任意) カメラ映像表示のフェードイン時間 (ミリ秒)。 (デフォルト値:1000)fit: (任意) 比率を保持するか (true=崩す,false=保持)。 (デフォルト値:"true")left,top,width,height: (任意) カメラ表示領域の位置とサイズ (px)。 (デフォルト値:"")mode: (任意) 使用するカメラ (frontorback)。省略時はデフォルトカメラ。 (デフォルト値:"")qrcode: (任意) QRコードの反応モード (jump,web,define,all,off)。 (デフォルト値:"off")debug: (任意) QRコード読み取り時にURLをアラート表示するか (trueorfalse)。 (デフォルト値:"false")audio: (任意) 音声入力も反映させるか (trueorfalse)。 (デフォルト値:"false")name: (任意) 生成される<video>要素にnameを設定。
-
期待される動作:
- QRコードモード (
kag.stat.qr.mode) をpm.qrcodeで設定します。 <video id="bgcamera">要素 (video) を生成し、スタイル (backgroundColor,position,top,left,width,height,playsinline,mutedなど) を設定します。fitパラメータに応じてサイズを調整します。nameがあれば設定します。#tyrano_baseに<video>要素を追加します。navigator.mediaDevices.getUserMedia(opt)を呼び出してカメラストリームを取得します。optにはvideo(カメラ向き指定を含む),audioの設定が含まれます。- ストリーム取得成功時 (
media.then(...)):video.srcObjectにストリームを設定します。
video要素のcanplayイベントリスナを設定します。canplay発火時:<video>要素をフェードインさせます (j_video.fadeIn)。- 完了後、
kag.tmp.camera_stream = trueを設定します。 wait=trueならnextOrderを呼び出します。checkPicture(video, pm)を呼び出してQRコードのスキャンを開始します。
wait=falseなら、ストリーム取得処理と並行してnextOrderを呼び出します。checkPicture内部 (再帰呼び出し):camera_streamがfalse(停止命令) なら終了します。- QRコードモードが
offまたは[s]で停止中でない場合は、1秒後に再帰呼び出しします。 <canvas>を使用して現在のビデオフレームを縮小コピーします。jsQRライブラリでQRコードを解析します。- QRコードが見つかった場合 (
code):debug=trueならURLをアラート表示します。- URLの種類 (
http,tyrano:,[jump) とqrcodeモードに応じて処理を分岐します。webかつall/web/define:[qr_define]があればジャンプ、なければlocation.hrefでページ遷移 (defineモードを除く)。tyrano:かつall/jump: URLからstorage,targetを抽出し、QRモードをoffにして[jump]を実行。[jumpかつall/jump: タグ文字列からpmを生成し、QRモードをoffにして[jump]を実行。
- 300ミリ秒後に再帰呼び出しします。
- QRコードモード (
-
サンプルコード:
;背景にカメラの入力を表示 [bgcamera time=2000] ;背景を通常に戻す [stop_bgcamera] ;座標を指定してカメラの入力を表示 [bgcamera width=300 height=200 left=100 top=100] ;QRコードに反応させる場合。背面カメラを指定 [bgcamera mode="back" fit=true qrcode="all"]
12.2. [qr_config]
- グループ: AR関連
- タイトル: QRコードの動作設定
- 説明:
[bgcamera]で有効になっているQRコード読み取り機能の動作モードを変更します。
- パラメータ:
qrcode: (任意) QRコードを読み込んだときの動作を設定します。指定できる値は以下の通りです。 (デフォルト値:"")jump: ゲーム内移動 (tyrano:スキームまたは[jump ...]形式) のQRコードのみ反応します。web: 他サイトへのリンク (http/https) のQRコードのみ反応します。define:[qr_define]タグで定義されたQRコードのみ反応します。all: すべての形式のQRコードに反応します。off: QRコードに反応しなくなります。
- 期待される動作:
pm.qrcodeが指定されている場合、kag.stat.qr.modeをその値で更新します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
;QRコードでティラノのジャンプのみ有効にする
[qr_config qrcode="jump"]
12.3. [stop_bgcamera]
- グループ: AR関連
- タイトル: カメラストリームの停止
- 説明:
[bgcamera]で表示されているカメラ映像を停止し、画面から削除します。
- パラメータ:
time: (任意) フェードアウト時間 (ミリ秒)。 (デフォルト値:"1000")wait: (任意) フェードアウトの完了を待つか (trueorfalse)。 (デフォルト値:"true")
- 期待される動作:
kag.tmp.camera_streamをfalseに設定します (QRコード読み取りループを停止させるため)。.tyrano_base内の#bgcamera要素 (<video>) を取得します (j_video)。- 要素が存在しない場合は
nextOrderを呼び出して終了します。 j_video.fadeOut(pm.time, callback)を実行します。- フェードアウト完了後:
- ビデオストリームのビデオトラック (
getVideoTracks()) とオーディオトラック (getAudioTracks()) を停止 (track.stop()) します。 - ビデオ要素をDOMから削除 (
remove()) します。 pm.waitが"true"ならnextOrderを呼び出します。
- ビデオストリームのビデオトラック (
pm.waitが"false"の場合は、フェードアウト開始と同時にnextOrderを呼び出します。kag.stat.current_bgcameraを空文字列にリセットします。
- サンプルコード:
tyranoscript [stop_bgcamera time=1000]
12.4. [qr_define]
- グループ: AR関連
- タイトル: QRコードの置き換え
- 説明:
- 特定のURLが埋め込まれたQRコードを読み取った際に、指定したシナリオ・ラベルにジャンプするように動作を上書き(定義)します。
[bgcamera]または[qr_config]でqrcodeモードがdefineまたはallに設定されている場合に有効です。
- パラメータ:
url: (必須) 反応させたいQRコードのURL。storage: (任意) ジャンプ先のシナリオファイル名。clear="true"でない場合は必須に近い。 (デフォルト値:"")target: (任意) ジャンプ先のラベル名。 (デフォルト値:"")clear: (任意)trueを指定すると、指定したurlに対する定義を削除します。 (デフォルト値:"false")
- 期待される動作:
pm.clearが"true"の場合、kag.stat.qr.define[pm.url]を削除 (delete) します。pm.clearが"false"の場合、kag.stat.qr.define[pm.url]にパラメータオブジェクト (pm) 全体を格納します。- 次のタグへ進みます (
nextOrder)。
- サンプルコード:
tyranoscript [qr_define url="https://tyrano.jp" storage="scene1.ks" target="test" ]
13. カメラ操作関連タグ ([camera], [reset_camera], [wait_camera])
13.1. [camera]
-
グループ: カメラ操作
-
タイトル: カメラを移動する
-
説明:
- ゲーム画面全体または指定したレイヤに対して、ズーム、パン(移動)、回転といったカメラワーク演出を適用します。
Config.tjsのuseCameraをtrueにする必要があります (V5より前のバージョンでは必須でしたが、以降は不要かもしれません。ただし有効化すると中央揃えが無効になる点は同様)。- 座標系の中心は画面中央 (
x=0, y=0) です。
-
パラメータ:
time: (任意) アニメーション時間 (ミリ秒)。 (デフォルト値:1000)x,y: (任意) 移動先のXY座標 (px)。中心が0。 (デフォルト値:"")zoom: (任意) 拡大率 (数値)。2で2倍。 (デフォルト値:"")rotate: (任意) 回転角度 (度)。 (デフォルト値:"")from_x,from_y,from_zoom,from_rotate: (任意) アニメーション開始時の状態を指定できます。 (デフォルト値:"")wait: (任意) アニメーション完了を待つか (trueorfalse)。 (デフォルト値:"true")layer: (任意) 効果を適用するレイヤ名 (base,0以上の整数、またはlayer_camera)。layer_camera(デフォルト) は全レイヤ対象。ease_type: (任意) イージング効果 (linear,ease,ease-in,ease-out,ease-in-out)。 (デフォルト値:"ease")
-
期待される動作:
pm.timeが 10 未満なら 10 に補正します。- 対象レイヤ (
pm.layer) の現在のカメラ状態 (kag.stat.current_camera[pm.layer]) を取得または初期化します。 - アニメーション終了後のカメラ状態 (
to_camera) を、現在の状態をベースにpm.x,pm.y,pm.zoom,pm.rotateで更新して決定します。X座標は反転してpxを付け、回転にはdegを付けます。 from_*パラメータが指定されていれば、現在のカメラ状態を開始時の状態として設定します。kag.stat.is_move_camera = trueを設定します。jquery.a3d.jsライブラリを使用してアニメーション定義 (a3d_define) を作成します。frames: 開始状態 (0%) と終了状態 (100%) のtrans(transform) プロパティを設定します。config:duration,easingを設定します。complete: アニメーション完了時のコールバック。wait=trueの場合、初回のみnextOrderを呼び出します。wait=falseで、かつ[wait_camera]で待機中 (kag.stat.is_wait_camera == true) なら、フラグを解除してnextOrderを呼び出します。kag.stat.is_move_camera = falseを設定します。
- 現在のカメラ状態 (
kag.stat.current_camera[pm.layer]) をto_cameraで更新します。 wait=falseならnextOrderを呼び出します。- 対象要素 (
.layer_cameraまたは.${pm.layer}_fore) に.a3d(a3d_define)を適用してアニメーションを開始します。 kag.stat.current_camera_layerを更新します。
-
サンプルコード:
[camera zoom=2 x=180 y=100 time=1000] [camera x=-180 y=100 time=2000] [camera zoom=2 from_zoom=3 x=180 y=100 time=1000] ;カメラの位置を元に戻す [reset_camera]
13.2. [reset_camera]
- グループ: カメラ操作
- タイトル: カメラをリセットする
- 説明:
[camera]タグで変更したカメラの位置、ズーム、回転を初期状態(移動なし、ズーム1倍、回転0度)に戻します。- カメラ演出後は、予期せぬ不具合を防ぐためにこのタグでリセットすることが推奨されます。
- パラメータ:
time: (任意) アニメーション時間 (ミリ秒)。 (デフォルト値:1000)wait: (任意) アニメーション完了を待つか (trueorfalse)。 (デフォルト値:"true")layer: (任意) リセット対象のレイヤ名。省略時は全レイヤ対象 (layer_camera含む)。 (デフォルト値:"layer_camera")ease_type: (任意) イージング効果。 (デフォルト値:"ease")
- 期待される動作:
pm.timeが 10 未満なら 10 に補正します。- アニメーション終了後のカメラ状態 (
to_camera) を初期値 (x: "0px",y: "0px",scale: "1",rotate: "0deg") に設定します。 kag.stat.is_move_camera = trueを設定します。jquery.a3d.jsライブラリを使用してアニメーション定義 (a3d_define) を作成します。frames: 現在の状態 (kag.stat.current_camera[pm.layer]) から初期状態 (to_camera) へ変化させます。config:duration,easingを設定します。complete: アニメーション完了時のコールバック。- 対象要素からアニメーション関連のCSSプロパティと
transformスタイルを削除します。 wait=trueの場合、初回のみnextOrderを呼び出します。wait=falseで、かつ[wait_camera]で待機中なら、フラグを解除してnextOrderを呼び出します。kag.stat.is_move_camera = falseを設定します。
- 対象要素からアニメーション関連のCSSプロパティと
pm.layerが"layer_camera"の場合、kag.stat.current_camera全体をリセット ({}) します。そうでなければ、指定レイヤのカメラ情報 (kag.stat.current_camera[pm.layer]) を削除 (delete) します。wait=falseならnextOrderを呼び出します。- 対象要素に
.a3d(a3d_define)を適用してアニメーションを開始します。 kag.stat.current_camera_layerを空文字列にリセットします。
- サンプルコード: (省略。
[camera]のサンプル参照)
13.3. [wait_camera]
- グループ: カメラ操作
- タイトル: カメラの演出を待つ
- 説明:
- 現在実行中のカメラアニメーション (
[camera]または[reset_camera]でwait=falseを指定したもの) が完了するまで待機します。
- 現在実行中のカメラアニメーション (
- パラメータ: (なし)
- 期待される動作:
kag.stat.is_move_cameraがtrue(カメラアニメーション実行中) の場合:kag.stat.is_wait_camera = trueを設定します。これにより、アニメーション完了時のコールバックでnextOrderが呼ばれるようになります。
kag.stat.is_move_cameraがfalse(カメラアニメーション中でない) の場合、即座にnextOrderを呼び出します。
- サンプルコード:
[camera zoom=2 x=180 y=100 time=10000 wait=false]
カメラ演出中[p]
ここでもカメラ演出中[p]
カメラの演出を待ちます
[wait_camera]
カメラの演出が終わったので進行[p]
14. VChat関連タグ
14.1. [vchat_in]
- グループ: (内部的/VChat)
- タイトル: (VChat用) バルーンの画面外配置
- 説明: (一般的なタグとしては利用不可)
- VChat (Visual Chat) 機能で使用される内部的なタグです。
- 新しい発言のための空のチャットバルーンを画面外の見えない位置に準備します。
- パラメータ: (なし。ただし内部的に
id,nameを持つ可能性がある) - 期待される動作:
weaklyStop()で一時停止します。- 現在のメッセージレイヤ (
current_layer) を取得し、非表示 (display: none) にし、画面外 (left: -100000) へ移動させます。 - VChatのベース要素 (
#vchat_base) を取得します。 - 現在アクティブなバルーン (
.current_vchat) からcurrent_vchatクラスを削除し、talked_vchatクラスを追加します。 - 新しいバルーンのHTML文字列を生成します (
<div class="vchat current_vchat">...</div>)。 - 生成したHTMLからjQueryオブジェクト (
j_vchat) を作成し、初期状態では非表示 (hide()) にします。 - バルーン内のテキスト要素 (
j_vchat_text) を取得し、デフォルトのフォントスタイルを設定します。 - キャラクター名要素 (
vchat_chara_name) のスタイルを設定します (現在はコメントアウトされています)。 - 新しいバルーン (
j_vchat) をVChatベース要素の先頭に追加 (prepend()) します。 - VChatベース要素のスクロール位置を一番上 (
scrollTop(0)) にします。 - VChatログカウンタ (
_vchat_log_count) をインクリメントします。 - ログカウンタが最大値 (
kag.stat.vchat.max_log_count) を超えていたら、一番古いバルーン (.vchat:eq(-1)) を削除します。 cancelWeakStop()で停止を解除します。return falseします (これは通常、タグ実行後にnextOrderを呼ばないことを意味しますが、vchat_inは内部的に呼ばれるため、呼び出し元でnextOrderが制御されると思われます)。
14.2. [vchat_config]
- グループ: (VChat)
- タイトル: (VChat用) 設定変更
- 説明: VChat機能に関する設定を変更します。
- パラメータ:
chara_name_color: (任意) キャラクター名表示欄の背景色 (0xRRGGBB形式)。 (デフォルト値:"")
- 期待される動作:
pm.chara_name_colorが指定されていれば、kag.stat.vchat.chara_name_colorを更新します。- 次のタグへ進みます (
nextOrder)。
14.3. [vchat_chara]
- グループ: (VChat)
- タイトル: (VChat用) キャラクター設定
- 説明: VChatで使用するキャラクターごとの設定を行います。
- パラメータ:
name: (必須) 設定対象のキャラクター名。color: (任意) このキャラクターの発言時の名前表示欄の背景色 (0xRRGGBB形式)。 (デフォルト値:"")
- 期待される動作:
- VChat機能が有効でない (
kag.stat.vchat.is_active == false) 場合は、nextOrderを呼び出して終了します。 kag.stat.vchat.charasオブジェクト内に指定されたnameのエントリがなければ、空のオブジェクトで初期化します。pm.colorが指定されていれば、kag.stat.vchat.charas[pm.name]["color"]を更新します。- 次のタグへ進みます (
nextOrder)。
- VChat機能が有効でない (
内部状態
エンジン内部のstateは、主に以下のオブジェクトによって管理される。
kag.stat: ゲームの永続的な状態を保持する。セーブ・ロードの対象となり、ゲームプレイの進行状況、プレイヤーの選択、キャラクターの状態などが含まれる。kag.tmp: 一時的な状態やキャッシュ情報を保持する。セーブ・ロードの対象外であり、現在のタグ実行コンテキスト、アニメーション状態、プリロード情報などが含まれる。ゲームの再起動やロード時にリセットされる。kag.variable: ゲーム変数を管理する。f: ゲーム変数。シナリオ内で自由に定義・変更可能。セーブ・ロード対象。sf: システム変数。ゲーム間で共有される可能性のある設定や状態。セーブ・ロード対象。tf: 一時変数。現在のシナリオファイルやマクロ内でのみ有効な変数。セーブ・ロード対象外。
kag.layer: レイヤーの状態(DOM要素、表示/非表示、スタイルなど)を管理する。map_layer_fore,map_layer_backなどが含まれる。kag.config: ゲームの基本設定(Config.tjsから読み込まれる)。一部の設定はkag.statやkag.variable.sfの値によって上書きされる。
kag.stat
kag.stat はゲームの永続的な状態を保持する中心的なオブジェクトである。以下に各プロパティの詳細を記述する。
| プロパティ名 | 型 | 説明 | 初期値(推測) | 関連タグ/処理 | 期待される動作/役割 | セーブ/ロード |
|---|---|---|---|---|---|---|
map_label | Object | 現在のシナリオファイル内のラベル名とそのタグインデックスのマッピング。 | {} | [label], [jump], [call] | ラベルジャンプの宛先特定に使用。[label] タグ通過時に登録される。 | ○ |
map_macro | Object | 定義されたマクロ名とその開始位置(シナリオファイル、インデックス)のマッピング。 | {} | [macro], [erasemacro], マクロ呼び出し | マクロ呼び出し時に、定義された場所へジャンプするために使用。[macro]で登録、[erasemacro]で削除。 | ○ |
vertical | String | "true" または "false"。縦書きモードが有効か。 | "false" | [position] (vertical属性) | テキスト表示方向を制御する。 | ○ |
f | Object | ゲーム変数 (f.*) を格納するオブジェクト。 | {} | [eval], [clearvar], [commit], [ptext] (name属性) | シナリオ進行中に値を保持・変更するための汎用変数領域。 | ○ |
mp | Object | マクロ呼び出し時に渡されたパラメータ (% 記法で使用)。 | {} | マクロ呼び出し, [endmacro] | マクロ内でパラメータを参照するために使用。マクロ呼び出し時に設定され、[endmacro]でスタックに応じて復元される。 | ○ |
current_layer | String | 現在操作対象のメッセージレイヤ名 (message0, message1 など)。 | "message0" | [current], [ct] | [text] や [font] などがどのメッセージレイヤに作用するかを決定する。 | ○ |
current_page | String | 現在操作対象のページ (fore または back)。 | "fore" | [current], [ct] | レイヤー操作が表ページか裏ページかを決定する。 | ○ |
is_stop | Boolean | アニメーションやトランジションなどの処理中に true になる弱い停止フラグ。 | false | [wait], [trans], [anim] など (開始時に true, 完了時に false) | true の間、プレイヤーのクリックによる進行が無効になる。nextOrder は実行される。 | × |
is_wait | Boolean | [wait] タグ実行中に true になる停止フラグ。 | false | [wait], [wait_cancel] | true の間、ゲーム進行が完全に停止する。タイムアウトまたは [wait_cancel] で解除。 | ○ |
is_trans | Boolean | [trans] タグ実行中に true になる停止フラグ。 | false | [trans] (開始時に true), completeTrans (完了時に false) | true の間、トランジションが完了するのを待つ ([wt]で使用)。 | × |
is_wait_anim | Boolean | [wa] タグ実行中に true になる停止フラグ。 | false | [wa], popAnimStack | true の間、すべてのアニメーション完了を待つ。kag.tmp.num_anim が 0 になると解除。 | × |
is_strong_stop | Boolean | [s] タグ実行中に true になる強い停止フラグ。 | false | [s], [jump], [call], [return] など (ジャンプ/コール系で解除) | true の間、クリックや nextOrder を含め、ほぼすべての進行が停止する。選択肢待ちなどで使用。 | ○ |
strong_stop_recover_index | Number | [s] タグで停止したときの current_order_index。 | 0 | [_s] | [s] タグ実行中にセーブした場合、ロード後にこのインデックスから再開するために使用される([_s] は通常使用されない内部タグ)。 | ○ |
is_nowait | Boolean | [nowait] 実行中に true になるフラグ。 | false | [nowait], [endnowait] | true の間、テキストが一瞬で表示される。 | ○ |
current_message_str | String | 現在メッセージウィンドウに表示されているテキスト。 | "ゲームスタート" | [text] | バックログやセーブデータのタイトル生成に使用される。 | ○ |
current_save_str | String | セーブデータのタイトルとして使用されるテキスト。 | "" | [text], pushBackLog | pushBackLog の第1引数(chara_name)が空でない場合に current_message_str から更新される。 | ○ |
current_keyframe | String | 現在定義中のキーフレームアニメーション名。 | "" | [keyframe], [endkeyframe] | [frame] タグがどのキーフレーム定義に属するかを特定するために使用。 | ○ |
map_keyframe | Object | 定義されたキーフレームアニメーションの情報。 | {} | [keyframe], [frame], [kanim], [xanim] | [frame] で定義されたキーフレーム情報を保持し、[kanim], [xanim] で参照される。 | ○ |
is_script | Boolean | [iscript] と [endscript] の間は true。 | false | [iscript], [endscript] | true の間、テキストは JavaScript コードとして buff_script に蓄積される。タグのエンティティ置換などが無効になる。 | × |
buff_script | String | is_script が true の間に蓄積される JavaScript コード。 | "" | [text] (in iscript), [endscript] | [endscript] で評価される。 | × |
is_html | Boolean | [html] と [endhtml] の間は true。 | false | [html], [endhtml] | true の間、テキストは HTML コードとして map_html.buff_html に蓄積される。 | × |
map_html | Object | is_html が true の間の状態(buff_html, buff_pm)。 | {} | [html], [endhtml], [text] (in html) | [endhtml] で HTML を構築するために使用。 | × |
cssload | Object | [loadcss] で読み込まれた CSS ファイルのパスをキーとするマップ。 | {} | [loadcss] | ロード時に同じ CSS を再度読み込むために使用。 | ○ |
save_img | String | [save_img] で指定されたカスタムセーブサムネイル画像のパス。 | "" | [save_img] | 空文字列の場合、通常の画面キャプチャがサムネイルになる。指定されている場合、その画像がサムネイルになる。 | ○ |
stack | Object | if, call, macro のネスト状態を管理するスタック。 | {if:[],call:[],macro:[]} | [if], [elsif], [else], [endif], [call], [return], [macro], [endmacro], [clearstack] | 各タグの実行時に対応するスタックが push/pop される。特に call/macro のスタックはパラメータ(mp)の復元にも関わる。 | ○ |
set_text_span | Boolean | メッセージ表示中に新しい <span> を作成する必要がある場合に true になる(主に内部用)。 | false | [font], [resetfont], [ruby] | true の場合、次のテキスト表示時に強制的に新しい span.current_span が作成される。 | ○ |
current_scenario | String | 現在実行中のシナリオファイル名。 | "first.ks" | loadScenario, [jump], [call] | インタープリタがどのシナリオファイルを処理しているかを示す。 | ○ |
is_skip | Boolean | スキップモードが有効か。 | false | setSkip, [skipstart], [skipstop] | true の間、テキスト瞬間表示、ウェイトやアニメーションの短縮などが行われる。 | ○ |
is_auto | Boolean | オートモードが有効か。 | false | setAuto, [autostart], [autostop] | true の間、クリック待ち ([l], [p]) が自動的に解除される。 | ○ |
current_bgm | String | 現在再生中の BGM ファイル名。 | "" | [playbgm], [stopbgm] | ロード時に BGM を復元するために使用。 | ○ |
current_bgm_vol | String | 現在再生中の BGM の volume パラメータの値。 | "" | [playbgm], [stopbgm], [bgmopt] | ロード時に BGM 音量を復元するために使用。 | ○ |
current_bgm_html5 | String | "true" または "false"。現在再生中の BGM の html5 パラメータの値。 | "false" | [playbgm], [stopbgm] | ロード時に BGM 再生方法を復元するために使用。 | ○ |
current_bgm_base64 | String | 現在再生中の BGM が base64 エンコードされている場合のファイル形式 (mp3, ogg など)。されていない場合は ""。 | "" | [playbgm] (base64属性) | ロード時に base64 音声を復元するために使用。 | ○ |
current_bgm_pause_seek | String | [pausebgm] 実行時に再生位置(秒)が格納される。再生中は ""。 | "" | [pausebgm], [resumebgm], [playbgm] | ロード時に一時停止状態を復元するために使用。 | ○ |
current_se | Object | 再生中のループ SE の情報(キー:buf, 値:pm)。 | {} | [playse], [stopse] | ロード時にループ SE を復元するために使用。 | ○ |
load_auto_next | Boolean | [showsave] などで開いたセーブ画面からロードした場合に true になる。 | false | [showsave], loadGameData | ロード完了後に nextOrder を呼ぶかどうかを制御する。 | × |
current_bgcamera | String/Object | [bgcamera] で設定されたパラメータ。無効な場合は ""。 | "" | [bgcamera], [stop_bgcamera] | ロード時にカメラ背景を復元するために使用。 | ○ |
enable_keyconfig | Boolean | キーボード/マウス/ゲームパッド操作が有効か。 | true | [start_keyconfig], [stop_keyconfig] | false の間、キーコンフィグで定義されたアクション(defaultを除く)が無効になる。 | ○ |
current_bgmovie | Object | 再生中の背景動画の情報 (storage, volume)。 | {storage:"", volume:""} | [bgmovie], [stop_bgmovie] | ロード時に背景動画を復元するために使用。 | ○ |
current_camera | Object | [camera] で操作されたカメラの状態(キー:レイヤ名、値:trans オブジェクト)。 | {} | [camera], [reset_camera] | ロード時にカメラ状態を復元するために使用。 | ○ |
current_camera_layer | String | [camera] で最後に操作されたレイヤ名。 | "" | [camera], [reset_camera] | 内部処理用?(セーブ/ロードには影響しない可能性) | ○ |
is_move_camera | Boolean | カメラアニメーション([camera], [reset_camera])実行中に true。 | false | [camera], [reset_camera] | [wait_camera] で参照される。 | × |
is_wait_camera | Boolean | [wait_camera] 実行中に true。 | false | [wait_camera], [camera], [reset_camera] | true の間、カメラアニメーションの完了を待つ。アニメーション完了時に解除され nextOrder が呼ばれる。 | × |
current_line | Number | 現在実行中のタグの、シナリオファイル内での行番号(0-based)。 | 0 | nextOrder | エラーメッセージ表示に使用。 | ○ |
is_hide_message | Boolean | メッセージレイヤが非表示状態か([hidemessage] などで)。 | false | [hidemessage], showMessageLayers, [text] | true の間、メッセージレイヤが表示されない。クリックで false になり表示される。[text] 到達時にも false になる。 | ○ |
is_click_text | Boolean | テキスト表示中にクリックされた場合に true。 | false | click イベント (in text), [l], [p] | true の間、テキストが一瞬で表示される(または ch_speed_in_click の速度で表示される)。[l] や [p] で false にリセットされる。 | × |
is_adding_text | Boolean | テキストを1文字ずつ表示している最中は true。 | false | [text] (表示開始時に true, 完了時に false) | true の間、nextOrder が抑制される。[skipstart] も無効になる。 | × |
flag_ref_page | Boolean | 改ページ([p])やメッセージクリア([cm], [er])が必要な場合に true。 | false | [p], [cm], [er], [ct] | true の場合、次のテキスト表示時にメッセージレイヤがクリアされる。 | ○ |
ruby_str | String | 次の1文字に適用するルビ文字列。 | "" | [ruby] | [text] タグ内で参照され、<ruby> タグを生成する。使用後にクリアされる。 | ○ |
mark | Number | テキストマーカーの状態(0: なし, 1: 開始, 2: 終了待ち)。 | 0 | [mark], [endmark], [text] | [text] タグ内で参照され、<mark> タグを生成する。 | ○ |
style_mark | String | テキストマーカーのスタイル文字列。 | "" | [mark] | [text] タグ内で参照される。 | ○ |
ch_speed | String | 現在の文字表示速度(ミリ秒/文字)。空文字列の場合は kag.config.chSpeed が適用される。 | "" | [delay], [resetdelay] | [text] タグ内で参照される。 | ○ |
skip_link | String | "true" または "false"。選択肢クリック後にスキップモードを継続するか。 | "true" | - (Config.tjs で設定) | 選択肢 ([link], [button]) のクリックイベントで参照される。 | ○ |
log_join | String | "true" または "false"。バックログを前の行に連結するか。 | "false" | 各タグ定義 (log_join プロパティ), pushBackLog | pushBackLog で参照される。多くのタグ通過時に false にリセットされる。 | ○ |
log_clear | Boolean | 次のバックログ追加時に強制的に add モードにするか。 | false | [p], [cm], [er], [ct], pushBackLog | pushBackLog で参照される。 | ○ |
f_chara_ptext | String | "true" または "false"。[chara_ptext] 直後かどうか(主にバックログ用)。 | "false" | [chara_ptext] | バックログ生成時に参照される。 | ○ |
flag_glyph | String | "true" または "false"。クリック待ちグリフを固定表示するか。 | "false" | [glyph] | showNextImg などで参照される。"true" の場合、画面固定位置にグリフが表示される。 | ○ |
path_glyph | String | クリック待ちグリフの画像ファイル名。 | "nextpage.gif" | [glyph] | showNextImg などで参照される。 | ○ |
current_cursor | String/Object | 現在のマウスカーソル設定。[cursor] の storage または pm オブジェクト。 | "auto" | [cursor] | ロード時にカーソルを復元するために使用。 | ○ |
use_close_confirm | Boolean | 終了確認ダイアログが有効か。 | false | [closeconfirm_on], [closeconfirm_off] | true の場合、未保存状態でゲームを閉じようとすると確認ダイアログが表示される。 | ○ |
font | Object | 現在のテキストスタイル。 | {} | [font], [resetfont] | [text] タグ実行時に span のスタイルとして適用される。[resetfont] で default_font の値に戻る。 | ○ |
locate | Object | [locate] で指定された x, y 座標。 | {x:0, y:0} | [locate] | [button] などの位置指定に使用される。 | ○ |
default_font | Object | デフォルトのテキストスタイル。 | {} | [deffont], [resetfont] | [resetfont] 実行時に kag.stat.font にコピーされる。 | ○ |
fuki | Object | ふきだし表示 ([fuki_start]) に関連する状態。 | {active:false, def_style:{}, def_style_inner:{}, def_pm:{}, marginr:0, marginb:0, others_style:{}} | [fuki_start], [fuki_stop], [fuki_chara], [position] | ふきだしの表示/非表示、スタイル、位置などを管理する。 | ○ |
sysview | Object | システム画面(セーブ、ロードなど)の HTML ファイルパス。 | {} | [sysview] | kag.html() で参照される。 | ○ |
chara_pos_mode | String | "true" または "false"。キャラクターの自動配置が有効か。 | "true" | [chara_config] | [chara_show], [chara_hide] などで参照される。 | ○ |
chara_effect | String | キャラクター自動配置時のアニメーション効果名。 | "swing" | [chara_config] | キャラクター自動配置時に使用される。 | ○ |
chara_ptext | String | キャラクター名表示領域の name 属性値。 | "" | [chara_config] | [chara_ptext] で参照される。 | ○ |
chara_time | String | [chara_mod] での表情変更クロスフェード時間(ミリ秒)。 | "600" | [chara_config] | [chara_mod] で参照される。 | ○ |
chara_memory | String | "true" または "false"。[chara_hide] 時に表情を記憶するか。 | "false" | [chara_config] | [chara_hide], [chara_show] で参照される。 | ○ |
chara_anim | String | "true" または "false"。キャラクター自動配置時にアニメーションするか。 | "true" | [chara_config] | キャラクター自動配置時に参照される。 | ○ |
pos_change_time | String | キャラクター自動配置時のアニメーション時間(ミリ秒)。 | "600" | [chara_config] | キャラクター自動配置時に参照される。 | ○ |
chara_last_zoom_name | String | [chara_ptext] で最後にズームアニメーションしたキャラ名。 | "" | [chara_ptext] | ズームアニメーション処理で使用。 | ○ |
chara_talk_focus | String | 発言者フォーカスモード (none, brightness, blur)。 | "none" | [chara_config] | [chara_ptext] 実行時に、非発言者のスタイルを変更するために使用。 | ○ |
chara_brightness_value | String | talk_focus=brightness 時の非発言者の明度(%)。 | "60" | [chara_config] | 非発言者のスタイル設定時に使用。 | ○ |
chara_blur_value | String | talk_focus=blur 時の非発言者のぼかし強度(px)。 | "2" | [chara_config] | 非発言者のスタイル設定時に使用。 | ○ |
chara_talk_anim | String | 発言開始時のアニメーション種別 (none, up, down, zoom)。 | "none" | [chara_config] | [chara_ptext] 実行時にアニメーションを適用するために使用。 | ○ |
chara_talk_anim_time | Number | 発言開始時のアニメーション時間(ミリ秒)。 | 230 | [chara_config] | [chara_ptext] 実行時に使用。 | ○ |
chara_talk_anim_value | Number | talk_anim=up/down 時の移動量(px)。 | 30 | [chara_config] | [chara_ptext] 実行時に使用。 | ○ |
chara_talk_anim_zoom_rate | Number | talk_anim=zoom 時の拡大率。 | 1.2 | [chara_config] | [chara_ptext] 実行時に使用。 | ○ |
apply_filter_str | String | 非発言者に適用する CSS filter 文字列。 | "" | [chara_config] | 非発言者のスタイル設定時に使用。 | ○ |
video_stack | Object/null | [bgmovie] のループ再生中に次の動画が指定された場合に、その pm を保持する。 | null | [bgmovie] | 背景動画のループ完了後に再生を切り替えるために使用。 | × |
is_wait_bgmovie | Boolean | [wait_bgmovie] 実行中に true。 | false | [wait_bgmovie] | true の間、背景動画の再生完了を待つ。 | × |
charas | Object | [chara_new] で定義されたキャラクター情報。 | {} | [chara_new], [chara_delete], etc. | キャラクター表示や操作の基盤となる情報。 | ○ |
jcharas | Object | キャラクターの日本語名(jname)と内部名(name)のマッピング。 | {} | [chara_new] | #日本語名 のような省略記法でのキャラクター指定を可能にする。 | ○ |
play_bgm | Boolean | BGM 再生が有効か。 | true | - (Config.tjs の defaultBgmMode などで制御される可能性) | false の場合、[playbgm] などの BGM 操作が無効になる。 | ○ |
play_se | Boolean | SE 再生が有効か。 | true | - (Config.tjs の defaultSeMode などで制御される可能性) | false の場合、[playse] などの SE 操作が無効になる。 | ○ |
play_speak | Boolean | テキスト読み上げ機能が有効か。 | false | [speak_on], [speak_off] | true の場合、[text] タグ実行時に読み上げが行われる。 | ○ |
map_se_volume | Object | SE のスロットごとの個別ボリューム設定 (buf がキー)。 | {} | [seopt] | [playse] 時の音量計算に使用。 | ○ |
map_bgm_volume | Object | BGM のスロットごとの個別ボリューム設定 (buf がキー)。 | {} | [bgmopt] | [playbgm] 時の音量計算に使用。 | ○ |
map_vo | Object | ボイス関連設定 ([voconfig])。vobuf (ボイス用SEバッファ), vochara (キャラ別ボイス設定)。 | {vobuf:{}, vochara:{}} | [voconfig] | [chara_ptext] 実行時のボイス自動再生に使用。 | ○ |
vostart | Boolean | ボイス自動再生が有効か ([vostart])。 | false | [vostart], [vostop] | true の間、[chara_ptext] 実行時に対応するボイスが再生される。 | ○ |
log_write | Boolean | バックログへの記録が有効か。 | true | [nolog], [endnolog] | false の間、pushBackLog が抑制される。 | ○ |
buff_label_name | String | 最後に通過したラベル名(既読管理用)。 | "" | [label] | 次の [label] 通過時に、この値に対応する sf.record がインクリメントされる。 | ○ |
already_read | Boolean | 現在の位置が既読済みか。 | false | [label] | 既読管理 (configRecordLabel) が有効な場合、[label] 通過時に判定・設定される。未読スキップ判定や既読テキスト色変更に使用。 | ○ |
visible_menu_button | Boolean | メニューボタン(右下の歯車など)が表示されているか。 | false | [showmenubutton], [hidemenubutton] | メニューボタンの表示/非表示状態を保持する。 | ○ |
resizecall | Object | 画面リサイズ時に呼び出すコール情報 (storage, target)。 | {storage:"", target:""} | [set_resizecall] | 画面リサイズイベント発生時に [call] を実行するために使用。 | ○ |
vchat | Object | VChat モードの状態 (is_active, chara_name_color, max_log_count, charas)。 | {is_active:false, chara_name_color:"0x70c7ff", max_log_count:200, charas:{}} | [vchat_in], [vchat_config], [vchat_chara] | VChat モードの有効/無効、表示設定、キャラクター情報を管理する。 | ○ |
message_config | Object | [message_config] で設定されたテキスト関連の詳細設定。 | {} | [message_config] | [text] などのテキスト表示処理で参照される。 | ○ |
word_nobreak_list | Array | ワードブレイク(単語途中での改行)を禁止する単語リスト。 | [] | [message_config] (add/remove) | [text] タグのHTML生成時に参照され、該当単語が <span> で囲まれる。 | ○ |
lipsync_buf_chara | Object | 口パク対象となるSEバッファとキャラ名のマッピング。キーがバッファ番号。 | {} | [chara_layer] (lip_se_buf_all属性) | [playse] 時に参照され、対応するキャラの口パクを開始する。 | ○ |
checkpoint | Object | [checkpoint] で登録されたゲーム状態のスナップショット。キーがチェックポイント名。 | {} | [checkpoint], [rollback], [clear_checkpoint] | [rollback] 時に指定されたチェックポイントの状態を復元するために使用。 | ○ |
title | String | ゲームタイトル。 | "" | [title] | ブラウザのタイトルバーやタブに表示される。 | ○ |
plus_lighter | String | "true" または "false"。キャラクターパーツに mix-blend-mode: plus-lighter; を適用するか。 | "false" | [chara_config] | キャラクター表示時に参照される。 | ○ |
glyph_pm | Object | [glyph fix=false] で設定されたクリック待ちグリフのパラメータ。 | null | [glyph] | showNextImg で参照される。 | ○ |
glyph_fix_pm | Object | [glyph fix=true] で設定された固定クリック待ちグリフのパラメータ。 | null | [glyph] | showNextImg で参照される。 | ○ |
glyph_skip_pm | Object | [glyph_skip] で設定された固定スキップモードグリフのパラメータ。 | null | [glyph_skip] | setSkip で参照される。 | ○ |
glyph_auto_pm | Object | [glyph_auto fix=true] で設定された固定オートモードグリフのパラメータ。 | null | [glyph_auto] | setAuto で参照される。 | ○ |
glyph_auto_next_pm | Object | [glyph_auto fix=false] で設定されたメッセージ末尾オートモードグリフのパラメータ。 | null | [glyph_auto] | setAuto で参照される。 | ○ |
glyph_pm_restore | Object | オートモード開始前の glyph_pm の退避用。 | null | setAuto | オートモード終了時に glyph_pm を復元するために使用。 | ○ |
glink_config | Object | [glink_config] で設定された [glink] 自動配置の設定。 | {} | [glink_config] | [s] タグや [glink] タグで参照される。 | ○ |
hold_glink | Boolean | [glink hold=true] がクリックされた場合に true。 | false | [glink] (hold属性), [jump] | [jump] タグ実行時に参照され、true ならば対応する storage/target を使用する。 | ○ |
hold_glink_storage | String | [glink hold=true] の storage。 | "" | [glink] (hold属性), [jump] | [jump] タグ実行時に参照される。 | ○ |
hold_glink_target | String | [glink hold=true] の target。 | "" | [glink] (hold属性), [jump] | [jump] タグ実行時に参照される。 | ○ |
loading_log | Object | [loading_log] で設定されたローディングログの設定。 | {} | [loading_log] | showLoadingLog, hideLoadingLog で参照される。 | ○ |
hidden_svg_list | Array | [xanim svg] でロードされた <svg> 要素の情報(ファイルパスなど)。 | [] | [xanim] (svg属性) | ロード時に <svg> 要素を復元するために使用。 | ○ |
kag.tmp
kag.tmp は一時的な状態やキャッシュ情報を保持する。セーブ・ロードの対象外である。
| プロパティ名 | 型 | 説明 | 初期値(推測) | 関連タグ/処理 | 期待される動作/役割 |
|---|---|---|---|---|---|
checking_macro | Boolean | マクロ定義読み込み中 ([macro] から [endmacro] まで) は true。 | false | [macro], [endmacro] | マクロ定義中のタグが実行されないように制御する。 |
ready_audio | Boolean | オーディオ再生準備完了フラグ(主にスマホブラウザ向け)。 | false | readyAudio | true になると音声再生が可能になる。初回ユーザーインタラクション時に true になる。 |
audio_context | AudioContext | Web Audio API の AudioContext インスタンス。 | null | init | オーディオ処理の基盤。 |
num_anim | Number | 実行中のアニメーション([anim])のスタック数。 | 0 | pushAnimStack, popAnimStack | [wa] で参照され、0 になるまで待機する。 |
map_bgm | Object | 再生中の BGM の Howl オブジェクト(キー:buf)。 | {} | [playbgm], [stopbgm], [fadeinbgm], [fadeoutbgm], [xchgbgm], [pausebgm], [resumebgm], [bgmopt], [changevol] | BGM の再生、停止、音量変更などを制御するために使用。 |
map_se | Object | 再生中の SE の Howl オブジェクト(キー:buf)。 | {} | [playse], [stopse], [fadeinse], [fadeoutse], [pausese], [resumese], [seopt], [changevol] | SE の再生、停止、音量変更などを制御するために使用。 |
sleep_game | Object/null | [sleepgame] 実行時にゲーム状態のスナップショットが格納される。 | null | [sleepgame], [awakegame], [breakgame] | [awakegame] で復帰するために使用。 |
sleep_game_next | Boolean | [awakegame] 実行時に nextOrder を呼ぶか。 | false | setGameSleep | [sleepgame] の next パラメータに応じて設定される。 |
base_scale | Number | ゲーム画面の基本スケーリング値(未使用?)。 | 1 | - | - |
is_se_play | Boolean | SE が再生中か。 | false | [playse], [stopse], [wse] | [wse] で参照される。 |
is_se_play_wait | Boolean | [wse] 実行中に true。 | false | [wse], SE再生完了時 | SE 再生完了時に nextOrder を呼ぶために使用。 |
is_vo_play | Boolean | ボイスが再生中か。 | false | [playse] (ボイスの場合), [stopse] (ボイスの場合), [l], [p] | オートモード時の進行制御に使用。 |
is_vo_play_wait | Boolean | オートモード中にボイス再生完了待ちの場合 true。 | false | [l], [p], ボイス再生完了時 | ボイス再生完了時に nextOrder を呼ぶために使用。 |
is_bgm_play | Boolean | BGM が再生中か。 | false | [playbgm], [stopbgm], [wbgm] | [wbgm] で参照される。 |
is_bgm_play_wait | Boolean | [wbgm] 実行中に true。 | false | [wbgm], BGM再生完了時 | BGM 再生完了時に nextOrder を呼ぶために使用。 |
loading_make_ref | Boolean | make.ks ロード中に true? | false | [return] (from make.ks) | ロード完了イベントの発火制御? |
cut_nextorder | Function/null | nextOrder を一時的に上書きするコールバック関数。 | null | startTag (cb指定時), nextOrder | startTag でコールバックが指定された場合に、nextOrder の代わりにそのコールバックを実行するために使用。 |
wait_id | String/Number | setTimeout の ID ([wait] 用)。 | "" | [wait], [wait_cancel] | [wait_cancel] でタイマーを解除するために使用。 |
map_chara_talk_top | Object | 発言中アニメーション中のキャラクターとその開始 top 位置。 | {} | chara_ptext | アニメーションの重ねがけ防止? |
camera_stream | Boolean | [bgcamera] でカメラストリームが有効か。 | false | [bgcamera], [stop_bgcamera] | checkPicture で参照される。 |
video_playing | Boolean | [bgmovie] で背景動画が再生中か。 | false | [bgmovie], [stop_bgmovie] | [bgmovie] の再生制御に使用。 |
angle | Number | スマホの画面角度(window.orientation)。 | 0 | init_game, resize イベント | [3d_gyro] などで使用? |
largerWidth | Boolean | 画面の横幅が縦幅より大きい場合に true。 | false | init_game, resize イベント | [set_resizecall] などで使用? |
three | Object | Three.js 関連の状態 (stat, groups, models, evt など)。 | {stat:{...}, groups:{}, models:{}, evt:{}} | [3d_*] タグ全般 | Three.js のシーン、カメラ、レンダラー、モデル、イベントなどを管理する。 |
preload_audio_map | Object | [preload] で読み込まれた Howl オブジェクトのキャッシュ(キー:src)。 | {} | [preload], [playbgm], [playse] | 音声ファイルのプリロード状態を管理。 |
mode_effect | Object | [mode_effect] で設定されたモード変化エフェクト情報。 | {pc:{...}, phone:{...}} | [mode_effect], setAuto, setSkip | スキップ/オートモード切り替え時のエフェクト表示に使用。 |
current_actor | String | LiveNovel 用の現在のアクター名?(コード片には関連処理なし) | "" | - | - |
screen_info | Object | 現在のゲーム画面のスケーリング情報(scale_x, scale_y, width, height, top, bottom, left, right, original_width, original_height, viewport_width, viewport_height)。 | {} | resize イベント | 画面のリサイズ時に更新され、仮想マウスカーソル (vmouse) の座標計算などに使用される。 |
speak_on_volume | Number | テキスト読み上げの音量 (0.0-1.0)。 | 1.0 | [speak_on] | speechMessage で参照される。 |
speak_on_pitch | Number | テキスト読み上げのピッチ (0.0-2.0)。 | 1.0 | [speak_on] | speechMessage で参照される。 |
speak_on_rate | Number | テキスト読み上げの速度 (0.1-10.0)。 | 1.0 | [speak_on] | speechMessage で参照される。 |
speak_on_cancel | Boolean | 読み上げ中に次の読み上げが来た場合にキャンセルするか。 | false | [speak_on] | speechMessage で参照される。 |
speak_on_utterance | SpeechSynthesisUtterance | 現在読み上げ中の SpeechSynthesisUtterance オブジェクト。 | null | speechMessage | speak_on_cancel=true の場合にキャンセルするために使用。 |
j_cursor_css | jQuery | [cursor] で追加された <style> 要素の jQuery オブジェクト。 | null | [cursor] | カーソルスタイルを上書きするために使用。 |
cursor_hide_timer | Number/null | カーソル自動非表示の setTimeout ID。 | null | [cursor] (auto_hide属性) | マウス移動時にタイマーをリセットし、タイムアウトでカーソルを非表示にする。 |
is_cursor_visible | Boolean | 仮想マウスカーソルが(自動非表示機能により)表示されているか。 | true | [cursor] (auto_hide属性) | マウス移動時にカーソルを再表示するかどうかの判定に使用。 |
prev_screen_effect_type | String | 最後に表示したモードエフェクトのタイプ (skip, auto, stop など)。 | "" | showModeEffect | 同じエフェクトが連続で表示されるのを防ぐ。 |
screen_effect_timer_id | Number/null | モードエフェクト表示の setTimeout ID。 | null | showModeEffect | モード切り替えからわずかな遅延後にエフェクトを表示するためのタイマー。 |
loading_log_timer_id | Number/null | ローディングログ表示開始の setTimeout ID。 | null | showLoadingLog | 一定時間 (min_time) 経過後にローディングログを表示するためのタイマー。 |
loading_log_hide_timer_id | Number/null | ローディングログ非表示の setTimeout ID。 | null | hideLoadingLog | ログ表示が完了した少し後に非表示にするためのタイマー。 |
j_loading_log | jQuery | ローディングログの DOM 要素。 | null | [loading_log] | ローディングログの表示/非表示に使用。 |
j_loading_log_message | jQuery | ローディングログのテキスト部分の DOM 要素。 | null | [loading_log] | ローディングログのテキスト設定に使用。 |
j_loading_log_icon | jQuery | ローディングログのアイコン部分の DOM 要素。 | null | [loading_log] | ローディングログのアイコン表示/非表示に使用。 |
should_set_reverse_indent | Boolean | カギカッコフロートが必要か([text] タグ内で使用される一時フラグ)。 | false | [text] (showMessage) | [text] タグの内部処理用。 |
is_text_stroke | Boolean | -webkit-text-stroke による縁取りが有効か([text] タグ内で使用される一時フラグ)。 | false | [text] (showMessage) | [text] タグの内部処理用。 |
is_edge_overlap | Boolean | 縁取りを前の文字に重ねるか([text] タグ内で使用される一時フラグ)。 | true | [text] (showMessage) | [text] タグの内部処理用。 |
is_individual_decoration | Boolean | 1文字ずつ個別に装飾するか([text] タグ内で使用される一時フラグ)。 | false | [text] (showMessage) | [text] タグの内部処理用。 |
text_shadow_values | Array | text-shadow による個別縁取り時の各影の値([text] タグ内で使用される一時配列)。 | [] | [text] (showMessage) | [text] タグの内部処理用。 |
inside_stroke_color | String | text-shadow による個別縁取り時の文字本体の色([text] タグ内で使用される一時変数)。 | "" | [text] (showMessage) | [text] タグの内部処理用。 |
ch_speed | Number | 現在適用中の文字表示速度(ミリ秒/文字)([text] タグ内で使用される一時変数)。 | 30 | [text] (addChars) | [text] タグの内部処理用。 |
effect_speed | String | 現在適用中の文字エフェクト速度([text] タグ内で使用される一時変数)。 | "0.2s" | [text] (addChars) | [text] タグの内部処理用。 |
last_char_info | Object/null | 最後に表示した文字の情報 (left, top, j_char)(禁則処理用)。 | null | [text] (showMessage, controlLineBreak) | [text] タグの禁則処理で使用。 |
processed_click_interrupt | Boolean | 文字表示中のクリック割り込みを処理済みか([text] タグ内で使用される一時フラグ)。 | false | [text] (addChars, checkClickInterrupt) | [text] タグの内部処理用。 |
text_lipsync_target_parts | Array/null | テキストによるリップシンク対象パーツ情報([text] タグ内で使用される一時配列)。 | null | [text] (startLipSyncWithText, stopLipSyncWithText) | [text] タグのリップシンク処理で使用。 |
quake2_finish | Function/false | [quake2] アニメーションを終了させる関数。終了後は false。 | false | [quake2] | [quake2] のアニメーション制御で使用。 |
quake2_timer_id | Number/null | [quake2] の requestAnimationFrame ID。 | null | [quake2] | [quake2] のアニメーション制御で使用。 |
__j_hiden_area | jQuery/null | <div id="hidden_area"> の jQuery オブジェクトキャッシュ。 | null | getHiddenArea | パフォーマンス向上のためのキャッシュ。 |
kag.variable
kag.variable はゲーム変数を管理する。
f: ゲーム変数 (kag.stat.fへの参照)。シナリオ内で自由にアクセス可能 (f.hoge = 10)。セーブ・ロード対象。sf: システム変数。ゲーム間で共有される可能性のある設定や状態。シナリオ内で自由にアクセス可能 (sf.hoge = "abc")。localStorageまたはファイルに永続化され、セーブ・ロード対象。tf: 一時変数。現在のシナリオファイルやマクロ内でのみ有効。シナリオ内で自由にアクセス可能 (tf.hoge = true)。セーブ・ロード対象外。ロード時やclearTmpVariableで初期化される(ただしtf.systemは保持される)。tf.system: バックログ (backlog) などのシステム内部で使用される一時情報を保持する。
その他の状態
kag.layer.map_layer_fore/map_layer_back: 各レイヤの表/裏ページの jQuery オブジェクトを保持。DOM構造やスタイル情報が含まれる。セーブ・ロード対象(HTML 文字列として)。kag.layer.layer_free: フリーレイヤの jQuery オブジェクト。セーブ・ロード対象。kag.layer.layer_event: イベントレイヤの jQuery オブジェクト。kag.layer.layer_menu: メニューレイヤの jQuery オブジェクト。kag.event.event_listener_map:kag.onで登録されたイベントリスナーを保持。kag.menu.snap:[savesnap]や[sleepgame]実行時に一時的にゲーム状態のスナップショットが格納される。
状態遷移
- タグ実行:
kag.ftag.nextOrder()が呼ばれるたびにcurrent_order_indexが増加し、対応するタグのstartメソッドが実行される。多くのタグはstartメソッド内で状態 (kag.stat,kag.tmp) を変更し、DOM を操作する。非同期処理(アニメーション、ウェイト、トランジションなど)を行うタグは、完了時にnextOrderを呼ぶか、対応する待機タグ ([wt],[wa]) で進行を再開させる。 - セーブ:
doSaveメソッド内でkag.stat,kag.layerの情報、current_order_indexなどがスナップショット (kag.menu.snap) として取得され、指定されたストレージ(localStorageor ファイル)に保存される。 - ロード:
loadGameDataメソッド内で保存されたデータが読み込まれ、kag.stat,kag.layerなどが復元される。その後、make.ksを経由して元のcurrent_order_indexからゲームが再開される。ロード時には一時的な状態 (kag.tmp) は基本的にリセットされる。
以上。