2008年8月10日日曜日

ブラソニのアイテムチャットキャンプ

ブラソニで使用したスクリプト一般向けにちょと書き直しました。


BLACKSONIC2008で作ったアイテムチャットキャンプスクリプト販売しましたー><
しかしブラソニはSIMが2回落ちるほど大盛況だったので、さすがに心配で
ずーとこのスクリプトに張り付いて監視していたので。
今回の一般販売に向けてはSIMの状態を監視して、高負荷の時には
最低限必要なチェック機能で動くモードを作って一般販売しましたー><

というのは、どうもSIMが高負荷になるとアセットサーバに問い合わせするような関数は
まともに動かなくなるようでw、ノートカード読み取りとかすっごい時間がかかる><
なのでそんな関数はそういうときには使わない、また最初から使わないで済みそうなところは
使わないように書き直しました><
チャットキャンプということでどおしてもチャットに対して0ちゃんねるのリスンを開けて
聞き耳を立ててあげなければならないのですが、そこら辺もどおやって軽く動くようにするのか
悩みに悩んで作り上げた作品です。
*と言ってもブラソニ1日目でSIMFPSが0!!を出すようなとんでもないイベントだったので
そこでいろんな発見をして2日目に負荷対策もっとしてしっかり動くように出来たというかんじだけど;;

ということなのですが、今回の作品は海外の人に説明するのは私の語学能力では絶対ムリなので;;
日本でイベントをするとき必要ならば使ってねw
という感じでの日本語使用前提だけのリリースで><
なので・・・新作発表はBloggreで書くことにしていたのですが、
今回はソラマメさんで発表です><

ということで簡単な・・・説明書をここに書いておきます・・・
*全然簡単じゃない;;


オーナーさんがこんなダイアログでいろんな操作できるようにしました

これはオーナーさんに出すダイアログですが
設定?うーむぅースイッチ?でいろいろできるようにしてあります。

****************説明書*************
オーナーさまは中にあるSetting.confというノートカードを書き換えることで
アイテム配布に必要な候補者リスト登録文字数、候補者リスト登録までの時間、
抽選をする時間(アイテム配布イベント)の時間を設定することが出来ます。

*候補者リスト登録とは最低限の必要な時間及び必要な文字数を設定し
それに該当しないアバターにはアイテムを当選させる必要がないと言う足切り設定です。
*抽選をする時間とはこの時間(分)の間隔で候補者リストをシャッフルして
当選者を抽選し、かつ内部のアイテムをランダムに選び
当選者に与えるというイベントを発生させる時間の間隔です。
*配布アイテムをコピー不可にすれば、アイテムを順々減らして配布できます。
コピー可能ならば常にランダムで中のアイテムを配布します。


初期の設定では20文字を5分以上の間を開けてチャット入力したアバター
に対して、10分ごとにアイテム抽選会を行うと言う設定になっています。
これを例とすると以下の流れでアイテムを配布いたします。
(ノートを書き換えることによりオーナーさまの好きな時間、文字数設定が出来ます。)
1:00 キャンプスタート
1:01 Aアバターが5文字チャットで発言する。
1:02 Aアバターが6文字チャットで発言する。
1:04 Aアバターが6文字チャットで発言する。
1:07 Aアバターが4文字チャットで発言する。
(この時点で抽選権がAアバターに与えられたとIMします。*6分の時間に21文字発言したため。)
1:10 抽選会をスタートしキーワードを発表します。キーワード入力時間は1分です。
(この時点で抽選権を保持しているアバターから当選者の選出を致します。)
1:11 1分の間に当選者が答えを入力しなければ、再抽選をします。
(再抽選は抽選権獲得者が居なくなるか、もしくは居ても3回まで自動で行われます。)
1:11 当選者がキーワードを答えたらアイテムを渡し、今までの抽選権をすべて無効にし
新たに再スタートします。

またMessagecardという名のノートカードにお好きな文章を書き込むことにより
その文章がアイテム当選者のキーワードとなります。
そして当選者を記憶していくので、オーナーさんがリストのクリア作業をしない限り
一度アイテムを受け取った方はもうこのアイテムキャンプに参加することは出来ないのでイベントに参加していただいた方にまんべんなくアイテム配布することが可能です。

*このスクリプトはSIMの状態を監視しています。
あまりにSIMが重い場合は確認イベントを勝手に最適化し
時間通りに動くように書いてあります。
SIMが重たくなると確認作業を飛ばして設定したキャンプの時間を優先して
動くようになっていますので、その場合にすでに立ち去ったアバターを
当選者に選んでしまうことがあります。
しかし再抽選イベントがこのスクリプトにはありますので
定刻通りにアイテムを配布していきます。

本体は2プリム 候補者受付中はグリーン、候補者リストに登録があればレッド
候補者の受付完了及び多人数が登録されればブルー、再抽選イベント時はイエローで
インジケータが発光します。またオーナー様はSTATEというダイアログのボタンで
詳細な情報をいつでも見ることが出来ます。

マイクは2プリム、SIMの高負荷を感知してモード変更した場合は、
横のロゴがレッドに代わりますので、一目見てどのモードでスクリプトが走っているのか
わかるようになっています。
*********************************************

ということなのですが、これだけで書ききれていません;;
あとはもう個別の質問を対応するしかないかも><

以下苦労ばなしー



結局チャットキャンプでアイテムを配布って意外とめんどくさい仕組みを色々作ってあげなければ
ならないのです><
たとえば・・・
☆まずシャウトした人はどする?
20mごとにマイクを設置しないと普通のSayのチャットに対応できません。
でもただ聞き耳立てているだけだとシャウトで20mごと置いたマイクがすべて反応しちゃいます><
なのでこのマイクにセンサーイベントを入れてはあるのですが、
高負荷の時には結構迷惑なスクリプトになっちゃうので、その時はセンサーイベントしないようにしてます。
それ以外にもプリム間通信で大きなデータ扱いたくないのでここでちょっとひとくふう・・・
☆抽選する権利を手に入れた人がどっかにいっちゃった!
のために最後にセンサーイベントが必要なのですがこれも負荷が高いときに飛ばすようにしちゃいました・・・
☆当選してるのにAFKですー><
このためにキーワードを答える仕組みにしました><
☆抽選権利のリストがいっぱいになっちゃうよぉ;;
一回当選者が出るとリセットすることにしてきれいになくしちゃおう><
etc 
なんか結構めんどーな事が多くて、1時間くらいで大まかなスクリプトは書いちゃったのですが
あれ?こういうときはあーいうときは?でなんどもなんどもスクリプトをいぢくって
これで完成!というのは結局ブラソニ2日目でした;;
他にもこれは本番で動かさなきゃわかんないよぉ;;
というのも何個かあったのですが、それはノウハウかなぁって事で内緒にしときますw

0 件のコメント:

コメントを投稿