データファイル仕様

概要

一般的なHeartシステム全体の構造は、以下のようになります。

 - Heartディレクトリ
    |- Heart.exe               Heart 本体
    |- Heart.ini               設定ファイル
    |- Plugins.txt             Plug-in リスト
    |- char1.htc               char1 の人格ファイル
    |- char2.htc               char2 の人格ファイル
    +- SPIs                    Susie Plug-in 用フォルダ
    - char1ディレクトリ        char1 のデータフォルダ
       |- char1.hts             セーブファイル
       |- nadenade.txt          なでなでデータファイル
       |- chr101.htd            データファイル01
       |- chr102.htd            データファイル02
       |- chr1A1.htd            データファイルA1
       |- chr1A2.htd            データファイルA2
       |- chr1B1_a.htd          データファイルB1
       |- chr1B1_b.htd          データファイルB1
       |- (以下略)
       |- ...
    - char2ディレクトリ
       |- (以下略)
       |- ...

各データファイルの違いは、以下の通りです。暗号化は、ユーティリティ Encrypt.exe によって行います。データファイルの探索は01→02→A1→A2→B1→B2→C1→C2の順序で行い、各データの終端または優先タグ {Prior} が発見された時点で返答リストが存在していれば探索を中止します。

消耗 優先 暗号化 推奨拡張子
01 .htd
02 × .htd
A1 .htd
A2 × .htd
B1 .htd
B2 × .htd
C1 .htd
C2 × × .htd
Save -- -- .hts
Character -- --  × .htc

人格ファイル

各種人格情報を格納。必ずしも Heart フォルダ直下、つまり Heart.exe と同じフォルダに存在する必要は無いが、ネットワーク上のものはサポートされない。各データファイルへの参照には相対パスを用いる。

key1
value1
key2
value2
...
keyn
valuen

key と value を交互に記す。key に大文字小文字の区別は無く、順序も問わない。現在の Heart でサポートされる key の一覧は以下の通り。

必須 key value 標準値 備考
version 3桁の整数 -- 対応確認バージョン 210
name 文字列 -- 正式名称 水瀬すみれ
folder 文字列 -- 人格フォルダ名 sumire
data01 文字列 -- ファイルリスト(カンマ区切り) smr01_1.htd,smr01_2.htd
data02 文字列 -- ファイルリスト(カンマ区切り) smr02.htd
dataa1 文字列 -- ファイルリスト(カンマ区切り)
dataa2 文字列 -- ファイルリスト(カンマ区切り)
datab1 文字列 -- ファイルリスト(カンマ区切り)
datab2 文字列 -- ファイルリスト(カンマ区切り)
datac1 文字列 -- ファイルリスト(カンマ区切り)
datac2 文字列 -- ファイルリスト(カンマ区切り)
defaultbitamp 文字列 -- 標準の画像ファイル すみれ普.bmp
transparentbitamp true or false false 画像の左下1Pixelを透過色とするか否か true
originalballoon true or false false 人格フォルダ下の独自の吹き出し画像を使う true
balloonchar 文字列 -- 人格ターンの際の吹き出し
(200x350ビットマップ)
balloonc.bmp
balloonuser 文字列 -- ユーザーターンの際の吹き出し
(200x350ビットマップ)
balloonu.bmp
transparentballoon true or false false 吹き出しの左下1Pixelを透過色とするか否か true
parents 文字列 -- 製作者(達) +EC
url 文字列 -- サポートURL http://〜(以下略)
comment 文字列 -- 人格の紹介
(HeartScript 基本タグが有効)
nadenade true or false false なでなで対応か否か false
datanadenade 文字列 -- ファイルリスト(カンマ区切り) nadenade1.txt

セーブファイル

{Memo50}〜{Memo99} と {Count50}〜{Count99} など、人格の記憶データを保存。人格の正式名称を鍵にして暗号化して保存される。ファイル名は、人格ファイルの拡張子を「.hts」に変えたもの。

{Memo50}
{Memo51}
...
{Memo99}
{Count50}
...
{Count99}
{Flag01}
...
{Flag99}

データファイル0

HeartScript を用いて、返答を決定。まず最初に探索するため、優先度は最も高い。データファイル01は消耗有り、02は消耗無し。

"val1","resp1"
"val2","resp2"
...
"valn","respn"
"{EndofData}","{Dummy}"

val を1から順に HeartScript として評価していき、True となれば対応する resp を返答リストに加える。{OperateMessage} 基本タグが返す制御メッセージに基づいて判断する時は、このファイルを使う。val が優先タグ {Prior} であればその時点での返答リストを調べ、1つ以上リストに返答があれば探索を中止し、リストの中からランダムに返答する。HeartScript が有効なのは val(基本タグのみ)、resp(拡張タグもOK) で、{EndofData} までのデータが有効。返答が決定した時、消耗有りのファイルでは、val resp の対がメモリ上で削除される(ファイル自体には変化なし)。

データファイルA

前回の人格側の発言とユーザーの入力に基づいて返答を決定。データファイル0に次いで優先度が高い。データファイルA1は消耗有り、A2は消耗無し。

"prev1","inpt1","resp1"
"prev2","inpt2","resp2"
...
"prevn","inptn","respn"
"{EndofData}","{Dummy}","{Dummy}"

prev を半角大文字化した正規表現が前回の返答(基本タグを展開した後の文字列)を半角大文字化した文字列にマッチし、かつ、inpt を半角大文字化した正規表現がユーザーの入力を半角大文字化した文字列にマッチすれば、対応する resp を返答リストに加える。prev が優先タグ {Prior} であればその時点での返答リストを調べ、1つ以上リストに返答があれば探索を中止し、リストの中からランダムに返答する。HeartScript が有効なのは resp(拡張タグもOK) で、{EndofData} までのデータが有効。返答が決定した時、消耗有りのファイルでは、inpt prev resp の対がメモリ上で削除される(ファイル自体には変化なし)。

データファイルB

ユーザーの入力に基づいて返答を決定。データファイル0、Aに次いで優先度が高い。データファイルB1は消耗有り、B2は消耗無し。

"inpt1","resp1"
"inpt2","resp2"
...
"inptn","respn"
"{EndofData}","{Dummy}"

inpt を半角大文字化した正規表現がユーザーの入力を半角大文字化した文字列にマッチすれば、対応する resp を返答リストに加える。inpt が優先タグ {Prior} であればその時点での返答リストを調べ、1つ以上リストに返答があれば探索を中止し、リストの中からランダムに返答する。HeartScript が有効なのは resp(拡張タグもOK) で、{EndofData} までのデータが有効。返答が決定した時、消耗有りのファイルでは、inpt resp の対がメモリ上で削除される(ファイル自体には変化なし)。

データファイルC

データファイル0、A、Bを探索しても返答が見つからなかった場合、このファイル中からランダムに返答する。優先度は最も低い。データファイルC1は消耗有り、C2は消耗無し。

resp1
resp2
...
respn
{EndofData}

有効な resp の中からランダムに選んで返答する。C1ファイルでは、resp が優先タグ {Prior} であればその時点での返答リストを調べ、1つ以上リストに返答があれば探索を中止し、リストの中からランダムに返答する。C2ファイルでは優先タグ {Prior} タグは意味を持たない。HeartScript が有効なのは resp(拡張タグもOK) で、{EndofData} までのデータが有効。返答が決定した時、消耗有りのファイルでは、resp がメモリ上で削除される(ファイル自体には変化なし)。


[ ホーム ]