ここでは,マニュアル本編で触れられなかった,より詳しい情報について述べます。Weather Typingをもっと深く知りたい方はお読み下さい。

開発目的

最初の目的は「電話回線を使ってタイピングゲームができるか」という技術的興味でした。当時,他の市販タイピングゲームで対戦をしようとしていたんですが,LANでは問題なくできるものの,(電話回線を使った)インターネット接続ではコマ送りのようになってしまいました。で,これは無理なのか,ってことで実験的に作ったのがこのWether Typingでした。

その後,作っている内にいい感じに仕上がってきてしまったので公開することにしました。

動作環境について

Weather TypingはDirectX8以上必須です。これがインストールされていないと起動すらできません。前述のように,当初このソフトは通信対戦タイピングの実験だったので,DirectXの最新版を使ってみよう,ということで最新版に合わせて開発していました。まあ最後に戻せばいいや,とか考えていたように思います。しかし,DirectX8は前バージョンのDirectX7と使い方が全然違っていて,最終的に戻すのは不可能になってしまいました。一応DirectPlay以外は戻そうと思えば戻せますが,DirectPlayだけは無理だったので,全部DirectX8専用にしてしまいました。

てことで,実はDirectX8専用の機能なんて全く使ってません。作ろうと思えばDirectX6くらいで十分作れると思います。ま,そのうちDirectX8が広まるでしょうからいいんですが。

通信について

Weather Typingでは,ローカルプレイヤーについては入力の先読みを行っています。といっても「次の文字は間違えるだろう」とかそういうことではなく,リモートプレイヤーについてはメッセージが来たときに処理し,ローカルプレイヤーについては入力があった時点で先に処理してしまう,というものです。このおかげでローカルプレイヤーについてはネットワークの遅延を気にせずに打つことができますが,リモートプレイヤーについてはメッセージが到着した時点で画面に反映されます。

ワード入力完了のタイミング等については両方のメッセージが到着した時点で処理しているので,ローカルとリモートの差はありませんが,結果的にリモート側の描画が遅れる,というような感じになります。まあ,通常は自分の入力に集中するので問題ないと思います。


Weather Typingでは通信の形態としてピアツーピアを用いています。これは,ホスト側とクライアント側の負荷をできるだけ同じにし,ユーザー間の有利・不利が生じないようにするためですが,これによって以下の問題が生じます。

特に上の問題については,LAN環境ではそれ程問題にはなりませんが,通信の環境によってはゲームが遅くなってしまうことがあるので,注意して下さい。


Weather Typingはゲーム中,以下のポートを使用します。

よって,ルータを経由している場合やファイアーウォールが存在する環境で対戦する場合,上記のポートを空け,特定のマシンに静的マスカレードしてやれば通信対戦が可能です。ちなみに16342はWeather Typing起動時のダイアログで変更可能です。


プレイ人数については,機能的には5人対戦でも6人対戦でも可能です。しかし画面に入り切らないのと,通信速度に不安があり,現在4人対戦までとしています。

複数入力方式対応について

Weather Typingでは,ローマ字入力(QWERTY・DVORAK),かな入力(JISかな・50音・NICOLA)に対応しています。もちろん各方式間の対戦も可能で,各方式でのネットランキングへの参加も可能です。

ローマ字の入力方法については自動判別となっていて,例えば画面に「JO」と表示されていても,「ZYO」と打てばそれが認識され,次からは「ZYO」と表示されるようになっています。この他誰も使わない「JIXYO」なども含め,基本的にはMS-IMEとATOKの両方で対応している入力に対応しています。

NICOLA配列については,「左親指キー」を「無変換キー」,「右親指キー」を「変換キー」に対応させていますが,設定により変更が可能です。親指シフト専用キーボードについては,Weather Typing側で親指キーを認識できないため,対応していません。

ワード自動生成について

Weather Typingでは,「ワード自動生成システム」を導入しています。というとかっこいいですが,要するに「誰が」「何を」「どうした」を組み合わせて文章を作る,例のやつです。最初思いつきでやってみたら,予想よりも面白い文章が出てくる割合が高かったので,そのまま公開してみました。

