2002年5月のエントリ

ところで次々期版へ向けての機能。

  • 観戦機能
  • 団体戦機能

観戦については以前 Pha-jtd 氏から提案があったが,どうやればよいかちょっと思いつかないので保留中。DPNMSG_INDICATE_CONNECT のユーザデータで対戦か観戦かを送って,その後観戦者についてはメッセージを流し続ける,とかでいいのかな。団体戦はロビーでいただいた提案。2vs2とか1vs3とか。具体的には,リレー方式とか取ったワード数を足しあわせるとかいろいろ考えられそう。

#ただ,そろそろ機能付けすぎになってきてて機能が分かりにくい,っていう感じもするけど。


ライコスジャパンからディレクトリサービスに登録されるので確認を,というメール。URL はトップじゃなくて Weather Typing のページなのが気になるが登録してくれるのはありがたい。ちなみにうちのサイトはリンクフリーとはあえて書いてないですが,もちろんどんどんリンクしてもらって構いませんので。連絡も別にいりません。

部屋作成機能はだいたい完了。もう少ししたら公開できそうなので,その後は安定化を目指して,ウェザタイ本体ごとバージョンアップって流れ。そろそろマニュアル書かねば。あと静的NATの解説も。

昨日の案のように実装したもの。未完成。

2002052801

 

ログインするとグローバルルーム(仮名)に入り,その後誰かが部屋を作ってそこに参加していく感じ。ちなみにサーバ側は1人が複数部屋に入れるようになっているが,今はクライアント側で1人1部屋(グローバルルーム含)に制限してある。人数が少ないうちは多分部屋機能はそんなに使わないかも知れないが,正式ロビー公開後,人が増えてくると使われるようになるかな。

レベル表示も一応実装。公式ワードでプレイしたことのある入力方式のレベルが全て表示されるイメージ。いい略し方はないものか。

ロビー案が Pha-jtd 氏から届いたのでちょいと掲載。最初入ったときはグローバルチャットになり,そこから各部屋に移動するというイメージ。

2002052701

 

ロビー,16 時 30 分くらいから 23 時までログイン出来ない状態だったようですみません。数日前からのこのバグについてはやっと原因が判明したので明日人が少ない時間帯に反映させる予定。ロビー動作報告板かなんか作った方がいいかな。


ロビーに参加しながらなのでだらだら書きます。後半から半分ウェザタイ会議(部屋とかレベル表示とかの話)になっていてかなり参考になりました。レベルを表示するというのと「初めて部屋」を作るというので同意した,のかな。多分。

レベル表示は今一番必要な機能のようで,ついでに細分化(4++ とか)についてはいらないという意見が多かったので保留で。

「初めて部屋」はちょっと試してみたい人が入りやすくなるようにって感じ。ただしそういう人が常にたくさんいて,初めてじゃない人が教えてあげられるという 2 つの条件が必須。でないと今より入りにくくなってしまうわけで。ロビーユーザー数が増えないとまだ無理かな,って気はするけど。

今の形態でも,初めての方に教えてあげて下さってる方々には感謝してます。

後でここ読んだ人のためにリンク。Vector 新着レビュー。なかなか好意的ですね。マニュアルも読んでもらってるみたいで。ということでdenasuトップページのアクセス,ランキングへの新規参加者がかなり増えている。ちなみに Vector の人気・注目ランキングって[人気]-[NEWS]-[PickUp]-[その他]の順番で並んでる,のかな? いきなり上の方にきてびっくり。


ロビー。今日 Pha-jtd さんと午後数時間入っていたが,初めての方が結構来ていたようだ。けど,初めての人には入りづらい感じがあったような。この辺掲示板で話し合って行けるといいんだけど…とりあえずご意見募集です。

未解決問題が多いが,また気付いたことをメモ。

  • メンバを右クリックしたところでメンバの名前コピーが欲しい
  • ロビー起動時に簡単な説明が欲しい,もしくは簡単なヘルプが出るようにしたい

近頃ちょっと時間がとれなさぎみ。というか早いところバージョンアップして開発版とロビーをすっきりさせた方がよいかなあ。

明日は Vector の新着予定日。というかロビーはこのまま明日を迎えていいのだろうか。一応ログインだけでもしておこうか,って私普通のテレホじゃん。


