好感度に関するTIPS。
好感度の解釈や使い方は作者によって大きく変わりますが、
基本的には「特定の分岐を行う変数」という点で共通しています。
このページでは、これらの分岐用変数として関係のあるもの全般を扱います。
ユーザとキャラクターの間の相互関係を数値化したもの。
ゴーストにおいては、一定値の基準を設けて、条件を満たしていればトークが変化したり、イベントを発生させたりする等が一般的です。
好感度以外で同様に分岐に用いられる変数としては、起動時間や起動回数、頭をなでた回数、トークした回数などが挙げられます。
また、これらをひっくるめて好感度として扱うゴーストもいます。
好感度はゴースト作者が作成し、管理します。なので、satori_conf.txtなどに、
$好感度【タブ】0
のような変数を作り、これを
*0Headなでられ $好感度=(好感度)+1 >胸なで反応
*0Bustなでられ $好感度=(好感度)-10 >胸なで反応
といった形で適宜増減を行っていきます。
数値はキャラクターの性格に合わせて、好感度が増えやすい・減りやすいなどを設定しましょう。
ちなみに好感度を減算でなく除算を用いると、元の好感度が高いほどガクンと低下するかわりに数値がマイナスにならなくなります。
増減させた好感度を、分岐に利用する例。
*0Headつつかれ >頭つつかれ高好感度【タブ】(好感度)>90 :痛っ! この野郎、何すんだよっ!
1行目は、「0」がさくら側であること、
「Headつつかれ」がHeadという部分をつつかれたことを指します。
2行目は、変数「好感度」の値が90より大きい場合、
「頭つつかれ高好感度」という項目へジャンプするということを指します。
3行目は、2行目の条件を満たしていない場合(「好感度」の値が90以下)、
さくら側が喋る台詞です。
変数「好感度」の低さに対応した台詞を入れておきます。
*頭つつかれ高好感度 :痛いからやめてよ・・・ね?
2行目はさくら側が喋る台詞です。
こちらには、変数「好感度」の高さに対応した台詞を入れておきます。
撫で反応に好感度を対応させる場合も、やり方は同じ。
「*0Headつつかれ」を「*0Headなでられ」に、
「*頭つつかれ高好感度」を適当な名前の項目に変えればOKです。
ここまでの例はマウス反応ですが、当然ながらどこで増減するかは自由です。
頭をなでても全く増えない、又は胸を触っても全く減らないゴーストもいるくらい。
一定値以上になったり、特定のイベントを経ると、好感度数値が減りにくくなるゴーストも多いです。
一般的に好感度を「ユーザとの信頼関係」として扱う場合、キャラクターが喜ぶような事をすると増加するということで、マウス反応以外で一例を挙げます。
増減する機会の数や頻度はそこそこ気を配りましょう。性格設定と照らし合わせて調整。
ただ、減る機会が多過ぎると使う側が気軽に立たせにくくなるデメリットがあります。やりすぎには注意。
好感度を減算していると、当然ながら数値はマイナスになります。
0以下の数値で発生するデメリットは乗算・除算時以外には特にありませんが、意図的に防ぎたい場合は特定のタイミングで是正するのが基本になります。上限を設定する時もこれと同じです。
$好感度=(when,(好感度)<0,0,(好感度))
これで、好感度が0未満の時は0に是正。
実行する箇所は、起動時や終了時が一番楽。
下限の値に、起動回数や起動時間を使う。
「長く付き合っていれば復帰が早くなる」等を表現したい場合に。
$好感度=(when,(好感度)<(起動回数)×3,(起動回数)×3,(好感度))
面倒…もとい複雑になるので趣味の域になりますが、好感度が変化するたびにマイナスでないかチェックしたい時はcall関数を使うといいでしょう。
*使い方例トーク :(call,好感度変化,-100)好感度が下がった! @好感度変化 ( set,好感度,(好感度)+(A0) )( when,(好感度)<0,(set,好感度,0) )
処理を色々噛ませることでさらに複雑怪奇にする事もできます。
例えば…
*使い方例トーク :(call,好感度変化,50)好感度アップ! @係数 (calc,(起動回数)+(累計時)) @好感度変化 ( when,(A0)>0,( set,好感度,(calc,(好感度)+(A0)×(100+(係数))÷100) ),( set,好感度,(calc,(好感度)+(A0)×(100-(係数))÷100) ) )( when,(好感度)<0,(set,好感度,0) )
これは長く付き合っている(起動時間や起動回数が多い)とき、好感度が増えやすく減りにくくなるというのを表現したもの。
この例では起動回数が10のとき、好感度の上昇量は110%に増え、低下量は90%に抑えられます。
(つまり *使い方例トーク を実行すると 55 増える)。
普通、好感度を導入すると「好感度が一定値以上のときは○○する」というギミックを作ります。
しかし何も考えずに (好感度)>100 といった条件式をあちこちに書いてしまうと、
ふとした時に「数字をもうちょっと増やそう」と思いついた時には後の祭り。
辞書全部を洗い出して修正するハメになります。
そうなる前に、好感度の条件式は単語群にしてしまうと便利です。
@好感度チェック (calc、(好感度)>500) *0Handつつかれ >好感度が足りてる【タブ】(好感度チェック) >好感度が足りない *好感度が足りてる :デスクトップでゴーストと握手! *好感度が足りない :気安く触るな。
こうしておけば後は(好感度チェック)をいくら辞書内に増やしても、数字は @好感度チェック だけ修正するだけで済みます。
好感度が100以上の時、500以上の時…と複数の条件にしたい時は、単語群の演算をちょっと強化します。
callは使っていませんがこれも立派な自作関数です。
@好感度チェック (iflist,(好感度)>=,500,高,100,中,低) *0Handつつかれ >つつかれ分岐_(好感度チェック) *つつかれ分岐_高 :デスクトップでゴーストと握手! *つつかれ分岐_中 :うん?手が気になる? *つつかれ分岐_低 :気安く触るな。
好感度に分類される変数は、単体での運用でも構いません。
しかし、より複雑な条件を作成したい場合、予め様々な変数を作っておく必要があります。
そこで、使う予定のあるなしに関わらず、様々なイベントで回数を計測しておくことをオススメします。カウントしておいた変数は、「当面使う予定がない」と思っていても意外な所で役に立つものですし、必要に迫られて後で追加するほど計測効果が薄くなってしまうからです。
最小化した回数をカウントしておいて、ちょっとしたトークで分岐したり……
シェル変更回数が多いときは追加シェルを自動でダウンロードしてきたり……
考え方次第でいくらでも利用できます。
好感度以外、または好感度として運用しやすいもの。
条件に好感度だけでなく、複数の変数を組み合わせているゴーストは非常に多いです。
好感度の増減する基準値に使用する手もあります(起動回数が多いほど好感度が増えやすくなる等)。