ソラマメブログ

2008年08月26日

スクリプトの仕様変更

<この記事の中段に追記があります>

ここ数日のうちに「Self Portrait Studio」の不具合報告が数件届きました。
(以下、SPSと略します。)

その不具合報告の内容から、「SIMが重いことが原因なのでは?」と推測していたのですが
同じ不具合が発生している知人に協力してもらって原因を探ってみたところ、どうやら別の原因が
あることに気づきました。

ちなみに、SIMが重くなる要因は、

 1、高解像度のテクスチャが多用されている
 2、llSensor、llListenなどのスクリプトを常時複数使用している
 3、プリム削減系のスクリプトを多用している
 4、SIM全体に作用するレーダー等のスクリプトを複数使用している
 5、SIM全体のプリム数が上限に近い

など、様々です。
1~3は上空などに飛んで負荷原因から離れてしまうことで重さを回避できますが、
4,5はSIM全体に影響を及ぼすようです。
(きちんと検証したわけではないので、断言はできませんが。)
で、今回は4あたりが原因ではなかろうか・・・と最初は考えていたわけです。

ところが、知人に不具合が発生したというSPS本体を工房に持ってきてもらってREZして
テストしたところ、なぜかそのSPS本体だけに不具合が発生します。
不具合の症状は以下のとおり。

 1、SPSをFull状態にしようとしても、円筒パーツなどが最大化されない。
 2、Full状態のSPSの方向を変えようとしても、円筒パーツが正しい方向を向かない。
 3、この不具合が発生したSPSをTAKEし、再REZしても壊れたまま。
 4、リセットコマンドを使っても直らない。

さらに調べてみると、不具合が発生するものとそうでないものの違いは、どうやら中に追加された
ポーズの数のようです。
(不具合報告をしてくれた人数名に確認したところ、ポーズの総数が90~100個程度でした。)
この不具合をとりあえず直す方法は以下のとおりです。

 1、不具合の発生したSPSから、新しくREZしたSPSに追加したポーズを移す。
 2、ポーズを減らして、1の作業ももう一度行う。

90個ポーズを入れたSPSの不具合は「1」だけで直ったようですが、それでも直らない場合は
「2」を試してみてください。

=============================
<追記8/26 その2>
「ポーズ数を減らしてある」という人からも不具合が発生したという報告がありました。
その人は以前は特に問題なく使用できていたそうです。
=============================


しかし、なぜここ数日に集中して不具合が発生したのでしょう^^;?

私はもうずいぶん長い間SLに関する最新情報を収集していなかったので知らなかったのですが、
8月20日にLSLを走らせるための新シミュレータ「MONO」がサーバに導入されたとのこと。
もしかするとこの新シミュレータが今回の不具合に関連あるかもしれません。
(現時点では情報が少なすぎて判断できません^^;)

=============================
<追記8/26 その1>
この件について調べるために他の方のブログを拝見していたら、どうやら今回のMONO導入に
先駆けて、8月初頭前後にLSLシミュレータの仕様が微妙に変更されていたようです。
↓のブログでの症状とも合致する部分が多いので、やはり仕様変更が不具合の原因となっている
可能性が高そうです。

SECOND LIFEのカラサワギ 「LSL仕様変更でエラー・・・(8/7)」
http://reiko2007.slmame.com/c1084.html
=============================



MONOに関する日本語情報は↓をご覧ください。
http://wiki.secondlife.com/wiki/Mono/ja

MONOは従来のLSLシミュレータと比較して、最大220倍も高速化され、
また、ひとつのスクリプトで利用可能なメモリも64kbにまで引き上げられたということなので、
MONOに対応したツールが実装された1.21RCヴューアの配布が始まったら、
SPS等の処理速度を重視する製品を順次対応させていこうと考えています。

=============================
<追記8/26 その3>
ベータグリッド用のヴューア1.21を使ってメイングリッドにログインすることで、現時点でも
MONO用にスクリプトをコンパイルすることが可能なようです。

ガ民通信 「GALONGE に Mono が適用されました(8/26)」
http://galonge.slmame.com/e347740.html

<追記8/26 その4>
ベータグリッド用のヴューア1.21を使ってメイングリッドにログインしてみましたが、
まだすべてのSIMにMONOシミュレータが導入されているわけではなく、未導入のSIM上では
MONOへのコンパイルもできないようです。
また、不具合が発生したSIMとそうでないSIMともに、MONOが実装されたSLサーバ1.24
ではなく1.23だったこともわかりました。
このことから、MONO導入そのものが問題なのではなく、MONO導入に先駆けて行われたLSLの
仕様変更が原因である可能性が高まりました。
どちらにしても、処理速度を重視する製品の場合はMONOへの移行が必要になると思われますので
全SIMにMONOが普及したと思われる時点(おそらくRCヴューアのバージョンが1.21になったとき)
にあらためて動作の再検討を行う必要がありそうです。
=============================



余談(?)ですが、現在配布されている公式ヴューアから、スクリプトでのグロウ効果の制御が
正式導入されたようです。


同じカテゴリー(LSL)の記事画像
llGetOwnerとstate_entry()の罠
同じカテゴリー(LSL)の記事
 スクリプトの仕様変更:今後の方針 (2008-08-26 14:52)
 llResetScript()とか (2007-10-05 21:17)
 llGetOwnerとstate_entry()の罠 (2007-08-23 05:34)

Posted by VoidLing at 03:19│Comments(0)LSL
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。