一応この方式の利点としては,

というのが挙げられます。本来,ワード自動生成というからには,名詞や動詞などを日本語文法に従って(さらに言えば意味も考えて)組み合わせるべきですが,大変なのとそこまでやってもたいして面白くはならないだろう,という観点で現在のような形式にしました。

もしこのシステムが気に入らなければ,「カスタマイズする」の「オリジナルワードの作成」によって,普通の「完成した文章」を使うことも可能です。


また,ワードファイルが対戦相手ごとに異なっていても対戦可能です。この場合,最初のプレイヤーから順にワードが選ばれ,そのワードを全員が打つことになります。

カスタマイズについて

詳しいカスタマイズ法については「カスタマイズする」に譲りますが,ここではカスタマイズ機能の理由について少し述べます。

私達Denasu Systemの中にはサウンド・BGMが作れる人がいません。また,グラフィックを専門にしている人はいますが,あまり仕事をしてくれません。ので,そこら辺はぱじ氏と私モルタルコで適当に作ったのでどう頑張ってもそれなりになってしまいます。よって,ユーザーの方に自分でお気に入りの効果音やBGMにしてもらおう,ということにしました。ワードについても,好きなワードを使用して対戦してもらって構いません。もちろんデフォルトの音やワードが気に入っていただければ私たちも嬉しいです。

タイピングの評価基準について

評価基準

Weather Typingでのタイピング評価の基準は,「同じ文章を入力するのにどちらのプレイヤーの方が速く入力し終わるか」です。対戦の場合,入力方式や入力のカスタマイズ(ti,chiなど)によらず,早く入力し終わった方が得点を得られます。対戦以外の場合でも,入力方式を加味した得点(トータルポイントと呼んでいます)を用いることによって,この基準に従った評価を行っています。

同じ入力方式の場合,単純に入力速度が速い方がトータルポイントが大きくなります。入力方式が異なる場合は少し分かりづらいので補足説明します。入力方式が異なる場合は以下のような考え方で評価を行っています。

ローマ字入力はかな入力より打鍵数が1.5倍程度多くなる

   ↓

同じ入力速度でもかな入力の方が速く打ち終わる

   ↓

同じ入力速度でもかな入力の方が1.5倍速いとみなす(かな入力のトータルポイントを1.5倍に補正する)


さらに,上記をふまえてハンデの場合の説明をします。例えば問題文章が「12345」だったとして,1文字に5打鍵必要な入力方式と1文字に1打鍵必要な入力方式があったとします。

1    2    3    4    5       …問題文章
1111122222333334444455555   …入力方式A
1    2    3    4    5       …入力方式B
		

この場合,Weather Typingでは入力方式Aは入力方式Bよりハンデの時間を5倍にしています。仮に1打鍵に1秒かかるとすると,入力方式Aのハンデは5秒,入力方式Bのハンデは1秒となり,どちらもハンデによって入力ができないのは「1」の分だけとなり,公平になります。

成績表

1度ゲームを行うと,Weather Typingのディレクトリにscore.wtというファイルができます。これが成績表で,バイナリファイルになっていますが,以下の情報が入っています。

これらの情報が,ランキング表示や,ネットランキングに反映されます。

記録はトータルポイント順に,ワードファイルと入力方法の組合せごとに50位,全体で1000位(デフォルト)まで記録されます。

トータルポイント

トータルポイントというのは総合的な点数で,以下の式で計算しています。

(トータルポイント)=
(タイプ速度)×(正確性)×(入力完了ワード数補正)×(入力方法補正)
		

「入力完了ワード数補正」とは,ワード数が少ないと正確な総合点が出せない,ということで,問題数が30ワード未満の場合は得点が少なくなるようになっています。また,30ワード以上の場合はいくら多く打っても総合点は変わらないので,基本的には30ワードで練習してもらえると,効率がよいかと思います。デフォルトの設定では30ワード(ミスなしの場合)になっています。

