ちょっと、奥さん、聞きました? ********** ねー。ひどい話よねぇ。 …何を話してるん? ひ、み、つぅー。
本章では、AIがユーザーからの入力や他のゴーストからの呼びかけに応える仕組み「コミュニケート反応」について扱います。
「何か。(仮)」のコミュニケートボックスにユーザーが入力してくる文字列や、そのほかAIが受け取る様々な文章・言葉に対して、華和梨がどのような反応をするかを記述するには、辞書に次のようなデータ行を書き足します。
["キーワード1" , "キーワード2" , ... ] : 反応文
キーワードは必ずダブルクォーテーション("")で囲う必要があります。
これらは辞書のどこに記述しても構いませんが、ゴーストを作成する場合はghost-(ゴースト名).txtの中に書くのが(礼儀として)よいでしょう。(あるいは、communicate-(ゴースト名).txtなどを作ってもよいかもしれません。)
入力される文字列に「キーワード1」、「キーワード2」、...が含まれていた場合には、華和梨が「反応文」を返します。例をあげます。
["さくら"] : \1は〜し〜れ〜っ\w4こーそくの〜っ\w8\0\s[4]その「さくら」じゃなーい。\e
["さくら"] : \1さくら〜、\w4さくら〜\n\0\s[4]さくら散る…\1なんとっ!\e
["理夢"] : \0\s[0]よんよんっておいしそうだよね?\w8\1意外と${形容詞}かったぞ。\e
["何","話"] : \0\s[0]適当に話すよ?\w8\w8\w8${sentence}
["人工無能"] : \0人工無能っていうな!\e
["さくら" , "うにゅう"] : \0うにゅうが家来!\n\1さくらが家来!\0\w4…え?\e
この例の場合、ユーザーがコミュニケートボックスに「さくらってどうよ?」と書き込めば1行目か2行目の反応が返ってきますし、「何か話して」と書けば4行目の反応が返ってきます(「何を話そうか?」と言っても同じです)。
該当する反応が複数ある場合(例の場合ではキーワード「さくら」)、どの反応が最終的に出力されるかはランダムで決まります。複数のキーワードをまとめて含んでいる文(例の場合では「理夢、何話してるの?」など)が与えられた場合も、どの反応が作動するかはランダムに決まります。
注意:上の例で「さくら、うにゅうのことをどう思う?」と言われた場合、["さくら"]反応の2文と、["さくら","うにゅう"]反応の1文の合計3反応がランダム選択の候補になります。「うにゅう」が追加されているからといって候補が絞り込まれないことに注意してください。
「何か。(仮)」を複数起動して、相互コミュニケーションを行なう場合の設定について説明します。
こちらから他のゴーストに対して話しかける場合は、通常の発言データ中に次のインラインスクリプトを(おまじないのごとく)追加します。
$(set system.communicate "話しかけたいゴースト名")
たとえば、
sentence : $(set system.communicate "華和梨")\0やーい、代用品。\1代用品。\e
という風にすれば、自分以外の「華和梨」という名前のゴーストに対して話しかけることが可能です。(話しかけるには、かならず自分と違う名前のゴーストでなければなりません。これは「何か。(仮)」本体の仕様です。)
(system.communicateとは、話しかけたいゴーストの名前を入れておくシステムエントリです。インラインスクリプトで名前を格納すれば、その名前のゴースト相手に話しかけます。)
他のゴーストから話しかけられたときに反応する反応文は、ユーザーからの話しかけに反応する場合とまったく同じです。相手ゴーストから話しかけられた言葉の中身に反応するべきキーワードがあれば、反応文を相手に対して自動的に返答します。
たとえば、他のゴーストから話しかけられた言葉が「\0ねぇねぇ、理夢についてどう思ってる?\e」だった場合、
["さくら"] : \1は〜し〜れ〜っ\w4こーそくの〜っ\w8\0\s[4]その「さくら」じゃなーい。\e
["さくら"] : \1さくら〜、\w4さくら〜\n\0\s[4]さくら散る…\1なんとっ!\e
["理夢"] : \0\s[0]よんよんっておいしそうだよね?\w8\1意外と${形容詞}かったぞ。\e
["何","話"] : \0\s[0]適当に話すよ?\w8\w8\w8${sentence}
["人工無能"] : \0人工無能っていうな!\e
["さくら" , "うにゅう"] : \0うにゅうが家来!\n\1さくらが家来!\0\w4…え?\e
この例(先ほどと同じです)では["理夢"]の項が該当しますから、「\0\s[0]よんよんって〜かったぞ。\e」と、相手ゴーストに返答します。
デフォルトでは、特に指定のない限り、話しかけてきた相手ゴーストに返答を要求しつづけます。(会話のキャッチボールを止めません。)
これを止めるには、次のインラインスクリプトをおまじないのごとくデータ中に追加します。
$(set system.communicate "stop")
たとえば、
["代用品"] : $(set system.communicate "stop")\1もう、代用品について語り合うのはやめようや。\0疲れたし。\e
とします。これにより、この反応文が読み上げられたとき、その場でキャッチボールが中止され、相手は返答しません。
さらに本格的なゴースト同士の会話(会話の相手やキャッチボール回数に応じて返答を変えたりなど)を実現するには、もうちょっと深いインラインスクリプトの知識が必要です。
注意:Phase0.5β2では、システム関係のエントリ名は「compatible.○○」「system-○○」「event-○○」と"-"を使用していましたが、Phase5から「compatible.○○」「system.○○」「event.○○」のように"."を使用するように変わりました。
このページは、偽Meisterが作成しています。