CPU 対戦については,FPS を 60 までに制限してるので 16ms が最小単位なのと,打ち始めと打ち終わりのずれや,CPU 側の時間計測とゲーム側の時間計測のずれなどがあってぴったり設定値と一致するというのは難しい。ただ,普段のマシン(PenIII 1G)だとせいぜい 5 くらいしかずれないのだが,別マシン(Cel 600M)だとかなりずれる上,ミスがでる。現段階では 1 箇所修正して Cel 600M の方でも同じくらいの精度にはなったのだが,もう少し精度を上げられないか試しているところ。なのでアップはまだです。


ついに KLEZ が来た。

Denasu のページってウェザタイプロジェクト始動時にかなり修正して身内ネタを極力排除していたのだが,リンクページだけはそのまま身内ネタなんですね。今更普通のリンク集にしてもしょうがなさそうなのでここだけは身内ネタで。ちょこっと追加。


PC98 エミュレータで遊ぶ。BASICマガジンに投稿してた頃が懐かしい。

そういえば昨日書き忘れたが,ロビークライアントで対戦時,「ホスト(4人)」等,接続人数が表示されるようになった。

ロビークライアントを更新。調整が中心なので新規機能は特になし。

ロビー初の土日が終わってみて,現状と問題点。

  • 現在の同時接続数は日中は1~5人,23時から27時くらいまでが7~11人くらい
  • 23時くらいに2度,ログインできない状態が発生し,ロビーの再起動をかけている。これについては原因の調査中。例外のリカバリがうまくいっていないようだが…
  • 私は23時から26時くらいにログインしているのでその時間の様子しか分からないが,ロビー内の感じとしては,やはり初心者部屋というか部屋分けは必要のようだ
  • 人のいない時間帯にやれば大丈夫,と思っていたロビーのメンテナンスは思ったよりできない。メンテナンス日を決めて強制シャットダウン機能を使うようになるかも
  • クライアントについてはいくつか改善点があるので近々修正版をアップする予定
    • ロビー上では4人以上参加できてしまう
    • キーワード追加で空の文字が追加されてしまうことがある
    • 音を鳴らす機能はONにするとかなり頻繁になるのでデフォルトではOFFに。
    • 自分以外の人を右クリックしたときの動作の変更
    • コピーアンドペーストが効かない時がある
    • リッチエディット上のログがスクロールして見づらい
    • 起動時に WeatherTyping.exe が存在するかのチェック,もしくはディレクトリの指定
    • 部屋作成機能

部屋機能まで付けると多分クライアントが大幅に変わるので再 DL が必要かも。まあテスト中なのであらかじめご了承下さいって書いてあるので大丈夫かな。あとロビーで話を聞いていて分かったこともいくつか。

  • ルータを経由してインターネットに接続している人やファイアウォール設定をしている人は想像以上に多い。のでFAQのページに書いてあるような簡単な説明では不十分。
  • ルータによっては16342ポートを静的に割り当てられないものが存在し,デフォルトの設定では対戦できないことがある
  • 対戦者が多い時,ウェザタイ終了時にプロセスがゾンビ化することがある(ロビーではプロセス起動中かどうかが分かるので気付くようになった)
  • 掲示板にも(以前から?)出ているが,通信が異常に重いという方がいる
  • レベル分けが大雑把すぎるのでもっと細かく

むぅ。やることいっぱい…。


Vector に新着レビューの原稿を提出。Vector の方,もしここ見ててメールが届いてなかったら連絡下さい。(絶対見てないけど)

Vector から新着ソフトレビューへの掲載依頼が来た。以前ファイルを最新版に差し替えてもらったのが新着扱いで掲載される,のかな。5/25 掲載予定ということなので楽しみにしてましょう。

ところでこのタイミングだと,掲載日後,ロビー参加者が増えすぎる可能性があって心配なわけで,もしかすると人数制限をしなければならないかも知れない。まあ,今の形式だと数十人で 1 つのチャットは無理があるので最終的には部屋を分割する必要があるだろうが,それは通信環境がよくなってから,ってことで。

ロビー,排他制御の問題は原因が(多分)判明したので修正しておいた。こっちはサーバ側の問題なのでクライアントを DL し直す必要はない。

しかしクライアント側で大きな問題が…。右側のメンバ表示の何もないところをダブルクリックすると落ちるとかいう。これについては今手元にソースがないので,家に帰ったらすぐ修正してアップしておきます。


というわけでダブルクリックで落ちない版アップ。で今日もロビーにいたところ,想像以上に人が。ご意見は参考にさせて頂きます。ちなみにロビークライアントは結構頻繁にアップすると思いますので,気が向いたら落としてみてください(互換性はできるだけとっていくつもりですが)。