「入力方法補正」とは,ローマ字・かな等の打鍵数の違いを考慮した補正で,

  1. Weather Typingのそれぞれのワードについて,10万パターンの問題を出題する
  2. それぞれの問題について,各入力方法での打鍵数を数える
  3. それぞれの入力方法が,QWERTY配列に比べ,何分の1の打鍵数であるかを計算する
  4. ローマ字のカスタマイズについては,Weather Typingデフォルト時のカスタマイズとする
  5. SHIFTの扱いについては,1打鍵扱いとするが,親指シフトの右・左親指キーについては1打鍵扱いとはしない

というシミュレーションによって出した各入力方法の打鍵数の比から算出してあります。具体的には,

となっています。これによって,各入力形式で同じ文章を打った場合のローマ字換算した打鍵数で比較することになります。

プレイヤーレベル

プレイヤーのタイピングの実力が,Weather Typingの評価でどのくらいなのかを示す数値。

(プレイヤーレベル)=(現在の入力方式での最高トータルポイント)÷10000
		

となっています。

ハンデ機能

ハンデを指定すると,ワード開始時,一定時間入力ができなくなります。入力不能時間は,以下のようになっています。

(入力不能時間)=(ハンデ)×0.02×(各入力方式での文字数)
		

例えば,入力方式がローマ字で,文章がローマ字換算で20字だったとすると,ハンデ1につき,0.4秒となります。もっと細かい指定をしたい場合は小数(小数点以下1桁)で指定して下さい。

リプレイ機能について

リプレイ機能とは,対戦結果をHDに保存し,後で見られるようにする機能です。将来的には,タイピングが早い人からデータを提供してもらって作者のサイトで公開したり,もしこのソフトを使ってタイピング大会,なんてものを開くことができるのなら,証拠データとして作者のサイトで公開したり,なんてことを考えています。

再生処理の関係上,再生時は,記録するマシンと同等か,それ以上の性能をもったマシンで行なって下さい。


リプレイの設定でリプレイ対戦にチェックを入れると,リプレイと同時に文字を打つことができます。対戦の練習としてはCPU戦もありますが,これはあくまでシングルプレイの補助用の意味合いが強く,あまり対戦している気分はありません。これに対してリプレイ対戦は,マルチプレイでの対人戦をかなりシミュレートできます。対戦したいけどロビーに行くのはちょっと,というような方はこれで対戦の面白さを知ってもらえるといいなあ,とか,あわよくばそのままロビーに来てみて欲しいなあ,とか考えてます。注意事項として,

があります。ちなみにリプレイデータと対戦できるといっても,もちろんリプレイデータがなければ楽しめないわけで,できればいろんなところでいろんな人が自分のリプレイを公開してもらえるとありがたいです。

ロビーについて

サーバ運用がいつまで続くか分からないので突然サービスを中止することもあり得ます。その辺はご了承下さい。


ロビーは以下のようにして動作しています。

ワードサーバについて

ワードサーバはWeather Typing用のワードを皆で作って皆で打とうという企画です。Weather Typingの場合,ワードが多ければ多いほど面白さが増大するのでどんどん追加していってもらえたらありがたいなあ,と。もちろん作者側も随時追加していくつもりです。今後は公式ワードの追加よりワードサーバへの追加が中心になっていくと思います。

上級編なので技術的な話も少し。ワードサーバを作った動機として,いろんなタイピングソフトがそれぞれワードを用意するのは大変なので,タイピングを行うソフトとワードを出題するソフトを分けて自由に組み合わせればいいのではないかというのがあります。これによって,タイピングソフト作者はワードを作る手間が省けるし,プレイする側は好きなワードをいろんなタイピングソフトで試せるし,ワードを作る人もいろんなタイピングソフトで使ってもらえるのでみんな嬉しいのではないかと。

ということでワードサーバ機能は汎用的になるように作ってあります。プロトコルは以下の通り。

クライアント側
HTTPでワードサーバのURLをGET

サーバ側
漢字
ひらがな
漢字
ひらがな
・・・
		

以上です。このプロトコルをサポートすればワードサーバが作れますので自分でもっといいワードサーバを作りたい方は作ってみてください。もちろんこのプロトコルをサポートしたタイピングソフトを作ればWeather Typing公式ワードサーバのワードを使うことができます。

今後の展望

Weather Typing要望集をご覧下さい。