‘プログラミング’のエントリ

WeatherTyping開発版を更新。マニュアルも付けてほぼ2.0,のはずなのだが,ロビーで実験をしていて気になる現象が出てきているのでまだ正式版にはしていない。おそらくもう一度くらい開発版を更新すると思う。


ロビーでの要望もいくつか挙がっているが,その一つ。「タスクバーを自動的に隠す」に設定していると,ロビーの発言があった時にタスクバーが表示される。多分FlashWindowの仕様だと思うが,いくら何でも不便なので改善予定。

とりあえずまだロビーサーバは動いている。引っ越し終わったんじゃないのかなあ。


ウェザタイ2のマニュアル執筆中。そろそろ正式版も近い。

昨日の会で,ワードサーバの登録内容を見直した方がいいよ,との指摘を受けたので見直してみる。OKかNGかという判断はちょっと難しいのだが,とりあえずえいっとやるしかないので,固有名詞が含まれているものを一方的な判断で削除させて頂いた。

ランキングの重複も削除しようとはしたのだが,こっちはもっと判断が難しいのと手作業になってしまうのでどうやったらいいか考え中。


ウェザタイ本体の方は通信のシステムをがらっと変えようとしていたのだが,今の作りでは無理そう。とはいえいつまでも開発版ではしょうがないので今年中に一旦ウェザタイ2としてまとめる予定。

ロビーサーバが2004/11/24 18:58:54から2004/11/28 14:31:45まで落ちていた。サーバ本体の管理は私ではないので限られた情報から判断すると2004/11/24の19時から23時くらいまでサーバの電源が強制的に落ちていた模様。で,そのタイミングが悪くロビーユーザの管理ファイル出力が途中で切れていた。管理方式をデータベース方式に戻しておけばよかったのだがそれは置いておいて,過去のバックアップから復旧したので,ロビーユーザの情報が2004/10/03に戻っている。この間にパスワード変更した方は申し訳ありませんが元のパスワードでログインして下さい。

ちなみに私も平日はロビーの稼働状況をチェックしていないので,ロビーサーバが落ちてるような場合は掲示板にでも書き込んでもらえるとありがたいです。

ロビーサーバを設置してもらっているところの解散が決定。ま,ホントは去年の3月くらいに解散の予定だったので割ともった方なのかな。今ロビーサーバの移転先をどうするかを考えているところ。可能性としては,単に引っ越すだけ,私がサーバをたてる,パジ氏かマトゥ氏かはっぱ氏に頼む,または閉鎖の6通りくらいか。ま,何か決まったら発表ってことで。


ちなみに(?)ウェザタイのソースは1都2県に渡りバックアップされててかついつも持ち歩いてたりするのでソースがなくなったから開発停止,って可能性は低い,かなあ。

これまでWeatherTyping2.0に向けて細かな修正を行っていたが,ようやく大きな変更を開始。今までの修正はこれを実現するために必要なものだったというのは過言だが,カスタマイズ送信とかキーリピートとかはかなり関連してくるか。

ただ,この変更を行ってしまうと1.8以前と2.0での対戦はできなくなってしまう。リプレイに関しては極力以前のバージョンのものも再生できるようにするつもりだが,対戦はどうしても無理そう。

開発版を更新。変更点は2004/10/24で書いた内容に,

  • キーリピート対応
  • キー音?対応

のみ追加。キーリピートというのはキーを押しっぱなしにしたときに自動的にキーが入力されることですね。WT2に向けた別の変更で必要になった副産物。


ちなみにキーリピート機能が今までなかったのは,DirectInputがデフォルトではキーリピートを無視するようになっており,自分で実装すると結構面倒なため。

キーリピートの間隔ってどうやって取るのかなあ,と検索しているとMSのページでTypicallyな数値付きで載っていたのでそのまま使ってみた。


ロビーで実験していたらCapsキーなどでキーが押しっぱなしになるという現象が発生。どうやらDirectInputのキーリリース情報が送られてこないキーが存在するらしく,1.8以前でも,一度押してしまうとその時はミス入力となり,それ以降は無反応になってしまうという現象があった。

なので16:30,その修正を入れたバージョンをもう一度公開。

いろいろやっていたら,VS.NETを起動しようとするとMachine Debug Managerのダイアログが起動するようになった。さらに,デバッガを開始しようとすると「デバッグを開始できません.デバッガは正しくインストールされていません。」というメッセージが出るようになった。

