PHP+MySQL+Apache で作っていたシステムがほぼ完成。ウェザタイランキングも PHP で作りたくなった。けど,denasu.to の環境が改善されるまでは無理ということで。
2002年10月のエントリ
情報試験のどれかを受けてきた。筆算と漢字が難しかった。
2002/10/18 12:32:35に掲示板に書き込まれた発言は,何がおっしゃりたいのかよく分からないのと,本サイトに全く関係ないと判断しましたので削除致しました。これからも関係ない書き込みはそれへのレスと共にバンバン削除しますのでご注意下さい。もちろんウェザタイへの批判などはいきなり削除したりしませんのでどんどん書き込んでもらって構いません。
機能アップした開発版を,ロビーにいらした方に宣伝し,試してもらったりしたのだが,DLL ダウンロードについては概ね大丈夫そう。いざとなったらインストーラ付きを公開するという手もあるが,Hi-HO に置ける容量も限界があるので厳しい。
ロビーで出ていた話で,入力形式のプラグインというのがあった。とりあえず DLL を追加すると入力形式が増える,というのはやりたいのだが,こういうのは最初に仕様をちゃんとしないとすごいことになるので時間をかけたいところ。とはいえ入力形式部分はちょっと複雑で全ソース公開しないと作者以外にプラグイン作れない気がする。CPU対戦プラグイン化とかだったら仕様公開すれば楽に作れるかな。これを機にリファクタリングか。
というところで開発版の更新もたまってきたので,そろそろ WeatherTyping ver1.7 にしたいところなのだが,目玉機能が特にない。この状態だとわざわざダウンロードする人も少なそうなのでもうちょっと保留。
開発版をアップ。とりあえず .NET でコンパイルしたので,開発版のところに書いてあるように DLL を 3 つダウンロードしてください。一応ロビー関連でいくつか操作を改善してあるので,ロビーを使っている方は落としてみると少しは便利かも。
Windows100% のタイピングソフトのページにウェザタイを載せて頂いた。ありがとうございます。ところで,フリーソフトを載せている雑誌では作者の方に掲載誌を無料で配ったりしているのだが,これってメールで掲載ページだけ送ってもらうとかできないかなあ。掲載ページだけでいいんだけど1冊もらっとく,とか住所教えたくないから自分で買う,とか結構いそうだし。ま,全ページ分の作者が集まって1冊作っちゃうとコピーが氾濫するけど。
ウェザタイを VisualC++.NET でコンパイルしてみた。というわけで次期バージョンからは MFC70.dllとMSVCR70.dll が必要となる。一応 Denasu 内からダウンロードできるようにしておくつもりだけど。
# ま,折角買ってある VS.NET を使いたい作者の気持ちを汲んでもらえるとありがたいのです。
.NET関連を含めていくつか箇条書きでメモ。
- 自動退席。WH_MOUSE グローバルフックをかけたとき,パケットを受信したときにも何故か WM_MOUSEMOVE が通知される。一応カーソル位置が同じなら無視するようにしておいた。
- MFC7.0 を使用すると RichEdit2.0 がそのまま使える。EM_AUTOURLDETECT メッセージをビューに投げると URL が検出され,SetEventMask(ENM_LINK) を設定しておくことで EN_LINK が通知される。
- 現在,XPで使用するとき用にXP用マニフェストファイルを配布しているが,次バージョンからはリソースに含めるのでダウンロードの必要はない。
- 最初,何回ビルドし直してもMFC42.libが開けないというエラーで失敗していた。原因はワークスペース(ソリューション?)に入ってなかったライブラリがリビルドされてなかったため。
- double->int へのキャストや int->unsigned int などのキャストに,デフォルトで警告が出るようになってて修正は結構めんどう。
- unsigned char,signed char で 128 以上の値があるとデバッガ上で 0 に見える。なんか設定があるのだろうか。
あと問題は Win98 系でちゃんと動くかってところか。
ロビー,自動退席機能をサポートしてみた。まだアップしてないけど。技術的にはグローバルフックを使ってキー・マウス入力をフックし,何秒入力されていないかを返す外部DLLを作成する,という感じ。ただ,MSNメッセンジャーとか見てもそれらしいものが見あたらないので,違う方法があるかも知れない。
ついでに,チャットウィンドウでURLがリンクになる機能のためにRichEdit2.0を使いたいのだが,MFCでRichEdit2.0を使うにはVisualC++.NET(MFC7.0)を使うのが一番楽。しかしVisualC++.NETを使ってしまうとMFC70.dll等をダウンロードしてもらわないといけないわけで,どうしよう。
昨晩異常にロビーが重く,消えない部屋ができたりしていた。部屋関連にまだバグがありそう。とりあえず今日の昼間にロビー再起動を行った。
久々にロビーに行ってみたら VRAM の話が。今まで書いてない気がするので一応ここにも書いておこう。ウェザタイの動作速度は VRAM の量にかなり左右される。そのため,「ウェザタイがどうも重い」という方は以下の順に試してみると動作が軽くなっていくはずである。ちなみにウェザタイの動作速度は,[設定]の[画面]-[FPSを表示する]をチェックすると確認できる。
- Windows の画面モードを16色にしてみる
- [設定]の[画面]-[背景]を[背景色]にしてみる
- [設定]の[画面]-[画面モード]を[フルスクリーン]にしてみる
以上の手順をやると,CPU が Pentium266 程度,VRAM が 2MB 程度のマシンでも FPSは最大の 60 までは出る。
まあ,対戦を行う場合はウィンドウモードじゃないとチャット等に不便だが,シングルモードならこの設定でも問題ない場合は多いと思う。
# でも今日聞いた話だと,VRAM が 10MB 以上あってもウィンドウモードだと重くてフルスクリーンだとかなり早い,ってことだったので他に原因があるのかも。バグ?
1ヶ月ぶりに開発版をアップ。ロビーでレベル10以上の場合,かなりの場合で正常に表示されないというバグ修正と,成績ファイルの書き出しで失敗した時にファイルが壊れてしまう可能性を少なくする。
C++ の stringstream をバイナリで使いたかったのだが,0 がくるとそこで切れてしまう。以前 Windows 用にメモリストリームも作ったのだが,Linux だとうまくいかない。で,strstream の方を使ってみたら何故かバイナリもうまくいく。そういう仕様なのだろうか。