午前中に佐川急便から電話→訪問。無事引き取ってもらった。ちゃんと電話があってから来るということは再配達依頼は届いているわけで、毎日来てた不在票は何だったんだろう。
ともあれ次に動きがあるのは来年かな。
午前中に佐川急便から電話→訪問。無事引き取ってもらった。ちゃんと電話があってから来るということは再配達依頼は届いているわけで、毎日来てた不在票は何だったんだろう。
ともあれ次に動きがあるのは来年かな。
というわけで今日も佐川急便の人が不在連絡票を置いていった。どうせ再配達時間指定は無視して毎日来るんだからIT化しなければいいのに。金の無駄だから。
この辺りを回るのはお昼くらいっぽいので、おそらく明日の午前中指定は意味ないんだろうなぁ。日記ネタになっていいけど。
せっかくなので参考のためPC修理の実況を。12/20にDELLに電話したところ、ビデオカードの在庫が少なくなっているので時間がかかるヨとのことだった。まあそれは仕方ないとして、DELLのページだとPCの引き取りが平日の日中になっていたのでそんな時間はいないヨと相談。ひとまず24日午後にしておくので後は宅配業者に連絡してうまいことやってくれぃとのこと。
24日お昼。佐川急便の人が不在連絡票を置いていく。手はず通りにWebから再配達申請。27日午前中を指定してみる。
25日お昼。再び佐川急便の人が不在連絡票を置いていく。いやいないって。多分明日も来るんだろうなあ。
ARToolkitもあまり進んでいないので日記に書くことがないまま困っていたのだが、ようやくネタができた。というかテレビを見ていたらグラボがおかしくなったっぽい。VRAMにゴミが出る感じ。サポート期間内なのでDELLに電話をしたら引き取り修理とのこと。GeForce Go 7900 GTXは結構故障が出ているのは知っていたが、うちのGeForce Go 7950 GTXでも同じように故障するってことですね。放熱フィンに埃がたくさんたまる設計なのがまずいような気がする。
とりあえずC2D 1Gのサブノートがあるのでそこまで困ってはいないけど、不便。
今更だがARToolkitを試してみる。これはWebカメラで撮影した画像に3次元CGをリアルタイム合成する技術。下のカメラはWebカメラ2台で撮影した画像に,立方体を重ねた画像。交差法で見ると立体に見えるはず。2台同時だとさすがに重いけどリアルタイムな動画で動いていて,紙を動かせばちゃんと立方体も動く。こんな感じでカメラ2台とヘッドマウントディスプレイを使えば,外部を撮影した画像にいろんな物体を合成して見ることができるわけで。あとは擬似的に触ることができて人工知能ができてブレインマシンインターフェースができてヒゲができれば,電脳コイルになりますね。とりあえずこれとWorld Testerを使って面白いことができないか考えているところ。
#っていってもGPLらしいからその辺をどうしようってのも考えないと。
ARToolkitをVisual Studio 2008 SP1 + Windows SDK for Windows Server 2008 and .NET Framework 3.5でビルドする方法。多分ちゃんとした方法じゃないしちゃんとまとめてないけど自分用メモってことで。
iter = iter2; // 追加開始 if(iter == mb.end()) { break; } // 追加終了
先月末に引っ越してから忙しい。なんか日記ネタもたくさんあったような気がするのだが忘れた。
ぱじさんがもげぇたんの次回作の構想を練っている。サーバ負荷をどうしよう。引っ越し後180倍の速度になった自回線を使って,公開後一週間だけサーバを物理的に増やすとか。
今日は18:00頃にサーバがフリーズしていた模様。ぱじさんが再起動してくれたのでダウンしていた時間は30分程度だった。
発生している問題を少し詳しく。サーバがフリーズしているときに「kill -3」でスレッドダンプを取ると,「java.net.SocketOutputStream.socketWrite0(Native Method)」で止まっている。これはソケットにWriteでいくつかデータを書き込み,後にFlushすると,JVM内部でネイティブメソッドを呼び出し,実際にソケットWriteするわけだが,そこでフリーズしてしまうということだ。ネットで調べてみると同じような現象で困ってる事例はあるが,解決策は見つからない。今のところお手上げ状態。せめて例外を出してくれるのならなんとかなるのに。
連休も終わり,なんとかピークを乗り切ったのかな。いろんな意見も聞けたし,多人数参加型脱出ゲーム第1弾としてはこんな感じですかね。一番面白かったのは,海外ページで「Etan Counter Moge」と訳されてたところ。最初分からなかったが,これって「逆襲のもげ」+「ぇたん」ってことなのか?
平日は昼間サーバが落ちててもちゃんと対応できなさそうだけど大丈夫だろうか。
多人数参加型脱出ゲーム「逆襲のもげぇたん」を公開。脱出ゲーム+チャット+協力プレイという感じか。協力プレイにした代わりにちょっと複雑になっている気もするが,今後の作品に向けての可能性がいろいろ見えそう。
今回はFlashクライアントをぱじさんが担当し,サーバとアイテムモデリングを私が担当した。2Dグラフィックは最初ぱじさんが作っていたが,最終的にDenasu Systemグラフィック担当のぷぅ氏に依頼することに。3人で作ったのはベーマガ投稿時代以来か。
「逆襲のもげぇたん」。サーバフリーズしまくり。サーバがフリーズするときはCPU使用率が100%をふっきってソケット通信が停止してしまう。通信量は問題ではなさそうなので単純に処理が間に合わなくて待ち行列が発散しているのか,バグってるのか。同時接続数は360人。最終的に500人を超えそう。一体ピークはいつなんだ。
前作のプレイ人数から,最大同時接続数400人くらいを見積もって通信量は大丈夫とか思ってたのだが,むしろCPUとメモリが危険域。とりあえずの対策として,サーバを80個くらいに分割してみた。この後はロードバランサー的な機能を実装して少ないサーバに割り当てるような感じにしないとダメかも。
ぱじさんと進めているプロジェクトが大詰め。塗り絵をしたり掲示板をメンテしたり。内容に関してはまだ公開できないので日記に書くことがない。結局8月はほとんど何も書いてないや。
掲示板に挙がっているが,第1ロビーサーバが1時くらい,第2ロビーサーバが6時くらいに止まったようだ。第1ロビーサーバはプログラムがフリーズしていたっぽい。今まで見たことないケース。第2サーバは,管理人にメールを出してみたが,しばらくは止まってるかも。
ロビーサーバが12時くらいから24時くらいまで落ちていた。原因はPC電源断。ロビーは諸事情で自動起動にはなっていないので,PCは起動してもロビーは起動されない。
とりあえず第2ロビーサーバを使用できるので大丈夫かとは思う。って第2ロビーサーバって知られているのだろうか。ロビー起動時に,コンボボックスを開くとサーバが2つ出てくるので,1つ目が落ちていて入れない場合,2つ目のを使用してみて下さい。
WeatherTyping2.2.1を公開。プレイヤー名などで「[]」を使うと設定が壊れる件の修正のみ。特に困っていなければダウンロードの必要はありません。
掲示板に出ているバグ。iniファイル読み込みクラスがバグっていて,値の中に「[」「]」が存在するとセクション名だと思っておかしくなってしまう。なんて基本的な。ていっても10年くらい前から使ってるソースだし他にもいろいろなところで使われている気がする。今更こんなバグが見つかるのかぁ,という感じ。さくらの人(誰)まだ使ってたら直しておいて下さい。
ネットで,走っているトラックの荷台に,ほぼ同じ速度で車が乗り込んだらどうなるか,という議論が載っていたので考えてみる。つまり高速道路で走行中,車をトラックに格納するようなシチュエーションである。一見,荷台に載った瞬間急加速して前の壁にぶつかりそうに思ってしまう。でもよく考えると,乗り込んだ瞬間,乗り込んだ車のスピードメータがほぼ0になって,あとは(乗り込んだ車の速度 – トラックの速度)分だけ減速すればOK,って感じになりそう。でいいのかな。乗り込んだ瞬間にタイヤの回転がピタっと止まるわけで,前輪駆動とか後輪駆動とか考えると難しい話になるけど。
いろいろ想像してみると,動く歩道に乗った時が思い浮かんだので実験してみた。動く歩道に乗り込む場合,動く歩道と同じスピードで乗り込むと,乗り込んだ瞬間速度が0になって,(動く歩道に対して)元の速度まで戻そうとするとそれなりに力がいる。
てなわけで,World Testerでビー玉を転がして,動いている板に乗せる実験をしてみた。結局,板に乗る前は普通に回転しているが,板に乗った瞬間回転がほぼ止まって,板を追い越すと再び回転が始まる。物理シミュレーションならこんな実験を手軽に試せる,ていう例。というかこんな実験ならリアル世界で試せよ,っていう例でもある。
# 実際は,World Testerだと板と地面の摩擦があるのでうまくいかない。上記はプログラム的に板と地面の摩擦を0にして動く歩道をシミュレーションした。
Weather Typing 2.2公開。追加機能はほとんどなくて,現在分かっているバグをたくさん直したバージョンという感じ。
Weather Typing 2.2のプログラムテストが完了。あとはトータルテストが終われば公開可能。今公開している開発版でいろいろバグが見つかった。特に大きいのはWindows 2000とWindows XP SP2なしで動作しないことか。今回,IPv6対応のためにGetAddrInfoW関数を使ったのだが,Windows XP SP2以降とWindows Vistaでしか使えない。いっそWindows2000をサポート外にするかとも考えたが,さすがに厳しいので直しておいた。
掲示板に来ている,設定が読み込めないというのが気になるが…。
Silverlightで通信ができないというメールが来た。どうやらSilverlight 2 Beta 1からBeta 2になったときに仕様が変わったとのこと。ローカルPCにSilverlightのコンテンツを置いておいてローカルPC上のサーバにアクセスする際にも,クロスドメインポリシーを考慮しなければならなくなったらしい。どこがクロスだよ,って気もするけど。
早速実験してみる。Silverlight Tools Beta 2を入れる場合,Beta 1のアンインストールが必要なのだが,普通にアンインストールしただけではだめで,更新プログラムの一覧からKB949325を直接消さないといけないというのにはまりつつ,インストール完了。微妙にWatermarkedTextBoxが消えてたりするのに困りつつ実験開始。
確かに以前と同じコードでSocket通信すると,AccessDeniedになってしまう。ということでクロスドメインポリシーサーバをたててみる。FlashのSocket通信のときに同じようなことをやってたのでほぼ流用。ポート943で,「<policy-file-request/>」という文字列を受信したら以下のような文字列を送信するサーバをたてればOK。許可ドメインはちゃんと絞り込まないといけないけど。
<?xml version="1.0" encoding ="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*" />
</allow-from>
<grant-to>
<socket-resource port="4502" protocol="tcp" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
結局,Socket通信は以下のような感じになる。
ロビーでSJIS以外の文字を使えるようにしていろんな文字が使われていたが,どうも変な文字が入るとGulimフォントなど(Vistaの場合)になってしまう。いろいろ実験してみると,VistaのWordPad(RichEdit 5.0)では,デフォルトのフォントをメイリオにしているとちゃんと変な文字もメイリオになるが,RichEdit 2.0だとGulimフォントなどになってしまってメイリオに変更してもフォントが変わらない。とりあえず致命的なわけでもないのでしばらくはこのままか。
ウェザタイのIPv6実験は成功。今のままでも,例えばVista-Vistaで対戦をするとIPv6アドレスで対戦ができる。これで通信部分を作り直す必要はなくなった。
ロビーに入り浸っていると,どうも対戦中に落ちる現象があるらしい。ちょっと調べてみて怪しい部分を修正。文字コードを変換するとき,変換前にいちいちsetlocaleして変換後にsetlocaleを戻していたのだが,そのあたりで落ちる。前のノートの時は起きてなかった気がするのでマルチコアで起きやすいのかも知れない。とりあえずsetlocaleはデフォルトでは全スレッドに効くので,プロセス起動時に行うようにしたら落ちなくなった。
Weather Typingの開発版をこっそり公開。経緯としては,掲示板に報告があがっている問題の対応が発端。掲示板に挙がっている問題は,NICOLAで高速打鍵が誤入力になってしまうというもので,右親指キーを使った入力から左親指キーを使った入力を高速に行うと,ミスになってしまう。これのせいでNICOLAでの入力が遅くなってしまう方も多いだろうということで急遽開発版を公開することにした。
注意点は以下の通り。
修正点は以下の通り。
DirectPlayのヘルプを見ていると,どうもDirectPlayは9からIPv6をサポートしていることが判明。Weather Typingでも今のままでIpv6に対応できている。ような気がする。検証中。
ぱじさんのプロジェクトに対応して,ロビーサーバをほぼ作り直した。ユーザ関連をデータベースを使用するようにしたのと,永久部屋とかもろもろ。大分コードもすっきりした感じ。しばらくテストしたらウェザタイのロビーサーバを更新してみよう。
TVを見ていると突然画面が真っ黒に,って感じの現象が発生。GPUの熱暴走かなあ,と思って分解してみた。DELL XPS M1710 + GeForce 7950 GTXというノートPCなのだが,DELLの公式ページには分解方法が詳細に載っている。それに従って,バッテリー→ヒンジパネル→キーボード→ワイヤレスLANケーブル→液晶ディスプレイ→パームレスト→GPU→ファンを順に取り外し,CPU+GPUのヒートパイプ→放熱フィン→ファンを見ていくと,かなりの埃が放熱フィンのところにたまっている。埃を取り除いてみると,最近うるさくなっていたファンが購入時くらいの静かさに戻った感じ。掃除前のGPU温度を測ってないので良くなったのかわからないが,しばらく様子見。
新プロジェクトのための3Dモデリング修行として,Weather Typingのアイコンを一新。最近はアイコンも3Dモデリングの時代なので,いつまでもXP時代の古くさいアイコンなんか使ってられない。
Metasequoiaでモデリング,Riosでレンダリング,IcoFXでアイコン化することで,割といい感じのができた。すぐにでも公開したいところだが,肝心の本体が完成していない。ロビーも公開待ちの状態なので,早いところ作らないと。
Denasu新規プロジェクトについて,ぱじさんとオフライン会議。いろいろ決まったような,決まらなかったような。完成すれば面白いと思う。
ロビーサーバ復旧完了。
Silverlight。TextBoxのスクロールできないのかな,と調べてみた結果,ScrollView ElementにTextBox Elementを入れればいいことが分かった。これにVerticalScrollBarVisibility="Auto",ScrollView.ScrollToVerticalOffsetを組み合わせれば一通りのことができる感じ。
Silverlight版ロビーサーバをローカルではなくWebサーバ上に置いて実験してみた。でもロビーサーバに接続しようとするとAccessDeniedが返ってくる。Webで検索するとSilverlight 2 beta 1 and Socket Exception: Access Deniedというページに原因が書いてあった。どうもサーバのドメイン名の逆引きができないとダメらしい。まあIPアドレス指定すれば使えるから実験としてはいいか。Silverlightの正式版ではこの辺りの制限は緩くなるっぽいし,何か作って公開するまでには正式版が出てる,かなあ。
第1ロビーサーバが停止している間にロビーサーバの気になっていた箇所を修正している。Unicode正式対応とか英語化とかゲームごとにサーバを分離とか。なので第1サーバ自体が復旧してももうしばらく第2サーバをメインにしておくかも。
ロビーサーバ停止中。HDDが死んだらしい。OS入れ替えて設定して,ロビー動かして,になるので復旧はしばらく先。
Silverlightの実験として,ロビークライアントを作ってみる。Silverlight 2.0からは日本語入力とSocket通信がサポートされたので,なんとなくうまくいった。でも使用できるポートが4502-4532に制限されているので,そのままではウェザタイのロビーサーバには接続できない。まあSilverlightでネット対戦ゲームは作れそうってことで。
以下画面キャプチャ。IEの中でロビークライアントが動いている。ホントはぱじさんのFlashクライアントと同時接続して,JavaのサーバにC++/Flash/Silverlightクライアントから同時利用,というわけのわからない画面が欲しかったんだけどとりあえずここまで。
Silverlightの開発環境があまりに混沌としているのでメモ。以下を使えばSilverlight 2.0開発,実行が可能(必須ではないが)。
今やすっかりFlashの人になったぱじさんがロビークライアントFlash版を実験してた。私もSilverlight版を作ってみるかな。
ぱじさんの「これからは全世界対応だよね」という発言でチャットの文字コードをUnicodeにしたのだが,UTF-16だとうまくいかない。UTF-8だとうまくいく。どうやらFlashのバイナリソケットのUnicode書き込みはUTF-8にしか対応してないような感じ。ドキュメントにはUTF-16も使えるように書いてあるっぽいんだけどなぁ。
# ちなみに現状公開しているロビークライアントはSJISしか使えないが,実は非公開でUnicode対応版があって,私だけ使っている。公開するタイミングがない。