ソラマメブログ › なおなおのブログ › セカンドライフ › センサーって本当に重いですか?

2010年01月09日

センサーって本当に重いですか?

センサーは重いという都市伝説がありますよね。リンデン監修の本にも重いって書いてあります。でも、本当にセンサーって重いんでしょうか?

オブジェクトをセンサーで探そうとすると、最大15000のオブジェクトの位置を調べなければなりませんから、重くなるのは分かります。でも、アバターの位置を調べる場合、アバターの数は最大でも100人です。でも、普通は20人もいないですよね。

距離の計算も、難しい計算は必要なくて、みなさんご存じの通り、r>=sqrt(x*x+y*y+z*z)で計算できます。ここで平方根が出てきますけど、センサー範囲の距離の方をあらかじめ2乗しておいてから比較すれば、r*r>=x*x+y*y+z*zとなって平方根計算もいりません。

たったこれだけの計算で重くなるとか言うのは、リンデンのプログラマがよっぽど効率悪いことをしているのでしょうか?8ビットのマイコンじゃないんだし、意味が分かりません。

センサーって本当に重いですか?


同じカテゴリー(セカンドライフ)の記事画像
USTREAMでライブ中継!
スクリプト診断 llListen編
日本語でチケットを提出できます
アダルト規制の誤解
フルパーミッションになる件
Snowglobeでも影
同じカテゴリー(セカンドライフ)の記事
 自動再配達スクリプト(マーケットプレイス) (2011-12-03 16:43)
 USTREAMでライブ中継! (2010-04-18 01:29)
 スクリプト診断 llListen編 (2010-04-15 23:07)
 日本語でチケットを提出できます (2009-10-15 00:56)
 アダルト規制の誤解 (2009-09-10 20:15)
 ソラマメから大切なお願いとお知らせです (2009-08-27 21:59)

Posted by Naonao Watanabe at 22:07│Comments(4)セカンドライフ
この記事へのコメント
まあそういう作りをしているものをそう探すのなら重くはなさそうに見えるけど、
実際のところどこにどう絡んでるかわかってないと重いのか重くないのかは一概に判断しきれない部分はありますね。
Avatarを探すのにサーバーに割り込みがかかるのかもしれないし、実際中身のコードを見たりしたわけじゃないので重くないよ!とはいえない状況で唯一開発元から重いといわれてるのを尊守するしかないんじゃないでしょうか。

重くなる原因とするとSIMにいるアバターリストをサーバーから引っ張り出して、そのキーから更にアバター情報を引っ張り出してくる過程で単純にPrimを動かして何かをさせるより負荷が高くなるのかもしれません。あくまで想像ですが。

単純にサーバー情報に関わるものは重さを気にするなら避けれるだけさける方向がいいのかもしれません。

まあそうはいってもScriptの世界利便性と能力とのトレードオフでしょうから、負荷に見合うだけの利便性が実現できるならそれは使う側の責任で使うべきだと思います。

レンダリングコストみたいに視覚的な指標が明確に見えると作る側も楽なんですけどねえ・・。

以前Scriptの数で単純に負荷が増える話もされてましたがあれもやっぱりScriptそれぞれにサーバー側から割り込みをかけなきゃいけないのでScriptの数は少ない方がそれだけサーバーに負荷がかからないという話でしょうね。

と、あまり実にもならない話失礼いたしました。
Posted by none at 2010年01月09日 22:46
そんなに重くないと思いますよ~。
リンデンが重くなくっていってるのはLSLはイベント駆動型なのに llSensorRepeatでリピートできるから、1秒とかの短い時間でリピートするスクリプトがSIMにたくさんあると影響があるからじゃないでしょうか・・。

SIMの上部スクリプト取得でみても10秒とかそんな間隔のセンサーがあってもスクリプト時間はそれほとでもないですし~

てか、HUDとかカツラのスクリの方が重いの多い・・・
Posted by Hiro at 2010年01月12日 03:13
1秒,10秒あたりなら多分重くないでしょうねー。
レーダー系とか即時反応タイプのものを作ろうとするとほらあの0.*単位でリピートかけたりするひとがおおいので・・。

多Primの一括ResizeScriptやカラーチェンジScriptは一時ずいぶん問題になりましたね・・・。なんかLSLの方で少し解決策を考えてるとかという噂は聞きましたが。
Posted by none at 2010年01月14日 15:21
気になりましたので調べてみましたが、タイマーでは起こりうる感じですが、センサーではllDetected**()系が見つかった人の数だけ保存される程度で、単一スクリプトで遅くなる傾向は見当たりませんでした。

タイマーイベントでは、特定フレームの状態決定にかかわる実行中または未処理イベントに由来する処理の数(つまり参照先)がだんだん増えていく可能性はあるように思います。(それを示唆するような気配の結果でした。)
タイマーイベント一回の発生よりも処理の方が明らかに遅い場合、後のイベント由来の処理速度はどんどん遅くなっていきます。
どこか限界点でキューの中を捨ててしまう(でしょう)からサーバーは壊れないとは思いますが。。。
Posted by RBKRBK at 2010年02月11日 22:33
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。