まっちーさんに影の出し方を聞いたので早速実装してみる。なかなかいい感じ。

ついでにしばらく試していなかったドミノ倒しを試してみたらこっちもいい感じに倒れるようになっていた。

2005091901

10円玉の不思議現象は結局プログラムのバグっぽかった。地面と垂直な軸の回転を止めるために,1点接触を微小面積での接触と仮定しているのだが,座標系を間違っていた。で,結局回転させていても最終的には床に倒れる動作となった。

2005091801


今まで力積計算を運動量の保存則から計算していたが,実験的に力積を直接計算するようにしてみた。結局はペナルティ法に近い式になってしまったが,衝突と垂直抗力を区別しなくて良くなるのでだいぶすっきりする。


上の10円玉はMetasequoiaで作っている。先週シェアウェア登録したのだが,なかなか返信来ないなあ,と思っていたら自分でSPAMフォルダに入れてしまっていた。英語の名前,英語のタイトルだと何も考えずにSPAMに入れてしまっているので気をつけないと。

ともあれ,最近はSPAMも日本語のメールが多くなっていて分類が非常に難しい。ちなみに9/18に来たSPAMは全91通。いい加減メールアドレスを変えたいところだが,Denasuのアドレスは変えたくないので悩ましい。ウェザタイ関連のメールももしかしたらSPAM行きになっているものがあるかも知れない。

スマートボールとビリヤードをやってきた。というか物理シミュレーションのために観察してきたというか。


物理シミュレーションって結局は現実世界で現実世界をエミュレーションしようとしているわけで,ファミコンでファミコンエミュを作ってるような感じがしてある意味不毛なんだけど,ボールの重さが1つ1つ違うビリヤードはどうなるのかとか現実とはちょっと違うことを試せるのは十分価値があると思った。

Windows Vista β1が送られてきた。3連休の楽しみができた。

Dependancy Walkerをずっと使っていたが,Profile機能があるという情報を4号に聞いた。4号も昨日知ったらしいけど。フックを行って使っている関数を監視する。

しばらく書きためていたインストーラについてのTipsを公開してみた。ま,とりあえず置いておけば後で役立つかな的な感覚で。

円盤をサポート。まだ当たり判定が地面とだけだけど。

で,今日の不思議。10円玉を指ではじいて回転させるデモを作ってみたが,最後に直立してしまう。バグってるぽい気もするが,まっちーさんがいうには10円玉は完全な円盤ではないからじゃないか? とのこと。本来なら直立するのが正しいのだろうか。

もう一つ。回転が遅くなってくると机上を旋回し始める。これは以前のボーリング理論でいうと,回転が遅くなることで回転軸が斜めになって曲がってしまう,のか?

うーむ。まだすっきりしない。4号と相談してみよう。

ペンチ型の物体(下図)を無重力で回転させる。これはなかなか感動的な動きをするので是非宇宙船をチャーターしてやってみてもらいたい。まあ,ネット上に動画があるので最悪それでもいいかも。とりあえずPC上で再現できたのでOK。

2005082901

 

静止画なのが残念。Direct3Dを動画で保存してGIFアニメにできればいいんだけど…。

複合物体のサポート。上下に大小の球を配置したオブジェクトを作ってひょうたん型に。この物体を逆さまにして回転させるとひょうたんがコマに。下部に重りを付けると起き上がり小法師に。てな具体でだいぶ表現力が向上した。

2005082601

夏休み。

前半は物理シミュレーションの高速化をやっていた。今まで衝突判定のスピードを考えず,直方体なら面6つと点8つに分解して「面と点」など汎用的な処理にしていた。で,それだと直方体4つくらいで10FPSまで落ちてしまったので,結局「直方体と床」とか「直方体と球」とか個別に判定するようにして,なんとか直方体15個で30FPSくらいまでにはなった。まだ遅いような気はするけど。

後半はサーブレットとJSPの勉強。仕事とも趣味とも全く関係ないけど,やっぱり広く浅く知るには試験勉強でしょ,ってことでSUNの試験を申し込んでいる。ぷよSUNが懐かしい。

あれ,夏休みに読み切る予定だったハリーポッターが10ページしか進んでない…。

地元にインドカレー屋ができたという情報を仕入れ,denasuオフと称して綿密なる計画を立てていたが,なんか定休日だったので忘年会ぐらいまで延期した。

物理シミュレーションはサイコロ+球までは再現できるようになった。そろそろ重くなってきたのでスピードを気にしていかないと。

実装していると物理の勉強では不思議に感じなかったことが不思議に感じてくる。とりあえずメモ。

  • 静止摩擦と動摩擦は係数が違うだけだと思っていたが,静止摩擦は力と反対方向,動摩擦は相対速度と反対方向という違いがある
  • 摩擦力は接する面積に関わらず一定。静止摩擦は垂直抗力に比例するが,動摩擦は速度に関わらず一定
  • 球が転がっている場合,地面に接している点は相対速度0なので普通の動摩擦は発生しない。この場合,地面と球の変形などで転がり摩擦という別の力が発生する(と考える)
  • 例えばボーリングなどで,地面と垂直の軸に沿って回転をかけた場合,前方に転がしてもカーブはしない。ボーリングの場合,投げる方向とその横向きに回転がかかるからカーブする

