2008年12月17日
12/06 スクリプターの会の報告

※店主がインフルって寝込んでいたため、激しくまとめが遅れました!
12/06(土)のスクリプターの会と、その前後でカフェにて話されたことなどのまとめです。
wikia側のまとめページはこちらです。
●Monoでのスクリプト空き領域の減り方
このコード領域の確保単位(512バイト単位)で、実行時の領域が本当に減るのかどうかあいまいなところですが、Monoでも実行時には、llGetFreeMemoryがおよそゼロになる操作を行うところでstack-heap collisionになることから、スクリプトコードが確保する512バイト単位の領域は、完全に使用できない領域になっていると思われます。
これ、「たった512バイトじゃん」と思えるかもしれませんが、大きなスクリプとを書いていると、Monoで利用できる64キロバイトなんてあっという間に使い切ってしまいます。
もしスクリプトコードが512バイト境界をちょっとはみ出した程度のサイズだったとすると、500バイト程度、無駄な領域として消費されてしまっているかもしれません。
この部分、まだ調査しきれていないので、継続調査したいと思っています。
●Monoでローカルスコープの文字列リテラル
これも上のメモリ領域の話と関連しますが、Monoの場合、文字列リテラルをコードに書いた場合、同じ文字列リテラルは1つの実体にコンパイラがまとめてくれているようです。
したがって、同じ文字列リテラルをコード中に何度も書いても、メモリ領域の無駄にはなっていません。
# Fakeさん曰く、「ようやく普通のプログラミング言語のコンパイラに近づいたというだけ・・」
また、これもまだ継続調査中ですが、グローバル変数で定義した文字列を何度も使うよりも、直接文字列リテラルをコードに記述した方が、コード領域のメモリ使用量が少なかったです。
この部分は、CLRのランタイム形式の仕様なども合わせて検証する必要がありそうです・・・・。
●オブジェクトのサイズ変更スクリプトでの注意
最近では、製品のサイズを直接エディットモードで変更するのではなく、スクリプトで変更させるものがスタンダードになってきていると思います。
サイズ変更の処理そのものは、あまり難しいものではないのですが、今回ネタにしたような誤差などの問題、サイズ制限の問題のほか、そもそもどういったインターフェイスでサイズ変更させるのかといったことや、サイズ変更処理をすべての子プリムに入れるのか、といったあたりでいろいろ悩むことはたくさんありそうです。
●スクリプトでテクスチャのUUIDを取得する場合の注意
テクスチャやスカルプマップのUUIDがスクリプトで抜けるか?というと、ほとんどの場合はNGなのですが、オブジェクトをフルパーミッションで配布している場合は注意が必要ですね。
また同じような理由で、no modのスクリプトの中にテクスチャのUUIDを隠していたとしても、スクリプトそのものがフルパーミッションのオブジェクトに入っている場合は、別のスクリプトを入れることでそのUUIDを取得できてしまいます。
※そもそもテクスチャのUUIDなんてk(ry
一応テクスチャのUUID抜きは保護されているとはいえ、配布方法なども含めていろいろなケースを想定しないといけなくて厄介ですね・・・。
スクリプターズカフェのオフィスアワー(スクリプターの会)は、毎週土曜日の22時から、New Script SIMの手裏剣カフェで開催しています。
その他の曜日も営業時間に質問などを受け付けています。
スクリプトの質問のある方や、自分のスクリプトをテストしたい方など、どなたでもお気軽にお立ち寄りください!
Scripters Cafe(wikia)
Scripters Cafeへテレポート
2008年12月06日
11/29 スクリプターの会の報告

11/29(土)に行われたスクリプターの会のまとめです。
今回はひたすら物理遊具を調整したり、アレコレ妙な物理オブジェクトを作ったりしていました。
→wikia側のまとめページはこちらです。
●物理プリムにllTargetOmega
これまでに何度か話題にしているのですが、まとめとして記事にしていなかったので今回追加しました。
ちなみに店主は「自分で使ったことがない挙動のネタはスグに忘れる」ということもあり、このllTargetOmegaの話もアルツな状態でした・・・。(Nullpoさんに毎回ツッコまれているようです)
●物理回転遊具
ametaさんから「物理プリムで遊んでいた」という話があり、遊具みたいなものもできるのでは?という話からその場で作ってみました。
ものすごい勢いで動かすとスグにちぎれますが、ゆるーく動かす程度なら、遊具として結構いい感じな動きをします。
上手く出来たら New Script に常設でもしようかと思いましたが、ちぎれてしまうのはおそらく防げないので、ちぎれたら元に戻るような仕組みも入れておく必要がありそうですね。
●汎用的な数値入力インターフェイス
これはおそらく難しいものではありませんし、既にいろいろな実装もありそうです。
(Wiki の Script Library にあるかもしれません。。。 調べていませんw)
最近みなさん忙しいのか、土曜日のスクリプターの会もまったり率が高くなっていますので、そんな時にこのモジュールでも作ってみたいと思います。
スクリプターズカフェのオフィスアワー(スクリプターの会)は、毎週土曜日の22時から、New Script SIMの手裏剣カフェで開催しています。
その他の曜日も営業時間に質問などを受け付けています。
スクリプトの質問のある方や、自分のスクリプトをテストしたい方など、どなたでもお気軽にお立ち寄りください!
Scripters Cafe(wikia)
Scripters Cafeへテレポート