* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
浮子屋商店もよろしく。

自作ゴースト/Hand/コミュニケーション連鎖

Top > 自作ゴースト > Hand > コミュニケーション連鎖

ヴィイとHandのコラボレーション まとめ

ヴィイとHandで、コミュの応酬によって短いストーリーを形成する実験をしてみました。
ここは、それを行なった際の技術的/運用的な要素を簡単にまとめたものです。
同じような事をやる方の参考になれば。

技術面

コミュの応酬を行うには、互いにキーワードを決めて反応しあうのが最も簡単だと思いますが、 キーワードだと誤爆したり、後から台詞の変更が効かなかったり、という問題があります。

そこで、今回の実験では、互いの台詞に番号を振って、コミュの際にその番号も同時に伝えることで、 決められた台本を順番に喋っていくようにしました。

つまりイメージとしては、

ヴィイ「こんにちは。」台詞番号=1

こんなコミュがヴィイ→Handに渡ると、Handは台詞番号を見て次の台詞を喋ります。

Hand「なんだ、ヴィイか。」台詞番号=2

そしてこれを見たヴィイが3番の台詞を…といった形で連鎖が続くわけです。
勿論、台詞番号の部分はユーザには見えません。

実際の実装がどのようになっているかは、以下に里々(ヴィイ)とAYA(Hand)でのコードを挙げておきます。

しくみ

お互いに、「これは特別トークなんだ」というのが分かるように、 番号の他に、「viiandhand-1」という特別な変数を渡しています。

最初の発言;

Value: トーク
Reference0: ゴースト名(通常コミュ規格)
Reference1: viiandhand-1 (特別変数)
Reference2: 1(特別変数-会話番号、1つずつ増やす)

このSHIORIレスポンスが相手にはこう届く;

Reference0: ゴースト名(通常コミュ規格)
Reference1: トーク(通常コミュ規格)
Reference2: viiandhand-1 (特別変数)
Reference3: 1(特別変数-会話番号、1つずつ増やす)

届いたメッセージを見て相手はこう返す;

Value: トーク
Reference0: ゴースト名(通常コミュ規格)
Reference1: viiandhand-1 (特別変数)
Reference2: 2

以下、くりかえし

AYAの場合

OnCommunicate
{
  if reference0 == 'user' || reference0 == 'User' {
    '\t\v\1\s[10]\0\s[7]うるせえ、今お楽しみ中なんだ。\e'
  }else{
    case reference2 {
      when 'viiandhand-1' {
        SPCOM_viiandhand1();
      }
      others{
        //---- ゴーストからの話しかけ
        ReplyToGhost();
      }
    }
  }
}

SPCOM_viiandhand1{
  res_reference0 = reference0 //ghostname
  res_reference1 = reference2 //viiandhand-1 
  res_reference2 = reference3 + 1 
  
  case res_reference2 {
    when   2 {'\w9\v\1\s[10]\0\s[7]なんだよヴィイ、\w5元気ねえな。(略)'}
    when   4 {'\w9\v\1\s[10]\0\s[7]さてはッ!!(略)'}
    //
    // 以下省略、2,4,6,8…と続く
    //
    others{
    //知らない番号が来たら終わる
      res_reference0 = ''
      res_reference1 = ''
      res_reference2 = ''
    }
  }
}

里々の場合

*OnCommunicate
>ヴィイとHand1  (compare,(R2),viiandhand-1)
≫(R0)「(R1)」
>(R0)より該当なし
>COMMUNICATE該当なし


*ヴィイとHand1
$Value0  Hand
$Value1  viiandhand-1
$会話番号  (zen2han,(calc,(R3)+1))
$Value2  (会話番号)
>ヴィイとHand1会話(会話番号)
>ヴィイとHand該当なし

*ヴィイとHand1会話1
$Value0  Hand
$Value1  viiandhand-1
$Value2  1
:(3)はあ……。\w9\n[half]
(6)……ねえ(ユーザ名)、唐突で悪いけど、(略)

*ヴィイとHand1会話3
$Handと会話中  1
:(0)\w5(7)そんないやらしい手のマッサージはいらないっ。\w9\n[half]

(以下省略、「ヴィイとHand1会話5」、「ヴィイとHand1会話7」…と続く)

運用面

この実験は1人ではなく、2人以上のゴースト作者が協力しあう必要があります。
よって、コラボレーションを行うにあたっては、意思疎通をどのように行うかが肝心となります。

今回は、いつでも見れて推敲可能、という利点を考慮して、意思疎通にはwikiを使いました。
ネタバレの部分は削りますが、ざっと以下のような隠し wiki ページを作成し、 お互いでどんどんコメントや推敲を行っていった形です。

wikiページの例(一部抜粋)

【ヴィイとHandの会話】

1ヴィイ(憂い顔。Handの方を伺う感じ)はあ……。(間)……ねえ(ユーザ名)(略)
2Handなんだよヴィイ、元気ねえな。(略)
3ヴィイそんないやらしい手のマッサージはいらないっ。(略)

(以下、コメントで互いの台詞の調整を行いました)

【システム面】

■発動方法

  • 通常コミュの一部(通常コミュのどれか1つが発動キーになってるとか)
    • 誰も気づかないかも
  • どっちか(或いは両方)のメニューに「○○と話す」とかの項目を追加
    • これなら気づくかな
    • この方式に賛成。イベント感を高める効果もありそう
    • じゃあこれで行ってみましょう。

■発動中

  • 普通のランダムトークが混ざらないよう抑止したほうがいいかも
    • フラグか何か立てて、フラグ立ってる間はランダムトーク抑止とか
    • コミュ途中で終わったらフラグ立ちっぱなしになるので、ゴーストの起動/終了時等にフラグリセットしないと
    • 抑止には同意。ヴィイの方はユーザからの操作があった時点で共通の処理を呼んでいるので、そこにフラグリセットを入れておこうかと
  • 少なくともHandの触り・必殺技は抑止

■会話ネタ

  • とりあえずセクハラ
    • ヴィイの経験(何の?)についてのぶっちゃけトーク。
    • または普段はできないようなアレ。
  • 他のゴーストについての雑談
    • Handにとって魅力的なゴーストとヴィイにとって魅力的なゴーストの違いとか。

(以下、互いに*1アイデア出し。)


*1 といっても殆どウエ紙様がアイデアを出してくださったのですが

このページの最終更新日: 2006/11/26 13:36:13 JST (3805d)
このページのトラックバックURL: http://ukiya.sakura.ne.jp/index.php?tb_id=f65eadbdd1c44469d7292e3adbd70668