今はロビー開始したばかりかも知れないが,これ以上人が増えてくるとチャット内容が混乱しそうなので部屋を分割できるようにするかも。あと,レベル表示機能については,以前考えていたけどロビーがウェザタイ専用になってしまうと思ってやめた経緯があったり。ゲーム依存情報表示機能とか付けて,ウェザタイはレベルを表示する,とかすればいいのかな。


ついでにサーバの運用について。denasu.to はある方の厚意で運用しているわけだが,考えてみればその方のマシンは夜中ロビーとして動いているわけで,何か落とそうにもロビーを気にしなければならなかったりして。やっぱり高速サーバ計画を実現した方がいいかも。どっちにしろ 1 年後にはデナスの人々はみな生活が変わっているのでどうなるか分からないんだけど。

ロビーテスト公開。近頃は Pha-jtd 氏とメッセンジャ代わりに使ってるのでそうバグってはないはずってことで。使い方はウェザタイページに書いたのでここでは内部構造を少し。

  • ロビーが起動すると,Hi-HO の CGI を使ってアクティブサーバリストを取得する。
  • 現在サーバは denasu.to だけなので,denasu.to へ接続。ここで取得する IP を使って対戦を行うので,ルータ内であってもグローバル IP を認識出来る。(静的 NAT は必要だけど)
  • パスワードに関しては,パスワードを入れた人はサーバのデータベースに insert され,パスワードを知らないと同じハンドルでは利用できなくなる。
  • サーバ自体は java で動いており,サーバに常駐し,接続が来るのを絶えず待ち受けている。
  • ユーザが接続した後は,テキスト形式のコマンドをサーバ・クライアントで送り合う。
  • ホスト・接続機能では,ホストの IP をクライアント側に通知し,その後は P2P で通信しあう。
  • 無通信で切断されるのを防ぐため,一定時間ごとに小さなメッセージをサーバに送る。一定時間内にそれが届かなければ強制ログアウトされる。

このような流れになっている。あまり多人数で試していないので,どのくらいの通信量までサーバが耐えられるのか不明。ひょっとすると高速回線が使えるようになるかも知れないので,負荷が多いようであれば乗り換えるかも。

最後に今後の機能としては,

  • アイコンなどのデザインをもっとよくしたい
  • ロビークライアントが lobby.exe では素っ気なさすぎる
  • チャットでの URL リンク(RichEdit2.0 を使えば楽にできるらしいが,DLL が古いなどの問題が出やすくなるので保留)
  • 指定時間 PC を操作しないと「アイドル」状態になる機能(グローバルフックをかけるためには外部 DLL を作り,配布する必要があり,これも保留)

てなところ。

ロビーのテストが終わったらウェザタイ本体と一緒にして,新ワードも含め,正式バージョンアップ予定。1.6 というよりは 2.0 かも。


その後,ロビーを公開して早速何人か来て下さったのだが,どうもロビーが落ちることがある。恐らく排他制御関連だと思うのだが,原因はまだ不明。それ以外は一応動いているようだった。

昨日書いた CPU 戦,一通りテストが終わったのでアップしてみた。シングルプレイを選び,設定ダイアログの 1 番右のタブで速度を指定すると CPU と擬似対戦ができる。速度一定・ミス無しなので人と打ってる感じではないし,「CPU」戦というのも過言のような気もするのだが,まあいい。「CPU500に勝率8割」とかいう楽しみ方もあるし,「全員が打ち切るまで待つ」ルールにして,純粋に速度の目安にしてもよいし,まあそんな感じで。ちなみに CPU はシングルプレイでしか対戦できません。


ロビーは 1 つバグ修正。Pha-jtd 氏が早く公開しろと言ってくる。

ウェザタイ。何故か CPU 戦なる機能を付けてしまった。相当ソースを変更して少々不安なのでアップはしてないけど,なかなかいいかも。CPU 戦といってもスピード一定ミスなしなので,あくまでもガイドなのだが。究極的には,ユーザーのクセを反映した CPU キャラを自動生成して,それをどこかで配布して,その人と仮想対戦とか仮想トーナメントとかやったら面白そう。


ロビーは昨日から変わらず。バグも落ち着いてきたか。というかそろそろたくさん人を呼んでテストする時期かも。

Vector。何故か new 扱いで更新されている。そういうものなのか。


リプレイターボ機能を搭載。TAB を押している間はターボモードとなり,リプレイを3倍速程度で見られる。対戦開始前の待ち時間とかをとばせるのは結構便利な気がするが,どうだろう。