Darren ShanのDemonata(Lord Loss)を読み終わった。次は買ったけど積んであったハリーポッターだけど,電車で読むためにはまた上中下に分ける必要がありそうな分厚さ。

どうやらウェザタイで何か動きがある模様。ここで書いてもいいのかなあ。

ちょっと前から,NEC SmartVisionのEPGで番組表を更新するとソフトウェア起動時に落ちるという現象が起きていたのだが,NECのページに修正パッチが出ていた。この問題が出る直前,テレビ朝日のEPGサービスで,ローカル局の番組表が2日分から1週間分(だっけ)提供されるようになったのだが,それに伴ってデータ形式が変わったと思われる。どっちの作りが悪かったのかが気になる。

物理シミュレーションはドミノが倒れるところまでできてきた。但し倒れる際にめり込んでしまうのだが。

2005071001

白いのが主人公で悪のドミノをなぎ倒すゲーム。なのか?

まっちーさんに触発されてゴールデンウィーク辺りから物理シミュレーションの勉強中。てことでウェザタイの開発は全然やってないのでこの日記もあまり更新してなかったりする。

表示部分は,3Dシューティングを作ろうとしていたときのソースがあるのでそれを流用。ようやくサイコロが転がるくらいまできた。問題はこれで何を作るかということだが。とりあえず前からやりたかったドミノ倒しでも作ってみますか。

先週あるつてでVisual Studio2005セミナーに行ってきた。2002-2003のマイナーアップデートとは違っていろいろ変わっている。気になるところでは

  • .NET Compact Framework2.0
  • プロファイラ復活
  • リファクタリング,ユニットテスト支援
  • VSS2005
  • Team System

実際にβ2を入れてみたが,重い以外はなかなかいい感じ。

PocketPC2003 SEエミュレータでLobby for PPCを動かしてみた。最初に古いバージョンとかの警告が出る以外は動作に問題はなさそう。ちなみにVGAで動かすと,文字が大きいだけでちゃんとフルスクリーンで動作している。LandscapeやSquareにするとスクロールバーが出ているのがちょっと変だけど。

ロビーサーバは5/3の早朝,復活した模様。原因の詳細は聞いていないのでよく分からないのだが,電源が落ちていた,のかな。


PocketPC版ロビークライアントを公開。ほとんど自分で使うためのものだけど,もしかしたら誰か必要としているかも知れないので公開。

2005050301


そのうちちゃんとしたドキュメントは書くつもりだけど,以下開発メモ。

  • 動作環境はPocketPC2002またはPocketPC2003搭載機。といってもVGA機とかだとウィンドウがちっちゃいとか問題あると思う。
  • なお,PocketPC2002についてはVS.NETのエミュレータの動作確認のみで,実機で動かしたことはない。
  • 制限事項1。チャット部分はユーザが編集できる。これはTextBoxをReadOnlyにすると背景色が変わってしまうのと,背景色を変えられなかったためだが,将来バージョンの.NET Compact Frameworkでなんとかなることを期待してそのまま。
  • 制限事項2。発言があった場合必ず一番下までスクロールする。本当はスクロールバーの位置を見てスクロールするか判断するべきだが,やり方が見つかってない。
  • 制限事項3。メンバ一覧とチャット部分の仕切りは移動できない。これも将来の.NET Compact Frameworkに期待。
  • 制限事項4。状態の変更は未サポート。
  • 制限事項5。メンバ毎の発言色は未サポート。

どうもbeanfan.comにつながらない。管理者連絡待ち。

というところで急遽マトゥ氏管理の第2ロビーサーバを昇格させてみたのだが,どうも動きがおかしい。ソースを見ていると,排他制御が変な部分があって,既存のメンバのメッセージが到着しないと新規メンバが参加できないという状況だった。beanfan.comではある程度切れ目無くメッセージが届いていたということか。とにかくその部分は修正し,稼働中という状態。

.NET Compact Framework。いろいろと制限はあるものの少しずつロビークライアントを実装してみる。以下開発メモ。

とりあえずTips的なものはMSのFAQが詳しい。


Visual Studio.NET 2003にはPocket PC 2002エミュレータというのが付属していて,VirtualPCっぽい感じ(というか提供元Connectixってなってるし同じものなんだろうけど)で使いやすいのだが,以下の設定でつまづく。

  • ホールドどうやってやるんだろう,と悩んでいたのだが,ホールド開始までが長いだけだった。かなりの時間押しっぱなしにしないと認識されない。
  • 実際に使う機会は少ないと思うが,ホストキーがデフォルトで右Altになっている。家のノートには右Altなんてないのでどうしようかと思っていたらVisual Studioの[ツール]-[オプション]の「デバイスツール」で設定できた。

