xn 対応完了。「ん」はローマ字自動認識の中でも最も複雑な部分なのでバグってないか少々不安。
「DirectAudioの初期化に失敗しました。[InitAudio(DSERR_ALLOCATED)]」のエラーについて。解決ではないのでここに書く程度にしておくが,調べたところ Real Audio 等を起動しているとこのエラーが出ることがある,という情報があった。が,手元のマシンで試してもそんなことはなくて,これが原因なのかはまだ不明。
xn 対応完了。「ん」はローマ字自動認識の中でも最も複雑な部分なのでバグってないか少々不安。
「DirectAudioの初期化に失敗しました。[InitAudio(DSERR_ALLOCATED)]」のエラーについて。解決ではないのでここに書く程度にしておくが,調べたところ Real Audio 等を起動しているとこのエラーが出ることがある,という情報があった。が,手元のマシンで試してもそんなことはなくて,これが原因なのかはまだ不明。
掲示板の文字コードの話。具体的には
// (Unicode->SJIS 1 文字変換の例)
if(setlocale(LC_ALL, "Japanese") == NULL)
{
if(setlocale(LC_ALL, ".ACP") == NULL)
{
// エラー
}
}
int result = wcstombs(sjis, unicode, 3);
で,setlocale が 2 つともエラーになっている。これが通らないっていうのはどういう場合なんだろう。で,今開発版に上がっているのは,
// (Unicode->SJIS 1 文字変換の例)
int result = ::WideCharToMultiByte(932, 0, unicode, 1, sjis, 2, NULL, NULL);
if(result == 0)
{
result = ::WideCharToMultiByte(CP_ACP, 0, unicode, 1, sjis, 2, NULL, NULL);
if(result == 0)
{
// エラー
}
}
である。wcstombs は内部的に setlocale されたコードページを使って WideCharToMultiByte を呼び出しているので,やっていることはほとんど変わらない。前者がうまくいかないならば後者もダメそうだが。他に手が見つからない。
ウェザタイのポート。やはり混乱しそうなので,デフォルトは今まで通りってことで。デフォルトでうまく対戦できる場合はそのままで,4人対戦などができない場合は全員が「ポートを指定しない」オプションにすると対戦できるようになるかも知れない,程度に考えてください。
音を鳴らさないオプション。DirectMusic 初期化エラーの応急処置なわけだが,音源がないマシンなどでも動くようになるという副作用もあるので,解決してもこのまま残しておくと思う。
掲示板に書いたのでこっちも。ウェザータイピング大会というのが行われているようで。リンクはしない方がいいのかな。ウェザタイの楽しみ方の究極形はやっぱり大会だと思うので,というかリプレイなんかはそのために作ったようなものだったりするので,こういう企画は嬉しい。で,大会で問題となるのは,参加者集めと個々のユーザの環境整備だと思うが,私にはこの 2 つとも大変なので自分で企画するのは思いとどまっていたりして。ともあれ応援してます。
ウェザタイがもっとあらゆる環境で安定すればもっとスムーズにいくんでしょうが,その点は申し訳ありません。まあ,いろんな環境でのバグ報告が来るというのはソフトが広まっている証拠と言えなくもないので喜ぶべきかも知れませんね。
ウェザタイのアーカイブのサイズについて。今更気付いたのだが,title.png がやけにでかい。png なので圧縮済みの状態として,実行ファイルを圧縮したものに近い大きさになっている。これを例えば 150×150 256bpp とかのタイル画像とかにすれば全体のアーカイブが 1MB を切りそうである。今の時代でも 1MB を切るか切らないか,というのは結構ダウンロードのしやすさで違うような気はする。多分次のバージョンではそうすることにしようと思うのだが,どうでしょう>Pha-jtd氏。
あと掲示板とカウンタとランキングが重いというのもあるので,Hi-HO eva サーバが 03/11 から Perl5 に対応したのを機に見直すつもり。
ウェザタイ。使用ポートをデフォルトでは指定しないように変更する。今まではポートを指定して,ルータの設定がポート 1 つで OK になるようにしていたが,これによって 6073(ホスト),2302-2400(ホスト・クライアント)となる。
他の DirectPlay8 ネットワークゲームに合わせる意味と,4 人対戦が安定しないのが少しはよくなるか,ということで変更したんですが,今まで動いていてこれで動かなくなった場合,今までのようにポートを固定するオプションをチェックしてください。
今更だが Pha-jtd 氏がタイピングにはまりだしたらしい。今まで氏は本腰入れて練習してなかったからなあ。ということでまたワード作成してるらしいのでちょい期待。
トップページ,掲示板とランキングの最終更新日時を表示するようにする。ちょっとだけ重くなったかも知れないが,結構便利かも。
開発を数ヶ月停止とか言っておいてロビーサーバをちょこちょこと試したりしている。一応ロビーにつないで,チャットをして,ホストになって,接続する,という一連の作業はできたりしたのだが,問題がかなりいろいろあって,完成度を高める時間がない故,完成はおあずけ。そういえばワード作成ツールも作っているが,コピーアンドペーストとアンドゥ機能を付けるのが時間かかりそうでこっちもおあずけにしてたりする。ああ,作りたい。
# この機能が完成していれば例の大会(?)のような場合にも便利だったかな,って思いますが,どうなんでしょう。
denasu.to でウェザタイのロビーサーバを作ったらという話を Pha-jtd 氏とする。ロビーサーバ作成自体は面白そうなんだけど,需要ってあるのかなあ。需要がありすぎても denasu.to は回線が弱々なので無理だけど。
vector に ver1.5 が登録された。今回は割と早かったような。ちなみにこの間表示形式が変わったようで,新着順や人気順ランキングが見られるようになっている。
時代に逆行するようだが,ある事情で GIF の読み込みルーチンを作る。TIFF ライブラリについていたサンプルを真似してあっさり完成。しかし特許的にフリーソフト等に組み込むことはできない。残念。そういえば MNG って今どんな感じなんだろう。
ランキングにも登録して頂いてますが,シャドールームさんからのアクセスがすごいことになっている。他にも近頃,いろんなサイトで好意的に紹介頂いているようで,ありがとうございます。ってここに書いても誰も読まない気もするけど,作者がいろんなところに出没して宣伝するのもなんかうっとおしがられそうなのでここで挨拶に代えさせて頂きます。
# 上ので分かると思いますが,REFERER は取っているので,リンク頂いているページはだいたい見ております。
Weather Typing ver1.5 をアップ。これでバグ報告以外は開発を数ヶ月停止することになると思う。
ウェザタイ。Pha-jtd 氏と話していて,画面をもう少し凝ろうということに。少なくとも今のままではタイトルが適当すぎる。あと,プレイ履歴を保存出来るようにし,勝敗数・レベルなどを表示するようにして,バグがとれれば ver1.5 として公開出来るかも。
Vector を見ていて,ワード自動生成機能を持ったタイピングゲームを発見する。しかもウェザタイより公開が 2 ヶ月ほど早い。同じ事を考える人はいるのね。
#と思ったら 2001 年公開じゃなくて 2002 年公開かな? まあどっちでもよいですね。
Hi-HO が 3/11 から Perl5 に切り替わるらしい。これで少しきれいな CGI が作れるかも。
ウェザタイ。NICOLA の親指シフトをどのキーにするかを設定できるようにする。もし専用キーボードで反応すれば「専用キーボード対応」となるのだが,多分無理だろう。ハンデ中はフォーカス枠を出さないようにする。
検索が復活。
ルール拡張版を開発版にとりあえずアップ。今のところこのくらいはサポートできた。未サポートのものとして,
がある。
「1着から一定時間は打てる機能」は,作っていて正確な時間がどうやっても得られないのが分かり保留。対戦なので全員がぴったり同じ時計を使わないと同期が崩れてしまうわけだが,誰の時計を使ったとしてもその人が有利になってしまうのは避けられない。
「規定ワードで終了機能」は実装したものの,ルールが分かりづらくなりすぎるのでやめた。とりあえず「30点終了・1ワード1点」にしたものと機能がかぶってしまうし。
起動オプション「/single」はシングルプレイの起動が遅いため。ネットワーク系統を初期化しなければかなり起動は早くなるのだ。リプレイファイル指定は,関連づけすれば.wrダブルクリックで再生ができるようになった。
ランキングの表示を変えてみる。前のようにワードごとにランキングを表示すると,ワードファイルを増やすとワケが分からなくなるという理由なのだが,少しは分かりやすくなったのだろうか。
データベースが使えるともう少し凝った処理ができるのだが,Hi-HO + Perl ではめんどいのでこのくらいで。
ウェザタイのランキング。作者が何もしていなくても更新してくれる方がいてくれるのが非常にありがたい。また開発続けようかな,って気になってくるわけだが,やっぱりこの時期はどうにも忙しいわけで。とりあえず NICOLA の設定を直したら Vector にもう 1 度メール出してみようかなあ。
Vector にウェザタイ Ver1.4 のメールを送ったのだが,3週間近くたっても登録されない。登録されてから開発版を上げていこうと思っていたのだが…。まあいいや。
Netmeeting リモートデスクトップを使う。XP リモートデスクトップじゃないのは Win2000(Mebius)をサーバにしたいため。
conf.exe で Netmeeting を設定
適当にサーバを設定
適当にクライアントを設定
でつながった。ちょっと重いけどまあなんとか。
一通りのテストが終わったのでネットワーク対戦タイピングソフト Weather Typing Ver1.4を公開。
ウェザタイ開発版を更新。本当は ver1.4 にしたかったのだが,割と大きく変更してしまったので一応。変更内容は,
話題(?)のツールをウェザタイで使ってみるが,なんかうまくいかなかった。
とりあえずやっとドキュメントが整ったので,Weather Typing ver1.4 公開準備中。
DirectPlay 回線シミュレータで遅延を大きくし,ウェザタイのテストをちょっとやってみたところ,つながらない現象が再現した。原因を調べると,プレイヤーダイアログ表示中にプレイヤーを追加しようとして,排他制御で止まっていた。とりあえずそこを直した版を開発版にアップ。4 人対戦については実際にテストしないと分からないが,直っているといいなあ。
ウェザタイ,実行ファイルの削減について。STL を使っていた部分
map.insert(a) map.insert(b) map.insert(c) …
を
MapInsert(a) MapInsert(b) MapInsert(c) …
のようにラッピングし,インライン展開を抑制することで約 500KB 削減することができた。テーブルのコンパイルだも 30 分から 10 秒程度に減少。STL は使い方次第でコード量をかなり抑えることができるようだ。
ウェザタイの入力方式としてNICOLA 配列,50 音配列,dvorak 配列をサポートしてみる。
NICOLA 配列では,ウェザタイではデータ送信量を削減するために扱っていない「キーリリース」を扱わなければならないので,今までの構造では対応できず,入力部分を作り直す。この副作用で今までのリプレイデータが使えなくなってしまったが,対応要求があれば多分コンバータを作る予定。ちなみにリプレイデータはこの際なので圧縮をかけて出力するように変更した。
SHIFT キーの扱いについては,最も厳密に判断するようにした。即ちローマ字表示が a であれば SHIFT なし,ローマ字表示が A であれば SHIFT を押さなければならない。それに伴ってかなをローマ字に変換したとき,大文字になっていたのを小文字にするようにした。
「ヴ」をカタカナで出すように変更。「ヴ」には SJIS で 1 文字となるひらがなが存在しないため,今まで「う゛」と出していたが,親指シフトでは 1 ストローク,JIS かなでは 2 ストロークというのがめんどうだったのでこのようにした。
掲示板に少し書いたが,「新たなキー配列をサポートするたびにどんどん実行ファイルの大きさが巨大になるという問題」についてここでは少し技術的な話を。
入力方式のサポートについては,基本的に 1 対複数のテーブルを使っている。(例えば「し->SI」,「し->SHI」など)これを手っ取り早くサポートするために STL を使っているのだが,容赦なくサイズが大きくなる。テーブルの多いローマ字入力で obj は 500KB に達し,かな入力でも 300KB である。さらにコンパイル時間が,テーブルのコンパイルだけで数十分はかかるようになってしまった。これではどうしようもないので対策を考え中。
対策として,そもそも multimap::insert がコードサイズを大きくする要因な気がするのでその辺のコードを inline を使わずに自分で書く,または,ソースコードにテーブルを書かずに,リソースファイルみたいな形式で持たせる,というのを今のところ考え中。
ウェザタイかな入力。ちょっとやってみたら割とすぐにできたので公開してみる。ただ,私はかな入力派ではないため,かな入力派の人がやってみるとおかしな部分があるかも知れない。
ランキングは,とりあえずローマ字入力かかな入力かを表示するようにしてみた。あと,まだ対応したばっかりでバグがあるかもしれないので掲示板での告知はしてなかったりして。
ふうう。この 10 日間,異常に忙しかったんだが,なんとか終わった。これでまたウェザタイとか他のことができる。
早速ウェザタイだが,ランキング,URL 欄にメールアドレスを書かれている方が。まあそれもありかな,ってことで URL 欄がメールアドレスだったら(@ があるかないか,という手抜きだが)mailto となるように変更してみる。
というところでウェザタイを Ver1.3 に。一応リプレイ機能を実装して,私の中にある機能は一通り実装終了。あとはバグがあれば修正していくが,機能追加はしばらく行わない予定。未だに 4 人対戦が不安定だったが,現バージョンではサンプルと全く同じに,Host して,Connect しているだけなので,これ以上はどうしようもない。
ウェザタイ。やっぱり接続できない。
Windows2000 を再インストールしてみる。今までは仮に Win98 からアップデートしていて,いろいろと変な問題があったのだ。とりあえず快適。
DirectMusic。BGM に MIDI を指定するとテンポがおかしくなるという問題を,まっちーさんから報告を受けていた。どうやら DirectMusic は MIDI ファイルをセカンダリセグメントで再生するとテンポがおかしくなるようなので,プライマリセグメントで再生するように変更。
DirectPlay。セッションの列挙をするのをやめることにした。おかげでかなりコードはすっきりしたというか複雑な部分は全くなくなった。が,いつも通り 3 人対戦以上は試していない。
タイトルバーを点滅させる方法。FindWindow を呼び出す。但し,きちんと点滅させるにはタイマー等を用いなければならない。
ウェザタイ。4 人対戦の機会ができたのでテストしてみる。まずアナログ 2 人 + フレッツ ADSL。これは ok で,3 人対戦はできた。次に フレッツ ISDN の人を加えて 4 人対戦(全員 Windows2000)。だが,フレッツの 2 人がホスト以外に見えず,現象は変わらず。
とりあえずログをとって,ちょっと変な部分を修正してみる。
ウェザタイ。Microsoft のサンプルを見ながら,ちょっとでも違う部分をかたっぱしから直してみる。一応いくつか気になる部分があったので修正してみる(Connect の非同期化と排他制御,ポート指定を Host,EnumHosts 前にやるようにする)。
さらに,ルータの設定等を少しでもいらなくするため,ホストとクライアントのポートを同じポートにする。このため,1 台のマシンで複数立ち上げることはできなくなったが,ルータの設定は
だけになった(はず)。
まっちーさんからの報告で,MIDI 再生時におかしな部分があるとのこと。調査中。