掲示板から。

ホントはロビーで内部バージョンを表示できるといいんですが。
結構めんどうな問題が出てきたりして,悩むところです。

WeatherTyping.exe から lobby.exe にバージョンを渡す方法。考えてる方法としては,

  1. version.txt などを一緒に配布して,そこからバージョンを得る
  2. WeatherTyping.exe を一度起動すると,バージョン情報をファイルに書き出す
  3. WeatherTyping.exe のファイルのバージョン情報を得る

だが,version.txt は作者側が変更し忘れそうなのでやめるとして,2つめの方法は一度起動しないといけないというのはちょっと無理がある。あとファイルのバージョン情報を使う場合,例えば Ver1.5 なら ver1.5.1 とか内部バージョンを含めた形にするというものだが,Ver1.6 にしたときには Ver1.6.0 になって内部バージョンが変わってしまう。一応今の Ver1.51 は何もなければ Ver1.6 と一緒に対戦できるようにしたいので問題がある。かといって Ver1.5.1 のままにするとロビーにはそう表示されるわけで,「何故?」っていう質問がきそうである。なかなか難しい。


ところでロビーサーバは今のところ denasu.to で稼働しているが,Pha-jtd 氏経由で高速回線が使えるかも知れない。まだまだ未確定だけど。

ロビークライアントのスクリーンショット。

2002050801

久々に開発版をアップ。ロビー完成までアップしないつもりだったが,アップローダ半角カナ対応のためにアップすることにした。主な修正内容。

  • セッション選択時,今まで WeatherTyping セッションを自分で選んでいたが,自動で選択されるようにした。これはロビー起動時に選択がうっとおしかったため。
  • ネットワークがなくても起動する,または起動を早くするため,ネットワークが必要になるまではネットワーク関連を初期化しないようにした。シングルプレイが中心の人にとってはかなり起動が早くなったと思う。
  • 今までそのままにしておいたが,ランキング時に半角カナが混じると文字化けすることがあった。現在のランキングで半角カナで登録している方が結構いるようなので,とりあえずの対応として,半角カナがあったら全角になおすようにした。(JISで表示しているため,半角カナをそのまま表示するのは無理)

Vector の件,メールで報告しておいた。登録したときはきちんと中身をチェックしようということですね。当たり前か。

まっちーさんとロビーのテスト。一応静的NATの場合も問題なく対戦できるようだ。しかしいろいろと細かい問題が出てきているので本格稼働はまだ先。

ランキング,条件の絞り込みをしたときに 50 位単位で切れる処理がバグっていた模様。とりあえず直しておいた。

ロビーはチャットの GUI に凝ろうとすると結構大変。Messanger は RichEdit 使ってるようなので同じようにやってみたが,URL のリンクってどうやるのさ,とか。

昨日「明日あたり開発版をアップすると思う」と書いたが,多分ロビー対応時にもう少し本体に変更が必要になりそうなので保留。ロビーの状況としては,一応稼働するようにはなっていて,細かい部分の作り込みをやっているところ。

ロビーのアイコン,どうしよう…。

ロビー。チャット部分についてはほぼ完成。簡単なホスト・接続機能もできているので,残るはウェザタイとロビークライアントのプロセス間通信。ゲーム開始とか終了とかの通知ですね。あと安定化すれば一通り完成。ユーザー登録とマルチプレイランキングは,今のところロビーが軌道に乗ったらやっていくつもり。ちなみにロビー構築に伴ってウェザタイ本体も少々変更したので明日あたり開発版をアップすると思う。


ちょっと書いておきたいんですが。ウェザタイでワードが表示されたときに一定時間打てない時間がありますが,これについて補足。あれは作者の趣味でつけたというよりも,仕方なくそうなっているという部分が大きいです。入力不能時間を 0 にすると分かりますが,自分が問題文を打ち終わる前に対戦相手が打ち終わった場合,瞬間的に次の問題に行ってしまうと,どうしても前の文章の続きを打ってミス入力になってしまうことが多くなります。TOD なんかの場合,ワードの最初の文字はミス入力にしないというルールで回避してますが,それでもたまたま最初の文字がヒットしてしまった場合,ミス入力になります。でウェザタイも最初はそうしてたんですが,最初の文字がヒットするというのが想像以上に多く,結局入力不能時間を作ることによって回避することにしました。これ以外で何かいい方法があれば変更してもよいのですが。ま,それだけです。