**文書の過去の版を表示しています。**
目次
これって何?
ゴースト間コミュニケートで変数(数値とか言葉とか)の受け渡しをする
- トークだけではわからない内容を送受信するのが目的です。
- 技術仕様の元ネタは台本トーク(仮)です
- ていうか、ゴースト間I/Fと考えてもいいのかな。
何ができるの?
変数の受け渡しですが、具体的には・・・
- ユーザを差し置いてゴーストだけで内緒話ができる。
- サーフェイスを変えるだけのリアクションに反応できる。
- 「え?」とか「はい?」だけでも何のトークの返信か特定できる。
使うには
ゴーストを改造する必要があります
- 対応ゴーストであれば、「伺か」とゴースト以外に必要なものはありません。
- 複数ゴーストの同時起動が前提となります。
- ゴースト自身がSSTP(本体間のNOTIFY/1.1相当?)を拡張して使い、他のゴーストにトーク以外の追加情報を送ります。
- 追加情報を送られたゴーストは、内容に応じてリアクションを返します
特徴
- トークに追加して送る情報は、基本的に返信を「期待する」だけのものです。
- ゴースト間コミュニケートの規格上に別の通信規格を載せただけです。
課題
- 実装がちょっとめどい。
- 送信する変数の氾濫や不統一がおこりそう
- 複数個の変数がある場合はどうするか
- 複数回のコミュニケートを行う?
- 区切り文字を入れて一度に送信して相手側でsplitしてもらう?
- 複数個の変数送信を禁止する?
- あるいは相手ゴーストの関数呼び出しと考えてもいいけど、どういう仕様がベストか~
- 関数とする場合、別の識別子にした方がいい?
# 発展
テンプレート的会話(キーワードによるトーク)
ある程度お決まりの会話パターンに対して固定のキーワードを用意すれば、相手を問わない「一般的」で妥当な会話ができそう。(「挨拶」とか「ボケ」「ツッコミ」とか)
個別反応への発展(キーワードトークのオーバーライド)
キーワードによる汎用の会話は「ゴースト名」によって個別の反応に分岐できる。
切り替え反応で、個別のゴーストに対する反応を追加するようなもの。
世界観の相違によるキャラ崩れの防止
あらかじめトーク内容のジャンルを変数として受け渡し、返信によって振って欲しくない話題を相手に伝えることができる。 (HTMLのメタ情報で、ボット制御にNOINDEXを指定するみたいなもの)
「外見」などを判断
未知のゴーストであっても、相手が規格に対応していれば、外見上の特徴などの情報が取得できる。 (通常のコミュニケートは、デベロパが見聞きしてこれらの情報を判断し反応を返す)
既存のコミュニケートでリアクション
トークが何か判断を行うのに十分なものだったり、「こんな規格はよくわからん!」って場合は渡された変数なんて無視して普通のコミュニケートを使ってもいいです。
会話のきっかけにはなるだろう。
仕様
送信
SendTo にゴースト名を入れればコミュニケートになる? 詳しい方補足お願いします・・・ 空いてる最初の Reference に JPRadish を、以降の Reference に任意の変数名や値をセットします。
受信
OnCommunicateイベント が発生したとき、Reference に JPRadish を発見したら、以降の Reference 値に応じて分岐なり処理なりします。
大根コミュニケート実装サンプル集
サンプルといえばHelloWorldでしょう。挨拶から。
里々の場合
dic05_Communicate.txtあたりにスクリプトを追加します。
受信
*COMMUNICATE該当なし >コミュ受信(R2) >COMMUNICATE該当なし通常 *COMMUNICATE該当なし通常 :(R0)からの通常コミュニケート。 該当なし。 *コミュ受信JPRadish >大根で(R3) :(R0)から、(R3)だって。 詳細は、(R4)が(R5)だってよ。 :しらん。 *大根で挨拶 :やっはー!! :やっひー!!
送信
*ラベル (変数「隣で起動しているゴースト」の存在) $相手ゴースト名=(隣で起動しているゴースト) $Value0 (相手ゴースト名) $Value1 JPRadish $Value2 挨拶 :おー、元気してるか? (隣で起動しているゴースト)と指定すると、そのまんまゴースト名が入る。~ 起動していない場合は(変数「○○」の存在)で判定する。