Filesなどが書き込み禁止になるというもの。MS推奨的にはユーザごとに異なるデータはAppDataに入れよ,とのことなんだろうが,フリーソフトとしてはアンインストールが面倒になるので辛い。市販ソフトは普通アンインストーラがあるのでMS推奨通りにやればいいんだろうけど,フリーソフトはたいていデスクトップとかドキュメントフォルダにダウンロードしてその場で展開,いらなかったらそのまま削除,といった手順になると思う。設定をAppDataに入れてしまうと,まずデータを消してからプログラムを削除になって面倒になる。Filesなどに入っていたら設定は書き込まない方針で実装中。Vistaに仮想化されて変な場所にファイルができたり,ファイルに書き込めなくて落ちるといったことだけはないようにする,と。インストーラのないフリーソフトのためのもっといい方法はないのかなあ。アプリケーションごとに(というかカーネルオブジェクトごとに)権限が決められていて,自分より高い権限には手出しできないというもの。これに影響を受けるのは...ロビーの自動退席機能。ロビーを起動しておいて,例えば1分間マウス,キーボード操作がなかったら状態が「退席」になるという機能だが,UIPIによって,ロビーを起動中に管理者権限のアプリケーションで作業をしていると,マウス,キーボード操作をしていても「退席」になってしまう。対策するとしたらどうやるんだ。電子署名とManifestでいいようなことも書いてあったりするけど,フリーソフトで電子署名は無理っぽいし,マウスとキーボードドライバでも書くしかないのか。64bitだとドライバにも電子署名必須だし。ことで現状こういう制限にするしかないと。ウィンドウサイズの変更サポートとズーム機能の改善をしてみた。今使っているノートは画面が1920×1200となかなか広い。この画面でさすがに640×480はないよなあ,ということでウィンドウサイズを動的に変更できるようにして,さらに設定保存できるようにした。画面を広くしたらオブジェクトがでかすぎたりするようになったので,ズーム機能を改善することに。今まではカメラのパラメータをいじって無理矢理拡大,縮小してたのだが,やりすぎると画面が歪んでしまう。そこで,オブジェクトの方を拡大,縮小するようにして自然な感じにした。ついでに,現バージョンでは影が真っ黒になっていたので半透明にした。趣味プログラミングはエンハンスするときにがんがんリファクタリングできるのがいい。機能を加えるたびにコードがすっきりしていっている気がする。これが仕事だったら怖くてリファクタリングできないからどんどんコードが汚くなっていくという。Testerを試してもらったが,爆発が気になるとのこと。以前のバージョンではパラメータが固定だったので爆発することはほとんどなかったはずだが,今回のバージョンは巨大な力を加えたりできるので,めり込みが起きたり,めり込みすぎると反発力が強く働きすぎて爆発が起こる。これを直そうとするとスピード(めり込まないように時間の最小単位を十分小さくする)と物体の大きさ(小さい物体だとめり込みやすいので大きい物体しか作れないようにする)が犠牲になるわけだが,今は安定性よりいろいろパラメータをいじれる楽しさを優先している。根本的に数値計算の精度を上げられればいいんだけど...。はいっても爆発するのはなんかやな感じなので,めり込みすぎたら潔くすり抜けるようにしてみた。どっちもどっちな感じもするけど,とりあえずもう少しテストしたら開発版にアップする予定。万有引力を実装したものを開発版に置いてみた。これにともなって,今まで重力をmgで求めていたのを万有引力定数と地球の質量,半径から求めるように修正。調子に乗って太陽と地球をシミュレートしようとしたが,スケールが合わなくて断念。今のWorldTesterでは球の最小半径が3cmくらい(そういえばマニュアルに書き忘れた。重要な制限事項なのに...)なので,地球を3cmにしても太陽が3mくらいでばかでかくなるし,軌道半径も350mくらいになってしまう。そもそも1回転するのに1年かかるし。ことでボール2つが回っているだけのサンプルを追加。追加する前に重力を0にしておくこと。TesterをVectorに登録してみた。Tester最近(?)ランキングがCoreを吐いて落ちている。CGIだから何もなかったかのように続いているんだが,何だろう。「最近おかしいよ」っていう情報があれば知らせてもらえるとありがたいです。無重力振り子の実験をやっていた。WorldTester付属の振り子は回転しないようになってるので平成教育委員会のようにはならない。ことで回転するようにしたバージョンも作って開発版に置いてみた。ジェット機をチャーターしなくてもPCで実験できるのがいいところ。AABBで速度向上してみるWorldTester。今まで衝突判定の前処理に境界球による判定をしていたのだが,軸に沿った箱(AABB)判定に変えてみた。結果,一番効果のあったドミノ倒しで1.3倍くらいの速度向上になった。この後は空間分割をやって,オブジェクトが多い場合でも遅くならないようにしてみるか。世界を定義するWorldTesterの物体定義を外部ファイルでできるようにしてみた。結果,うーん,改造は簡単にできるけど,新規に作るのは難しいかも。これと,物理定数のカスタマイズができたら一旦公開の予定。次は何をずっと仕事ばかりなので最近ネタがない。それもどうかという感じがするので,WorldTesterのカスタマイズ機能でもサポートするかな。Testerで缶コーヒーの無重力アニメーションをやってみた。ユーザが簡単にカスタマイズできるようになれば結構面白いソフトだと思うのだが,今のままだとやっぱり使いづらいですね。これはタブレットPC上で描いたものが物体とか紐になって,そのまま物理シミュレーションされるソフトなのだが,ピタゴラ装置シミュレータとの評判らしい。SDKさえあればWindowsXP+マウスでも動く。Tester」でやりたいことにかなり近い感じ。Testerの15パズルは62FPS出るとのこと。うちじゃ40~50くらいしか出ないから高速化に力を入れていたというのに。これ以上高速化しても,最近のPCだと全然意味ないんですかね。Tester1.01を公開。変更点は,高速化と円-円衝突ですり抜けるバグの修正。リビジョンはあまり好きではないので本来なら開発版にするのだが,円-円のすり抜けは明らかにバグなので正式版にした。WeatherTypingは現状いろいろな仕様のしがらみがあっていじくるのが難しいのだが,こちらは新規なのでしがらみがなくて気が楽。ことで頻繁にバージョンアップしていく予定。分離軸方で早くなったWorldTester。箱と箱の衝突判定に対して分離軸判定を用いるようにする。結果,かなり速くなって,うちの環境だとドミノ倒しで35FPS→62FPS,15パズルで9FPS→47FPSにまで上がった。いうか元のコードが遅すぎという話もあるが。高速化を考えるWorldTester。衝突判定の高速化を目指し,とりあえずOBBの分離軸法を実装中。音源がない場合の考慮WorldTester。4号から「音源がないと起動しない」という報告を受ける。確かに以前,音を鳴らそうと思って音関係の初期化を入れたのを忘れていた。いっても通常の環境なら問題はないと思うので,Ver1.0では制限事項。