HttpWebRequestでWebサーバにアクセスすると「チャンクの長さは無効です。」というエラーが表示される。これは.NET Compact Framework最新版では直っているようなので.NET Framework 1.0 SP3をダウンロードし,ファイル共有経由でnetcf.core.ppc3.x86.cabをエミュレータに配置して実行。


4号(誰)情報によると,.NETでは他のスレッドにメッセージを投げるとうまくいかないということでInvokeを使うらしいわけだが,.NET Compact Frameworkでは引数を付けてInvokeを呼べないという制限がある。で,スレッド上でのメソッド パラメータの呼び出しに載っているControlInvokerを使った。

ロビーの緊急待避モードの拡張を行う。とりあえず緊急待避モード時はタスクトレイに入るようにする。以前電卓を作ったときは意識していなかったが,Explorerを再起動したときにタスクバーからアイコンが消えるのは何とかならないかなあ,と検索してみる。IE4.0以上がインストールされているときはExplorerが再起動したときにTaskbarCreatedユーザメッセージが送られるとのことなのでそのタイミングでアイコンを再登録すればいいらしい。

ついでに緊急待避モードは今のままではウィンドウがアクティブの時にしかできないので,ウィンドウが隠れているときでもきくようにホットキーを設定できるようにする。制限事項として,他のアプリケーションと競合したらだめってのがあるが,とりあえずかぶらないようにして下さいというしかないのかな。

ロビーを荒らしながらPocketPC版ロビークライアント開発。LAN経由でネットにつなげられるようになっていないのでデバッグがめんどいながらも,サーバにつないでチャットするだけはできた。

2005041001

 

実際ここからがめんどいんだけど・・・。


ロビーでの要望。

  • ロビーは現状SJISでサーバへ送っているので表現できない文字がある。ちなみにローカルのリッチエディットには送信前の文字列を入れているのでローカルには表示される。
  • ロビークライアント背景色の指定。

1ヶ月の出張から帰宅。引っ越しの片づけをやらないと。


てことで1ヶ月C#開発をやってみて,なかなか開発効率もいいし作りやすいことが分かった。C#版ロビーでも作成してみますか。

3週間ぶりに一時帰宅。ロビーをのぞいてみるとちゃんと動いている模様。但し近々ロビーサーバお引っ越しがあるらしく,そのときは少しの間ロビーサーバにログインできなくなる予定。PocketPCからロビー起動できれば朝には復旧できるかと思う。

ようやく休みがとれたのでPDAから更新。手書き認識なので変な誤字があるかも知れないが記念に(?)今後も修正はしない予定。

2週間ホテル墓らしなわけだが、通勤も歩きだし結構快適だったりする。PCがないのも、開発さえしなければPDA+AirEDGE+512MB SDカードで事足りてるし。

ちなみにこっちでやっているのはC#によるクライアント開発。まぁここで学んだことを活かしてPocketPC版ロビーを作れということですかね。

PocketPC iPAQ h2210環境を本格的に整備。エディタとかメーラとかはまあ何でもいいのだが,SSHクライアントがなかなかうまくいかない。以前使っていたW32Consoleを利用したSSHではスペースしか打てないし,PocketPuttyではスペースが打てない。てことでNetKeySipというSIPを使ってみたら両方ともうまくキーが打てた。

掲示板にも書いたが,しばらくPC環境のない場所へ行ってしまう。PocketPC+AirEDGEがあればある程度のことはできるが,それにも限界があるわけで。ま,しばらく様子見。ちなみに,最長で5月という噂。

それに先駆けていろいろと整理。しばらくメールがサーバにたまってしまうので,デナスのページから作者のメールアドレスを消した。今まではランキングのパスワード変更とか雑誌の掲載時とかの連絡用にメールアドレスを公開していたが,1日に50通くらい来るしウィルス付きだったりするので,しばらく削除しないとHi-HOのメールサーバがいっぱいになってしまう。これでどのくらいSPAMが減るのだろうか。

うーむ,こんなことなら早いところPocketPC用ロビーでも作っておくべきだったか。

Weather Typing 2.0.1を公開。修正点は以下の2点。リビジョンアップなので基本的にバグ修正のみ。

  • リプレイ対戦ができない問題を修正
  • リプレイビューア,リプレイファイルが表示されない場合がある問題を修正

なお,WeatherTyping.exe自体は開発版で公開していた物とほぼ同じ(バージョン情報のみ違う)なので,既に開発版を使っていてリプレイビューアを使っていない方はダウンロードし直す必要はありません。

掲示板の,「リプレイビューアで総時間が0になる」問題。リプレイファイルが複数あり,旧バージョンが新バージョンよりも位置的に前にある場合に発生する。かなり以前から存在した問題のはず。てことで,リプレイ対戦の問題も含めて今日か明日中には2.0.1として正式版として公開する予定。

Vectorからウェザタイ2のダウンロード数が来た。ちなみにウェザタイ2の場合,Vectorのダウンロード数は全ダウンロード数の約30%ほどなので,デナスからのダウンロードをVectorへのリンクにすると3倍以上のダウンロード数になるわけだ。ま,やらないけど。