とりあえずデバッガサービスが何故か消えていたので,

"C:Program FilesCommon FilesMicrosoft SharedVS7Debugmdm.exe" /service

でサービスを登録したら直った。

ついでに「次のエラーで JIT デバッグに失敗しました : クラスが登録されていません」というエラーが出るのも確認したのだが,こっちは

"C:Program FilesCommon FilesMicrosoft SharedVS7Debugvs7jit.exe" /regserver

でレジストリを登録したら直った。

WeatherTypingいくつか修正。但し内部的に他の部分を変更中なので公開はまだ。

  • Alt+TABを押したときにミス入力になるのを修正。ロビーでの要望。
  • NICOLAで親指キー単独打鍵を行ったときにミス入力になるのを修正。ロビーでの要望。
  • 対戦中に背景画像のスクロールがカクカクになるのを修正。
  • 設定を変更して終了後,すぐWeatherTypingを起動すると設定が元に戻っているのを修正。
  • 「jya」「jyu」「jyo」対応。

WeatherTypingのロビーについていろいろ考えてみるが,考えれば考えるほど過去との互換性が足かせになっているのを感じる。ロビーではなくて本体の通信の話ですが。いっそのこと過去との互換性を切り捨ててウェザタイ1とウェザタイ2の対戦はできません,ウェザタイ1のリプレイは再生できません,でいいのならいろいろとよくなりそうなのだが。そこまでいったらむしろウェザタイではない何かにした方がいいのだろうか。

teikinkaさんシューティングがvectorレビューに。いい感じですね。

で,teikinkaさんからウェザタイも次はリプレイランキングですね,というコメントを頂いたのだが,リプレイアップロード自体は以前検討していて,以下の懸案事項が上がっている。

  • リプレイのファイルサイズが100KBとかになるのでサーバの容量を確保する必要がある
  • リプレイファイルとしてウィルスとか置かれたりするとイヤな感じ
  • ウェザタイは対戦なので,リプレイをアップするには対戦相手全員の許可が欲しい

この辺が解決できればリプレイアップロード機能搭載できるかも。

久々に連休なのでちょこっとだけ更新。


PocketPCが充電できなくなったので新しいPDAを模索。VGA液晶を見に行ったりしたけど何か本体が大きいのでHPのちょっと前の機種にした。ボタンを押しても電源が入らないところがいい。


teikinkaさんシューティングをやってみる。2年くらい前に作成中のものを見せてもらったことがありますが,ついにvector公開ですか>teikinkaさん。うちもシューティングを作りたくなりますね,って作りかけのネット対戦立体視シューティングがいつまでも完成してないような気もしますが。


掲示板の書き込み。多分WindowsXP SP2とDirectX9.0Cを使っていると思われるので自宅環境に入れてみた。とりあえずウェザタイはちゃんと動いている模様。

WeatherTyping2.0に向けたテストバージョンをロビーにて配布してみた。で,半日ほどロビーを覗いていて動作がおかしくなったという話はなさそうだったので,開発版として公開。

今回から配布元をHi-HOから移転してみた。恐らくWeatherTyping2.0ではDLL付きを別配布することになるのでHi-HOでは容量的に不安てことで。

変更点の詳細については昨日までの日記にほぼ書いてあるので省略。


よくある質問にあるVCランタイムだが,どうも最近はシステムディレクトリよりもアプリケーションと同じフォルダに入れるのが推奨されているらしい。特にMSVCR71.DLLについてはシステムディレクトリには入れないこと,とすら書いてあったりする。ということで記述を変更しておいた。

土日で英語配列対応をやっていて,QWERTYとDvorakについての英語配列のサポートを行ってみた。で,本当の101キーボードでやったらどうなのよ,てなことでロビーで聞いてみた。結果としては現状のウェザタイでも日本語配列として打てているらしい。手元の日本語キーボードで調べてみても,配列を英語配列にしたり地域と言語オプションを変えてもDirectInputでは日本語配列(DI8DEVTYPEKEYBOARD_JAPAN106)として認識されているようだ。でもDIK_COLONとかは101キーボードにはないよなあ,と思って英語OSで調査してみたところ,当然の事ながら英語配列(DI8DEVTYPEKEYBOARD_PCENH)になっていた。そうするとキーボードの種類を調べてそれによって内部的に切り替える必要があるということか。って日本語Windowsでちゃんと打てているのならそこまでやる必要はなさそうだけど。

