ゴースト間通信の拡張提案†
このドキュメントでは、ゴースト間の通信を拡張する方式について妄想を記載します。
コンセプト†
- 今立ってる別のゴーストに、任意の情報の問合せを行う仕組み
- セーブデータを読まないで、今立ってるゴーストの情報をリアルタイムで取得する
- ただし相手のゴーストが公開している情報に限る
現在のゴースト間通信方法†
- コミュ - コミュのタイミングでしかできない。Ref.2以降を使えば好きな情報のやり取りが可能。ユーザに知られずに通信することは難しい。
- DirectSSTP - お互いにイベントの取り決めが必要。好きな情報のやり取りが可能。好きなタイミングでユーザに知られずに通信可能。SAORIを使う必要があり面倒。
拡張方式の提案†
- 現在起動中の別のゴーストに対し問合せを行うことのできる方式。
- ゴーストA(発信側)がゴーストB(受信側)に問合せを行うものとする。
- ゴーストAは、\![queryotherghost,foo,bar...] タグによって発信を開始する。
- ベースウェアはゴーストAのさくらスクリプト内にそのタグを発見した際、さくらスクリプトの処理を一時停止し、以下の動作を行う。
- ゴーストBのSHIORIに対し OnQueryOtherGhost イベントを発生させる。
- その際のRef.はゴーストAがタグ内に記載した引数。複数可能。
- ゴーストBはOnQueryOtherGhost内で(必要に応じRef.を参照して)返答を返す。
- その返答はベースウェアが処理するのではなくゴーストAに渡される。
- ゴーストAに対し OnQueryResult イベントを発行する。Ref.はゴーストBのOnQueryOhterGhostのSHIORI戻り値。
- ゴーストAはOnQueryResultイベントを処理する。
- OnQueryResultで何か値を戻した場合、それは\![queryotherghost]の位置にあったものとしてベースウェアに処理される。
- 上記の処理が終わると、停止していたスクリプトの処理が再開される。
- これは\![raise,...]と同様の動作を意図している
下に模式図を示す。
&attachref(./shiori.png,zoom,400x400,模式図);
本方式によってできること†
- タグ1個で、好きなタイミングに、他のゴーストと情報のやりとりができます。
- 標準的な問合せの引数を決めておくことで、汎用的に使うことができます。
- セーブデータ読み取り等の方法を用いずに、他のゴーストの動作情報を取得できます。
- 当然、他のゴーストが OnQueryOtherGhost に対応しており、公開しようと思っている情報しか公開されません。
- 例えば好感度を見て、「○○さんがユーザの事~って言ってたよ」とか。
本方式によってできないこと†
- 起動中のSHIORIに対して問合せを行う方式であり、起動していないゴーストの情報は取れません。
- 他のゴーストに任意のイベントを起こさせる(例えば、OnMouseMoveイベントを起こさせて触られたと誤解させる)ものではありません。
- 上記は現在 DirectSSTPを使うことで可能です。
- \![raiseotherghost,hogehoge...] みたいなタグで、他のゴーストのSHIORIに任意のイベントを発生させることが出来ても面白いかもしれません。
- いずれにせよこのドキュメントの話とはずれますが。
こめとん†
- 起動してないゴーストに対するリクエストを、SHIORIの一時起動等で受けられるだろうか? -- 浮子屋
- ↑これはかなりムリ。 -- 浮子屋