個別タグ仕様メモ
凡例
(必須)
: このパラメータは必須です。省略するとエラーが発生する可能性があります。(任意)
: このパラメータは任意です。省略可能です。(デフォルト値: 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
: (任意) フレームアニメーションをループさせるか (true
orfalse
)。デフォルトは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
: (任意) キャラクター立ち位置の自動調整を行うか (true
orfalse
)。 (デフォルト値:"true"
)effect
: (任意)pos_mode
やchara_move
で位置が変わる際のアニメーション効果。 (デフォルト値:"swing"
)ptext
: (任意)[chara_ptext]
が名前を表示する対象となる[ptext]
のname
。time
: (任意)[chara_mod]
での表情変更のデフォルト時間 (ミリ秒)。 (デフォルト値:"600"
)memory
: (任意)[chara_hide]
時に表情を記憶するか (true
orfalse
)。 (デフォルト値:"false"
)anim
: (任意)pos_mode
有効時に立ち位置変更のアニメーションを行うか (true
orfalse
)。 (デフォルト値:"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;
を使用するか (true
orfalse
)。使用する場合、パーツ画像はすべて黒背景にする必要があります。 (デフォルト値:"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
: (任意) 縁取りの実装方式 (shadow
orfilter
)。 (デフォルト値:""
)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
: (任意) デフォルトの縁取り実装方式 (shadow
orfilter
)。 (デフォルト値:""
)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
: (任意) 縁取りを前の文字に重ねるか (true
orfalse
)。stroke
縁取り時のみ有効。 (デフォルト値:"true"
)speech_bracket_float
: (任意) 開始カギカッコを左にずらすか (true
,false
, 数値(pxなど))。 (デフォルト値:"false"
)speech_margin_left
: (任意)speech_bracket_float
有効時にテキスト全体を右にずらすか (true
,false
, 数値(pxなど))。 (デフォルト値:"false"
)kerning
: (任意) 字詰めを行うか (true
orfalse
)。 (デフォルト値:"false"
)add_word_nobreak
: (任意) ワードブレイク禁止単語をカンマ区切りで追加。remove_word_nobreak
: (任意) ワードブレイク禁止単語をカンマ区切りで削除。line_spacing
: (任意) 行間 (px)。 (デフォルト値:""
)letter_spacing
: (任意) 字間 (px)。 (デフォルト値:""
)control_line_break
: (任意) 手動で禁則処理を行うか (true
orfalse
)。 (デフォルト値:"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
: (任意) 縦書きにするか (true
orfalse
)。kag.stat.vertical
を更新します。visible
: (任意) レイヤを表示するか (true
orfalse
)。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
: (任意) 直前のログに連結するか (true
orfalse
)。 (デフォルト値:"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
: (任意) 未読テキストをスキップ可能にするか (true
orfalse
)。 (デフォルト値:""
)
- 期待される動作:
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
: (任意) フェードイン完了を待つか (true
orfalse
)。 (デフォルト値:"true"
)zindex
: (任意) 重ね順。数値が大きいほど前面。 (デフォルト値:"1"
)depth
: (任意)zindex
が同じ場合の重ね順 (front
またはback
)。 (デフォルト値:"front"
)reflect
: (任意) 左右反転するか (true
orfalse
)。 (デフォルト値:""
)pos
: (任意) キーワードで位置を指定 (left
,lc
,c
,rc
,right
)。Config.tjs
のscPositionX
を参照。layer
がbase
以外の場合のみ有効。 (デフォルト値:""
)animimg
: (任意) アニメーション画像(GIF/APNG)を最初から再生するか (true
orfalse
)。 (デフォルト値:""
)
-
期待される動作:
- 前景レイヤ (
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
: (任意) フェードアウト完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) フェードアウト完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) 縦書きにするか (true
orfalse
)。 (デフォルト値:"false"
)size
: (任意) フォントサイズ (px)。省略時はデフォルトフォントサイズ。 (デフォルト値:""
)face
: (任意) フォント名。省略時はデフォルトフォント。 (デフォルト値:""
)color
: (任意) 文字色 (0xRRGGBB
形式)。省略時はデフォルト色。 (デフォルト値:""
)bold
: (任意) 太字にするか (true
orfalse
)。 (デフォルト値:""
)italic
: (任意) イタリック体にするか (true
orfalse
)。 (デフォルト値:""
)edge
: (任意) 縁取り色 (0xRRGGBB
形式) またはnone
。V515以降は太さも指定可能。 (デフォルト値:""
)shadow
: (任意) 文字影色 (0xRRGGBB
形式) またはnone
。edge
指定時は無効。 (デフォルト値:""
)name
: (任意) テキスト要素にname
属性値を設定します。 (デフォルト値:""
)width
: (任意) テキスト表示領域の横幅 (px)。 (デフォルト値:""
)align
: (任意) 横方向の文字揃え (left
,center
,right
)。width
指定時のみ有効。 (デフォルト値:"left"
)time
: (任意) フェードイン時間 (ミリ秒)。0
または空で瞬間表示。 (デフォルト値:""
)zindex
: (任意) 重ね順。 (デフォルト値:"9999"
)overwrite
: (任意) 同名の要素が存在する場合に内容を上書きするか (true
orfalse
)。 (デフォルト値:"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
: (任意) 切り替え完了を待つか (true
orfalse
)。 (デフォルト値:"true"
)time
: (任意) 切り替え時間 (ミリ秒)。 (デフォルト値:3000
)cross
: (任意) クロスフェード方式か (true
orfalse
)。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
: (任意) 切り替え完了を待つか (true
orfalse
)。 (デフォルト値:"true"
)time
: (任意) 切り替え時間 (ミリ秒)。 (デフォルト値:3000
)width
,height
,left
,top
: (任意)<img>
要素のサイズと位置 (px)。 (デフォルト値:""
)cross
: (任意) クロスフェード方式か (true
orfalse
)。 (デフォルト値:"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
: (任意) 対象ページ (fore
orback
)。 (デフォルト値:"fore"
)visible
: (任意) レイヤを表示するか (true
orfalse
)。 (デフォルト値:""
)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
: (任意) 一度クリックされたら無効にするか (true
orfalse
)。 (デフォルト値:"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]
を実行するか (true
orfalse
)。 (デフォルト値:"true"
)opacity
: (任意) ボタンの不透明度 (0-255)。 (デフォルト値:""
)clickse
: (任意) クリック時の効果音ファイル。data/sound
から。 (デフォルト値:""
)enterse
: (任意) マウスホバー時の効果音ファイル。 (デフォルト値:""
)leavese
: (任意) マウスアウト時の効果音ファイル。 (デフォルト値:""
)exp
: (任意) クリック時に実行するJavaScript式。 (デフォルト値:""
)preexp
: (任意)exp
内で使用できる値を事前に評価して設定。 (デフォルト値:""
)bold
: (任意) 太字にするか (true
orfalse
)。 (デフォルト値:""
)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
: (任意) 自動配置を有効にするか (true
orfalse
)。 (デフォルト値:"true"
)auto_place_force
: (任意)x
,y
指定のある[glink]
も強制的に自動配置対象にするか (true
orfalse
)。 (デフォルト値:"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
: (任意) 音声ファイルの場合、一度使用したらプリロードデータを破棄するか (true
orfalse
)。 (デフォルト値:"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
を呼ぶか (yes
orno
)。通常は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
を呼ぶか (true
orfalse
)。 (デフォルト値: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.*
変数を引き継ぐか (true
orfalse
)。 (デフォルト値:"true"
)sound_opt_over
: (任意) BGM/SEの個別音量設定 (kag.stat.map_*_volume
) を引き継ぐか (true
orfalse
)。 (デフォルト値:"true"
)bgm_over
: (任意) BGM再生状態を引き継ぐか (true
orfalse
)。 (デフォルト値:"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.*
)を、ロールバック実行前の状態にするか (true
orfalse
)。 (デフォルト値:"true"
)bgm_over
: (任意) ロールバック後のBGM再生状態を、ロールバック実行前の状態にするか (true
orfalse
)。 (デフォルト値:"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
: (任意) 閉じる前に確認ダイアログを表示するか (true
orfalse
)。 (デフォルト値:"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
: (任意) 適用後にゲームを再起動するか (true
orfalse
)。 (デフォルト値:"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
: (任意) 背景画像を全体に引き伸ばすか (true
orfalse
)。 (デフォルト値:"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
: (任意) クリックエフェクトを有効にするか (true
orfalse
)。 (デフォルト値:""
)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
: (任意) ローディングアイコンを表示するか (true
orfalse
)。 (デフォルト値:"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
: (任意) ブラウザの自動補完を有効にするか (true
orfalse
)。 (デフォルト値:"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
: (任意) 揺れの完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) 揺れの完了を待つか (true
orfalse
)。 (デフォルト値:"true"
)copybase
: (任意) 揺れ中に背景レイヤのコピーを表示するか (true
orfalse
)。画面端のチラつき防止。 (デフォルト値:"true"
)skippable
: (任意) スキップ中にこの揺れを無視するか (true
orfalse
)。 (デフォルト値:"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
: (任意) クリックによるスキップを許可するか (true
orfalse
)。 (デフォルト値:"false"
)mute
: (任意) 音声をミュートするか (true
orfalse
)。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
: (任意) 音声をミュートするか (true
orfalse
)。 (デフォルト値:"false"
)volume
: (任意) 音量 (0-100)。 (デフォルト値:""
)loop
: (任意) ループ再生するか (true
orfalse
)。 (デフォルト値:"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
: (任意) フェードアウト完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) フェードイン完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) ミュートするか (true
orfalse
)。 (デフォルト値:"false"
)loop
: (任意) ループ再生するか (true
orfalse
)。 (デフォルト値:"true"
)speed
: (任意) 再生速度 (例:1.0
,0.5
,2.0
)。 (デフォルト値:""
)mode
: (任意) ブレンドモード。 (デフォルト値:"multiply"
)opacity
: (任意) レイヤの不透明度 (0-255)。 (デフォルト値:""
)time
: (任意) フェードイン時間 (ミリ秒)。 (デフォルト値:"500"
)left
,top
,width
,height
: (任意) レイヤの位置とサイズ (px)。 (デフォルト値:""
)fit
: (任意) 画面全体に引き伸ばすか (true
orfalse
)。height
指定がない場合に影響。 (デフォルト値:"true"
)wait
: (任意) 再生完了を待つか (true
orfalse
)。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
: (任意) フェードアウト完了を待つか (true
orfalse
)。 (デフォルト値:"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パスをどの座標軸/回転に適用するか (true
orfalse
)。wait
: (任意) アニメーション完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) カメラ表示の完了を待つか (true
orfalse
)。 (デフォルト値:"true"
)time
: (任意) カメラ映像表示のフェードイン時間 (ミリ秒)。 (デフォルト値:1000
)fit
: (任意) 比率を保持するか (true
=崩す,false
=保持)。 (デフォルト値:"true"
)left
,top
,width
,height
: (任意) カメラ表示領域の位置とサイズ (px)。 (デフォルト値:""
)mode
: (任意) 使用するカメラ (front
orback
)。省略時はデフォルトカメラ。 (デフォルト値:""
)qrcode
: (任意) QRコードの反応モード (jump
,web
,define
,all
,off
)。 (デフォルト値:"off"
)debug
: (任意) QRコード読み取り時にURLをアラート表示するか (true
orfalse
)。 (デフォルト値:"false"
)audio
: (任意) 音声入力も反映させるか (true
orfalse
)。 (デフォルト値:"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
: (任意) フェードアウトの完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) アニメーション完了を待つか (true
orfalse
)。 (デフォルト値:"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
: (任意) アニメーション完了を待つか (true
orfalse
)。 (デフォルト値:"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
) として取得され、指定されたストレージ(localStorage
or ファイル)に保存される。 - ロード:
loadGameData
メソッド内で保存されたデータが読み込まれ、kag.stat
,kag.layer
などが復元される。その後、make.ks
を経由して元のcurrent_order_index
からゲームが再開される。ロード時には一時的な状態 (kag.tmp
) は基本的にリセットされる。
以上。