英語配列対応をやっている過程での副作用。入力方法のカスタマイズを対戦相手に送信する機能を作成したので,ついでだから現在の入力カスタマイズを保存し,相手に送信するようにしてみた。つまり「じゃ」を「zya」とか「ja」とかどういうふうに打っているかをローカルPCに保存しておき,プレイ時には最初からカスタマイズされた状態で画面に表示されるようになり,また対戦時には相手に送信されるというようにした。


あとウェザタイ2で予定しているのは,

  • 対戦中にワード,ルール,ハンデを変えられるようにする
  • インストーラ付きバージョンの作成
  • スコア閲覧,削除用アプリケーション
  • ロビーの部屋機能の改善

くらいか。やりたいのはもっといろいろあるけど,以前のバージョンとの互換性がなくなるようなものは将来的に一気に変えるつもりなので今回はやらない方針。例えば入力方式プラグインとかですね。そういう意味だと対戦中のルール変更なんかもちょっと厳しいかも知れない。

とりあえずあと1~2週間で一旦開発版を公開する予定。


ロビーの現状については特に公式コメントはしません。とりあえずウェザタイ2ではもう少し部屋機能を有効活用できるような仕組みにする予定。

久々にウェザタイ開発。

午後からロビーに入っていて,ロビーメンバをレベルでソートできないか,という要望があったので対応してみた。いつの間にか確立されていた主席システム(?)が意味のないものとなってしまったが,使いようによっては便利なので採用ということで。

PNGライブラリにセキュリティホールが,てことで新しいバージョンでウェザタイのビルドを行う。


早いところ開発版を出したいところなのだが,ちょっといろいろ変えているので,公開にはもう少しかかりそう。

WeatherTypingは親指シフトキーボードには対応していないというのをFAQのページに掲載。結構混乱しているような気がするので。

いっそIME+変換ありモードというのもいいかも。


なんか変なリンクからアクセスがくるなあ,と思って見てみたらなんか変なリンクがあった。

GIFの特許(LZW)の日本での有効期限が6/20に切れた。かなり昔,GIF画像を生成する必要があったときに無圧縮GIFとか使ってしのいだのが懐かしい。ということで記念にウェザタイでもGIFサポートしようかな。背景画像とか。

08:30,とりあえずロビーは復旧しました。


ロビーサーバPCが設置されている場所まで行ってとりあえずMySQLの自動起動の設定だけしてきた。ロビーの自動起動はどうしようかな。

だいぶ放置していたが,今月入ってやっと休みになったので日記を更新。

ロビーがどうも止まっているらしい。タイピングスレで知ったんだけど。今管理者に連絡を取っているので少々お待ち下さい。


排他制御の方式を変えてみたらFPS的には結構速くなった。自分のノートじゃよく分からないけど。


ウェザタイ2の通信テストをしていたら,接続中に応答なしになることがあって,調べてみるとデッドロックになっている部分があった。ここを修正すれば,このせいでつながらなかったというのも解消されるはず。問題はいつ公開するかということだが…。

ロビーを置いているサーバの管理者から01:00~03:00メンテという情報を頂いていたが,メンテ情報をメンテしていなかった。さらに今後,5/28の深夜に一時停止する可能性ありとのこと。

リプレイビューアを改善。カラムのソートとリプレイファイルの削除,リネームをサポート。ファイルの削除は十分テストしないと危ないので公開はもう少しあとかも。

次はロビーに手を入れようか。割と安定して動いてるからあまり手を入れたくないけど,手を入れざるを得ない状況ってことで。

ゴールデンウィーク。結局ウェザタイのグラフィック強化をずっとやっていた。そっちはだいたい終わったのだが,他の対応は…手軽に対応できるものがないですね。なかなか。

HDDを30GBから80GBに入れ替え。1月前くらいに買っていたのだがようやく入れ替えられた。

とりあえず,OSを入れ替えるときはWindowsUpdateする前にファイアウォールを入れておくということを学んだ。回線をつないだら即ウィルスに感染するとは。


ウェザタイロビーについて,いろいろと議論があるようで。書きたいことはいろいろあるけど,まとまらないので次の機会。開発中のウェザタイ2ではちょっと変えるかも。

