2008年2月29日金曜日
llGetInventoryKey はラグに弱い・・・
トラブルの原因はまだわかってなのですが、(たぶん、あるパターンで解放されないことがあると思う)ちょっとそこでわかったことをメモ的に。
オブジェクトのインベントリの中のノートカードとかスクリプトのチェックに llGetInventoryKey を使っていました。
ところが ASUKA だと、この llGetInventoryKey をつかっていたことが「あだ」となって、うまくスクリプトのリセットがかからないことが判明しました。
インベントリの中のアイテムの数が多くなったり、重めの SIM で編集からプリムのインベントリを開くと表示されるまで時間がかかることを経験された方も多いと思います。
そんな中で、if (llGetInventoryKey("NOTECARD") != "") みたいなことをやって存在の有無をチェックすると、軽い SIM なら問題なくても、重めの SIM だと存在しているにもかかわらず NULL と判断されて、エラー発生処理になってしまいました。
ということで、この存在有無チェックは却下しました(笑
これで問題が発生したときはスクリプトのリセットができるようになりましたが、、、
根本的な問題は解決してません・・・・もう少し様子見ですね。
2008年2月27日水曜日
llDialog - Too many listens
Video 玉やダンス玉 (MLDU) などでダイアログを多用しているわけですが、以前のエントリでも書いたように一人で楽しむならあまり問題がない llDialog も、クラブのような大勢の人がタッチする環境になると問題が発生することがあります。
ダイアログから結果を受けとるチャネルの混線なども代表例ですけど、ある日突然ダイアログが表示されなくなって "Too many listens" というエラーが出るのも、大勢の人が使った結果だといえます。有効な Listen の数は 64 個までで、それを超えるとこのエラーがでます。
llListenRemove による Listen の閉じ忘れ、、、なのですが、じゃぁ、llListenRemove を入れれば必ず回避できるか、、、というとそうでもないんです。
それは timer() と複数人対応と「無視 (ignore)」の組み合わせでスクリプトのある llListenRemove が働かないことがあるからなんです。
こういう例があてはまります。
a) アバターA がタッチしてダイアログを表示
b) スクリプトは llSetTimerEvent でダイアログのタイムアウトを設定(無視・長時間放置対応)
c) アバターA がボタンを押す「前に」にアバターBがダイアログをタッチ
d) スクリプトはアバターBにダイアログを表示、「新たに」llSetTimerEvent でタイムアウトを設定
e) アバターAがボタンを押す。llListenRemove でアバターA のListen を削除
f) スクリプトはアバターAによりボタンが押されたので llSetTimerEvent を解除
g) アバターBが「無視」ボタンを押してダイアログを閉じる
h) アバターBの Listen は残り続ける
ひとつのスクリプトで複数アバターに対するダイアログタイムアウトの処理は「ロック」をかけない限り難しいというわけですね。
「ロック」をかけるというのは、だれかがダイアログを開いているとき、違うアバターがボールをタッチしたら「現在このオブジェクトを使っている人がいるのでしばらく待ってからタッチしなおしてください。」というように1時点で1アバターしかダイアログを表示させないようにするわけです。ダイアログのボタンをおして llListenRemove が行われた、または、タイムアウトして llListenRemove が行われた、、、ということができてから、他のアバターがタッチしたらダイアログを表示する、という方法です。
これもひとつの解決方法なのですが、ちょっと悩ましくなるのが「複数ページのダイアログ」をつくった場合、その「ロック」されている時間が長くなる、、、、ということなんです。いわゆる「デッドロック」といわれるものですね。
それが「ビデオ玉」での問題だったんです。ビデオ玉は SL 内で視聴したいビデオをダイアログから選ぶ方式なのですが、ビデオが増えてダイアログのページが複数になると、ダイアログを開いている時間が長くなるので、単純なロック方式では、このデッドロックが発生しやすくなることがわかっていました。
そこで、ASUKA の雷神に新たに設置したニュービデオ玉(試験運用中)は、複数スクリプト方式に変更して、デッドロックを極力さけながら、複数アバター対応、ダイアログ複数ページ対応をしてみました。
といっても「ダンス玉」の応用なんですけどね。基本の処理の流れは以下になります。
a) DialogManager (DM) がタッチを検知
b) DM は DialogSlot(DS) に空があるかチェック
c) DS にあきがあれば、そのDSに対して llMessageLinked でアバターの Key を送信
空がなければ「しばらくお待ちください」を Touch した AV にメッセージを送信
d) DS は受け取った Key に対して llDialog および llSetTimerEvent を実施
e) 他のアバターがタッチすると DM は上記を繰り替えす
f) ボタンが押された、タイムアウトが発生したら、DS は DM に対して処理終了を通知
g) DM は処理中フラグが立っているDSを解放
DialogSlot を3つ用意してみたので、おおよそこれで対応できるかな・・・と思っています。
あと、このニュービデオ玉、llListenRemove は使わず、state change で Listen のクリアを行っています。ダイアログを表示する state と、DialogManager から message を受け取る state をわけています。ボタンがおされた、タイムアウトしたあとで state を変えることでクリアできている、ということです。
たかがダイアログ、されどダイアログ?(笑
[追記]
ガーン、スロット開放されていないし・・・
直します~(だから、試験運用は大切)
2008年2月23日土曜日
GION Experiment
2008年2月19日火曜日
COOL VIDEO!!
いあ、、、あのラグの中でのカメラワークに脱帽・・・
もちろん曲は Yaz Rockett の"Intermission"!
いい仕事してますね~。
2008年2月13日水曜日
どこかで誰かが?
ちょっとした異変がw
CheerDanceのビデオのヒット数がここにきて急増してます、、、。
どこかでなんらかの形で紹介されているようですが、、、msn の仕組みだとわかんないんですよねぇ。
CheerDanceのビデオは、、、これです。
[追記 2009: MSNビデオユーザー投稿サービス終了したので YouTube のものに差し替えています]
Googleでみても・・・それらしいものが見当たらずw
どこでどうなってるんでしょw
2008年2月8日金曜日
MLDU3 の不具合の原因は・・・
あれって、light の radius の表示なんですね。以前、light の radius の範囲の表示の仕方を投稿していたんですが、Nullpo さんとも話しをして、なんかあの白い球体は light の radius の表示に似てない?みたいなことをいわれていました。
で、、、実は昨日 Yaz Rockett 生DJ がゲリラライブ的に ASUKA で行われw
で、ゲリラライブにもかかわらず30人くらいの人がいたのですが、「も、もしや、、、」と思いダンス玉をクリックしてみたら、案の定巨大な白い球体がw
そこで、こっそりと端のほうでプリムを作成してみました。
まずは、light なしの「ベニアだま」を。
そして light をチェックしてみると、、、
およよ・・・、、、、で、視線を引いてみると、、、
なるるー。
スクリプトとか、アニメーションとかは関係なく、light のフィーチャをつけていると、なんらかの条件でラグっぽいときに light の範囲がでちゃうんですね、、、、。
ということでスクリプトのせいではないことがわかっただけでも大収穫かも。
でも、ラグーいところでの現状のスクリプト・リセットに問題(タイミングで処理が不安定)があるのはわかっているので、それを直せば MLDU3 の販売の可能性がでてきました。
あらゆる意味で Yaz さんに感謝w & LINちゃんと、多くのお友達にw
2008年2月3日日曜日
PARADOX
ハット、衣装、小物は B@R (BARE ROSE) で購入したものなんですが、この衣装で PARADOX のイメージが湧いてきました。実は一番最初にL$を使って服を購入したのもB@Rだったりw
ええ、Yaz Mania としては YouTube にも投稿完了です。
ビデオ後半部分で撮影に協力してくれた皆様、ありがとうございます~。
助かりました~。
やっぱりダンスは一人じゃなくて複数で踊ったほうが絵になると、、、
(ナル度が足りないといわれた・・・笑)
[追記]
YouTube だと右下のロゴがくるので、Video内の AGC が完全に潰れることに気がつきました・・・・
次までに何か考えよw
あ、あと、イヤフォンを使って楽曲を聴いたら、、、msn のほうがものすごく音が良いですね~。
はっ!msn のほうはステレオで、YouTube のほうはモノラルになっているみたい。。。
[撮影場所] クラブ雷神 ASUKA sim
[衣装] B@R (BARE ROSE)
[ダンスアニメーション] クラブ雷神 MLDU3 ダンスセレクション by LINZOO Ringo
[MUSIC] Yaz Rockett "PARADOX"
[動画編集ソフト] Windows Movie Maker HD (Vista版)
[エンコード、ロゴオーバーレイ] Microsoft Expression Encoder
[協力] ASUKA Dancers および 来訪者の皆さん