3月は何もする暇がなかった。

掲示板に返信。VCのランタイムはやはりしきいが高いのかな。ひっそりと進行中のウェザタイ2では,インストーラ版とそうでない版を用意するつもり。Hi-HOには容量の関係で置けないのでどこか別のサーバにでも置くことになると思うけど。

2ヶ月ぶりに開発版を更新。とりあえず実現しやすい以下の2つに対応。

  • ロビーでレベル表示を行う入力方式を設定できるようにする
  • 保存する記録の総数を設定できるようにする

レベル表示を行う入力方式は,ロビーの[ツール]-[オプション]で「ゲーム情報設定」ボタンを押し,入力方式を選ぶと,その入力方式のレベルがロビーで表示されるようになる。

保存する記録の総数は,今まで1000記録までだったのが,もっと多く残せるようになった。設定は設定ダイアログの「プレイ記録」で。

パジ氏からウェザタイの問題文章が長い場合の表示案が送られてくる。ローマ字がスクロールするものだが,問題は漢字部分。ここは全プレイヤー共通なので,勝手にスクロールできない。まあ一番上のプレイヤー(自分)に合わせればアリかも知れないけど。

ロビーサーバは結局丸24時間落ちていました。何も連絡できなくて申し訳ありません。


で,何をしていたかというと,プロバイダのメンテナンスがあるのでついでにカーネルのバージョンアップをしよう,ということでサーバPCの管理者が作業していたのだ。

本来は17日朝に復旧する予定だったのだが,ファイルシステム関連のトラブルで朝までに間に合わなかった。で,復旧連絡が23:05に届き,帰りのバスの中からPDA+AirH"+SSHでかっこよくロビー起動しようと思ったが,ターミナルの設定がおかしくなっていてスペースが打てなくて断念。結局帰宅後にロビーを起動した。サーバ再起動と同時に起動するようにしておいた方がいいかな。

ついでにワードサーバはまだ復旧できていない。こっちもMySQLが自動で起動するようになっていないからということで,自動起動にしといた方がいいかな。

掲示板に一気に返信。最後に書いたように,2/17にロビーサーバのメンテナンスを行います。

WeatherTypingに対して上がっている要望一覧をまとめてみた。今後は要望が上がったり進展した場合はこのファイルを更新していく予定。

今週の土日はInsideDCOMとかを衝動買いしつつアセンブリを読み続ける。

OLE32.DLLの中をトレースしていたのだが,以前インストールしたXPSP1用シンボルがロードされない。最新のシンボルはシンボルサーバにあるらしいのでWinDBGのシンボルサーバを「SRV*c:websymbols*http://msdl.microsoft.com/download/symbols」のようにしてデバッグを開始し,シンボルをダウンロード。ダウンロードしたPDBをXPSP1用シンボルに上書きすればVCのデバッガからでもシンボルがロードできる。この方法があってるのか分からないけど。


土日が忙しいと趣味開発もできないわけで。掲示板の返信も結局できなかったし。本当はウェザタイ2とか新ロビーとかいろいろやりたいんですけどね。

久々にランキングを見てみるとトップの方がレベル11に。トップがレベル6だったときが懐かしい。


ウイルス。先月末は2日で50通近く行ってたのが今は2日で20通程度。落ち着いて来たのかな。一応書いておきますが,私のメールアドレスからのウイルス付きメールはほぼ間違いなくアドレス偽装なので苦情メールとかはご遠慮下さい。

連休も終わり。ちなみに3月末まで連休はない,らしい。

で,何故かプログラミングC#(日経BPソフトプレス)を買ってきたので読んでいた。ウェザタイC#を作るわけじゃないけどロビーを移植くらいならできるかな。

関連してモルニウム(?)のコードを見直してみると,当時は自分で書いてて意味が分からなかったコードも分かるようになっていい感じ。


ロビーに対する要望で,「無視してる人には自分の発言が見えないようにしてほしい」というのがあったのだが,考えてみるとサーバに「私はこの人を無視してます」というのを送ることになるので,管理者には誰が誰を無視してるのかバレバレってことですよね。相手にさえ分からなければそれでいいのかなあ。

ロビーで年越し。で,入力形式プラグインの検討を行っていたのだが,新しく1から作り直した方がいいぐらいかも。