‘Weather Typing’のエントリ

TBS「ラヴィット!」でタイピング企画があり、Weather Typingの対戦が放送された。期間限定だけどTVerで公開されている。

メールで相談を頂いていたが、準備期間がかなり短く、私も質問などに最低限しか回答できない状況だったので、生放送で大丈夫なのかな、と思ってたけど、無事終わって何より。大会でも8人対戦なんてめったにないので新鮮だった。

速度的には300kpm~400kpmくらいだったので、まあまあレベルは高い気がする。最後の1ポイントになったら足が震えるというのは実際対戦してみれば分かるかと。

最後、手動の画面表示と実際の得点が途中で1点ずれたので幻の10問目になっていたり、勝敗ルールがトータルポイントになっていたので勝敗が変に見えたりしていた。別途観戦モードPCを用意して全員のポイントを確認できるようにしたり、ルールをワード数に変更したりすればよくなるんだけど、さすがにそこまでは、と。

ソフト側でもいろいろと改善したいところはあるんだけど、作業時間が取れない。11月くらいから普通に休日は休めそうなので活動再開できるかな。

タイピング日本一を決める大会「REALFORCE TYPING CHAMPIONSHIP 2024」を日テレスタジオで観戦してきた。日を置くと書けなくなってしまうので最速感想。ネタバレあり。

去年までの観戦記:RTC2017RTC2018RTC2019RTC2023

配信:YoutubeTwitch

全般

今回もありがたいことにWeather Typingを使用頂けるとのことで、協力させてもらった。お話を聞いたのも割と直前だったので、依頼を受けて打鍵音を修正したくらい。現地ではあまり分からなかったけど、配信だと赤側の音と青側の音が少し左右に振られている。どのくらいパンするとよいのか分からなかったので、どんな感じですかね。

タイパー視点での感想

まず会場が広い。去年から観客席がかなり大きくなっていた。去年も感じたが、知ってる顔の割合が少なくなっていて、身内の大会から一般の大会に成長している感があっていい。

内容としては、いったんの世代交代みたいなところが見られた。上位選手はほぼ全員互角だったので実際にはそこまで差はないんだけど、決勝戦常連のmiri選手とmuller選手に勝ったくわな選手対三山羊選手の決勝戦、さらにかな入力の初優勝と、これまでの歴史を塗り替えた感がある。かなについては、正直このルールでかなが優勝できると思ってなかった*ので、かなりの衝撃。

*Weather Typingでは、かなの1打鍵はローマ字の1.5倍の価値としている。例えばかなの「さ」とローマ字で「sa」を比べると同じ1打鍵でも2倍の差があり、Weather Typingのワード全体の統計を取ると平均1.5倍。それを前提としたランキングでもかなが上位。なんだけど、かな入力はキーボード4段打ちだったり、打鍵数が少ない影響で正確性を回復しづらいので、緊張感のあるオフライン大会かつ正確性重視ルールではかなり不利になる。

その上で今回、三山羊選手 vs muller選手のかな対決で1100kpmとか出ていたけど、こんな速度で正確に打たれるとさすがにローマ字は勝てないのか。

てことでいったんは世代交代に見えるけど、次回はレジェンドの恐ろしさを魅せてくれるのか、さらに新しい歴史になるのか、楽しみなところ。

開発視点での感想

今回、現地観戦しつつ少し運営側を見せて頂いた。いつも以上にトラブルに怯えつつもいろいろと参考になった。

とりあえず現地で気になったところだけ配信で確認。

一回戦 miri選手 vs riafi選手。riafi選手が最初の2ワードを打てなかったことがあったけど、配信を見る感じ、ウィンドウのフォーカスが外れてた感じかな。ミ田キーを押してしまって打てないというのも発生しているようなので、何かしら対策ができないか。

一回戦 セレナーデ☆ゆうき選手 vs muller選手。最後ラグで試合終了と勘違いしたというところ。配信(観戦PC)ではラグっぽくは見えなかったので、対戦PC側でラグがあった感じだろうか。1回戦最後の試合だったので、連続稼働で重くなる現象がまだ残っているのかな。ちなみに大会後にセレナーデ☆ゆうき選手からソフトのせいにしてすみませんと謝られてしまった。面白いだけでなく人間性も素晴らしい方ですね。

全体

今回からトロフィー(?)に優勝者の名前を刻んでいくとのこと。ということは来年度以降もある、という宣言と受け止めました(私はその辺りは聞いてないので勝手に言ってるだけ)。

大会も身内の大会から一般化して、新しい人が優勝して、今後も楽しみ。な一方で、前回も少し書いたけど、Weather Typingは来月で23周年という古いソフト。大学生がコンセプトの重要性も分からないまま適当に「Weather」って付けてもはや謎の名前になっているくらいのソフトなわけで、タイピングe-sportsのポテンシャルを活かせる新しいソフトウェアの必要性はやっぱり感じる。私も新しいタイピングソフトを作ってたりはするけど、100連勤とかの合間に進めるのは難しくて、誰か作りませんかね。

今年も「REALFORCE TYPING CHAMPIONSHIP 2024」が開催される。予選が終わって3/9に日テレの会場にて本戦。私も少しe-typingにトライしたけど予選突破はできず。ていうか1000位にも入れないけど…

今年もWeather Typingとして協力させて頂くことになっていてありがたい。去年の動画を見直しておかないと。

変わらず忙しすぎてDenasu関連の進捗なし。

必要があってOpenAIを使おうとしたら、Creditの試用期限が切れてたので課金してみた。とりあえず$100課金してちょっと遊んでみたけど1円未満だったので結構遊べそう。

以下はWeatherTyping用の問題文を作ってもらったもの。もう少し長めに生成してもらいたいんだけど、ちょっと試した感じ難しかった。API呼び出しできるので、ウェザタイから呼び出してワード生成を任せることもできる。やるとしたらワードを作る度にお金がかかってしまうので、有償オプションになるのかな。ユーザのOpenAIトークンを入力してもらえばいいかも知れないけど、そういうモデルにしてるサービスってあるのかな。

ちなみにワードサーバの形で実装すれば誰でもChatGPT使用のウェザタイワードサーバを作成できるので、プロンプトエンジニアの方々、是非よろしくお願いします。

月1回の日記ノルマを消化しないと。

Typing Field開発は進めたいんだけど、その前にWeather Typingロビーやランキングのセキュア化をやらないといけなくて、そうするとWeather Typing自体の作り直しが結構発生する。ついでに前々から話がでていたXamarin Formsの廃止と.NET MAUI移行の話もあって、どうせならWeather Typing 5.0にするかな、と思っているところ。

Typing FieldはUnityで作っているが、Xamarin Formsとコードベースがかなり違うので別々のソースになっている。これだとメンテもしきれないので統一したいというものある。ただ、.NET MAUIはXamarin Formsの後継なので、Xamarin Forms同様誰も使ってる人がいなくて大量のバグに悩まされる可能性が高い。ので、Unityかな。

Unityに移行するとなると、多少安定していた今のバージョンからまたしばらく不安定なバージョンが続くのが懸案だけど、自動テストを駆使してなんとか安定させたいところ。

ロードマップとしては以下なんだけど、あと10年くらいかかりそう。

  1. ロビーのセキュア化:完了
  2. ロビーの自動テスト:完了
  3. ランキングのセキュア化:完了
  4. ランキングの自動テスト:作業中
  5. Weather Typingのセキュア化
  6. ベース部分をUnityへ移植
  7. ベース部分の自動テスト
  8. Weather Typing UIをUnityで作り直し -> WT 5.0リリース
  9. Typing Field UI作成
  10. Typing Fieldのゲームデザインやり直し
  11. Typing Fieldのアセット作り
  12. Typing Field実装 -> TF 1.0リリース

まあ、常に開発していたいので、これくらい大変じゃないとやる気しないよね、ってことで。

ゴールデンウィーク終了。いろいろ必要だったのでずっとモダンな開発プロセスを勉強してた。

まず「単体テストの考え方/使い方」。以前AppiumでWeather TypingのUIテスト自動化を作って、ほとんどのテストをUIからテストするようにしてたんだけど、Appium自体が既に使い物にならなくなってるし、ちょっと機能エンハンスするだけでテストに通らなくなってしまうので諦めていた。が、この本を読むとUIテストで完全に自動テストするのはアンチパターンぽいことが分かった。もっとボトムアップに、外部仕様だけをテストするようにすればいいのか。とりあえずテストしやすいロビーやランキングからテストコードを作っているところ。

「ボトムアップ」というのは、UIは一番上位レベルのテストなので、UI仕様がちょっと変わるとテストが壊れるし、フォーカスを合わせたりスクロールしたりでとにかく動作が不安定で時間もかかる。なので、全てのケースをUIでテストするのは効率が悪すぎる。そうではなく、各クラスの動作を確認できる箇所は各クラスで確認して、その結果を前提にして上位のクラスの動作を確認して、UIのテストはUIのテストだけをすべき。そのためには実装もテストしやすいように作る必要があって、ロジックとUIを分離して、ロジックはロジックだけで高速な自動テストができるようにし、UIは単なる表示だけにして中身はロジックを呼び出すようにする。

「外部仕様だけ」というのは、内部仕様を自動テストに入れてしまうとすぐテストが壊れるので、将来的に変更のされない、というかそこを変更し直すなら当然テストコードも変更するよね、というものだけをテストする。つまり一つ上位や同じ階層向けのI/Fをテストする。こうしておくと内部実装の細かいところを変えてもテストコードは変わらないし、API名が変わるならリファクタリング機能で一括で変わるし、新しく機能を作ったならそこだけテストを追加すればいい。

で、この本もそうだけど、manningのこのシリーズの本いいですよね。「セキュア・バイ・デザイン」もすごいよかったし。


次にGitHubとCI/CD。Git自体はずっと使っているけど、そろそろCI/CD周りを勉強しないとついていけなくなっているので「Accelerate DevOps with GitHub」を読みつついろいろ試してみた。まだPart4で80%くらいまでしか読めてないけど。GitHub Actionでかなりいろんなことができて、ビルド、単体テスト、静的解析、クラウドへのコンテナのデプロイ、脆弱性スキャンみたいなことまで自動でできて、チケット管理とかクロスチェックとか、修正しないとビルド失敗も可能。なるほど、こういう風に使うのか。

機能をフルに使うにはパブリックレポジトリか有償になってしまうので、今のウェザタイで積極的に使うのは難しいんだけど、セキュリティ課題が解決したらいっそOSSにしてしまう手もある。


てことでセキュリティ。最近ウェザタイのロビーも末期になってきて、セキュリティをちゃんと実装するか廃止するか、って感じになっている。てことでTyping Fieldで実装しているセキュリティ機能をウェザタイに移植中。主にはTLS化とFIDOぽい認証。ここまでいけばロジックを守る必要はないので、あとクライアントの秘密鍵さえちゃんと守れれば、ランキングのチートも難しくなってOSSにしてもよさそうなんだけど、HSMを前提にするわけにはいかず、TPM使うのも大変。オンラインゲームでOSSにしてるようなものってあるのかなあ。というかブラウザゲームはOSSみたいなものだけど、チート対策ってどうしているのか。通信の保護をやぶるよりキーボードをシミュレーションする方が手っ取り早いからあんまり問題にならないのかなあ。

タイピング日本一を決める大会「REALFORCE TYPING CHAMPIONSHIP 2023」、3/12に行われたオフライン大会を観戦してきた。RTC2023は2019年以来4回目。RTC2019年の後、にじさんじ打鍵王でタイピングが盛り上がったり、miri選手が数多くのテレビ番組で紹介されたり、今やれば結構注目されるんじゃないかと思っていたが、長いコロナの休止期間を経てついに開催。今日を逃すといつ日記を書けるか分からないので当日中に残しておく。

今回、会社員の活動が1月からずっと休みなしなので現地観戦も行く気力がなかったのだが、Twitterで観戦勢の報告を見ているとやはり行きたくなってきたので現地へ。タイピング速度測定の作者様やタイピンガーZの作者様と少しだけど話ができて良かった。

去年までの観戦記:RTC2017RTC2018RTC2019
配信はYoutubeTwitch。今回twitterの反応が結構多い気がしますね。

タイパー視点での感想

タイパー視点でというのは他の人が書いてくれるのでここでは省略。といっても最近はtwitterで投稿するだけでブログ書く人も減ったけど。

個人的にはWeather TypingというコンテンツはRTC2019のひろりんご選手のGrand Finalがエンディングで、これ以上の展開はもうないと思っていたけど、これだけ選手が入れ替わって新しい展開になるとは。今回日テレ共催になることで、いい意味で内輪向けの大会から脱却しつつある感じがした。

会場は日テレのスタジオということで豪華。カメラワークとか、青と赤の照明の効果的な使い方とか、演出がすごい。

今回特にかなvsローマ字、かなvsかな、ローマ字vsローマ字それぞれ見所があった気がする。ワード毎の特徴も結構はっきりしているのでその辺を理解すると面白いかも。

具体的な対戦で特筆するとしたら3位決定戦のはやとぅ選手。前回95%ルールをうまく使っていたので今回はどう魅せてくれるかと思っていたが、今回も3位決定戦で相手が95%からミス入力して94%になった一瞬の隙を突いて勝っていた。

決勝戦はもはや言うことないですね。Weather Typingの試合で一番面白いのは互角の対戦だが、あの速度でのローマ字vsローマ字の完全に互角な対戦は最高に盛り上がる。現地の緊張感がすごかった。

あとは選手のキャラクター性も重要になってきたかな。今回たのんさんが公式ガイドを作成していたが、各選手の紹介が入っていたのが良かった。にじさんじ打鍵王が盛り上がるのはそれぞれキャラクターがあってそれぞれにファンが付いているところも大きいと思うので、miri選手の「王者」みたいにはっきりしたキャラクターがあって周知されていると強い。そういう意味ではセレナーデ☆ゆうきさんには給料を払ってでも毎回参加してもらうべきだと思います。

開発視点での感想

今回は観戦している分には問題らしい問題はなかったと思うのだが、どうだろう。RTC2017以降、動作が重くなる問題、結果画面が表示されない問題、片方のワード開始が遅れてしまう問題、最初のワードが打てなくなる問題、と毎回何かしら問題が発生して運営に支障が出ていたのだが、4回目にしてようやく安心してみることができた。

今回RTC版は以下の改善を入れている。この辺は本体に取り込む予定。

  • 観戦モードで1プレイヤー側の打鍵音を出すようにした。これは「HOKKAIDO esports FESTIVAL2022」の後に頂いた要望だが、ようやく実装。リプレイでも同じ要望を何年も前から言われているけど、同様なので修正するかな。
  • 観戦モードでプレイヤーの表示順を固定する。画面左のプレイヤーが必ず上に来ないとどっちがどっちなのか混乱するので、必ず同じ順番になるようにした。この辺りは次バージョンの別修正の副作用でどちらにしろ実装する予定。
  • 観戦モードのときに他のプレイヤーが全員落ちると動作がおかしくなる。これは念のため。

あと、RTC2023向けというわけではないが、ワード終了時のkpm表示は入れて良かった。もはや昔からこういう仕様だったかのようになじんでいるが、実は2018の大会の時に「入力不能時間のときにグレーの文字を表示するくらいだったら、ワードを非表示にした方がいい」という意見をもらってRTC2019で非表示化した。その後、それならその非表示の時間にワード毎のスピードを表示しよう、となって追加したもの。どっちがワードを取ったか、またワード毎に1000kpmオーバーとかが数値で分かりやすくなって盛り上がりに役立っていた。

まとめ

RTC2019以降、東プレさんもずっと開催のため調整を続けていたことを知っているので、ついにオフライン+観戦ありという最高の形での開催を実現して頂いた運営さんへは感謝。演出や配信、e-sportsとして本気でやっていこうというのを感じる。

一方ここまでいくと個人で作っているWeather Typingの限界も感じる。タイピングのe-sportsとしてのポテンシャルに比べてソフトウェアが足りていない感はずっとある。モダンなオンラインゲームとしてタイピングe-sportsのポテンシャルを活かせるソフトウェア、誰か作りませんかね?

WT Android版 4.3をリリース。他のプラットフォームで修正したいくつかのバグFixと、Simejiでもとりあえず動くようにしたくらい。IMEは全ての方式に対応はできず、一つのIMEに最適化すると他で動かなくなるのでいろいろ妥協しているので、とりあえずGboardでもSimejiでもなんとなく動くようにした。

で、今回Android 12向けにしたのだが、ストレージ周りが変更になって苦労した。内部ストレージにデータを入れるとアンインストールで全部消えてしまうのでSDカードにデータを置いていたのだが、Android11で使えなくなった。SDカードのアプリケーション領域に置いているので、4.3ではWTをアンインストールすると記録が消える。今時はクラウドに置けばいいんだろうけどリリースを優先させたのでそこまでは変えなかった。以前のバージョンからアップデートすると勝手に移動されるようにはしたので過去のバージョンの記録は消えない。

あとはGoogle Playのリリースにあたってデータセーフティのポリシーを定める必要ができた。20年前の設計なので暗号化もないしデータの削除機能もないが、別に公開しておけばいいのか。そこで出てくるR8による難読化ってのが気になったけど、Android単体で難読化ができるようになってるのか。今回はやらないけど調査要。

denasuサーバをメンテナンス。ロビーに人がいないタイミングがなかなかないのでメンテナンスするタイミングが難しい。サーバを再起動してもクライアントからある程度再接続するようにできればいいんだろうけど。

最近ロビーサーバへの攻撃が増えているのでその対策と、人が多くなってきたときにゾンビが出てきてしまう問題の修正。1つ目は通信のチェックはしてるんだけどそのまま通信がつながったままになっていたので明示的に切るようにした。2つ目はJavaのSynchronizedでinner classのthisをlockしていたのが問題で、ロックされてなくてnullポインタが起きていたのが原因、と思われる。何年も調査してたんだけど原因が分からず、今回Typing Field開発にあたってさすがに修正しようと思って1週間くらいデバッグした。本当にそれが原因かは分からないけど、ロジック的にそこしかなく再現させたときの動作も一致しているので修正して様子見。

にじさんじ打鍵王 2を視聴。にじさんじ打鍵王は2020年4月以来、二回目の開催。前回開催時の日記
少し前に、第二回開催にあたって今回もWeather Typingを使って頂けるとの連絡をもらい、楽しみにしていた。

大会について

ここはウェザタイの制作者側の記事ということで内容についてはあまり触れないが、各試合、違いが出ていて面白かった。特に準決勝以降は普通に速度も速くて見応えがあった。やっぱりウェザタイの面白いところは接戦時の緊張感ですね。プレイしてても見ていても面白い。

そして運営側もかなり慣れていて安心感が。OKが押せない問題にあらかじめ対応を検討していたり、その場合キャンセルしてもゲームキーを変えないなどのノウハウがあったり。まだまだオンライン大会に使いづらい部分もあるのでいろいろ工夫して使って頂いてありがたい。

サーバの負荷テスト

前回もそうだったが、今回もサーバの負荷テストみたいになっていた。今回、同時視聴数が75000くらいで前回の2倍以上になっていて、ウェザタイサーバ同時接続数も前回の40人から70人くらいまでいっていた。それでもCPU20%、メモリ70%くらいだったのでまだ大丈夫かな。

ウェザタイについて

ウェザタイは実は2年前からバージョンアップしてなくて、いろいろ修正が必要な点がたまっている。M1 Mac対応とか。ただ、できるだけ新タイピングソフトの開発に開発リソースを割きたくて手が回っていない状態。

タイピング対戦の面白さをもっと一般に広めるには、もっと配信に映えるようなタイピング対戦ソフトが必要ということで、eスポーツ化に向けた3Dタイピング対戦ゲームを作っている。まだリリースはずっと先だけど、最後に宣伝。

Xamarin.Forms 5.0.0にアップデートしてずっと困っていた問題が解決。ようやくウェザタイのWindows Desktop版がまともに動くようになった。

Xamarin.Forms 4.8からWPFのフォント指定ができなくなった。ウェザタイの?ボタン等にGoogleのマテリアルアイコンを使っているのだが、豆腐になってしまう。GitHubのバグ報告にもあがっていて5.0.1で修正されることになっていたので待っていたのだが、1年以上そのまま。.NET MAUIに移行しようにもまだ正式リリースされないため、Visual StudioのPreview版を入れると環境がおかしくなるのでやりたくない。

ということでウェザタイのバージョンアップが止まっていたのだが、いろいろ大会や配信なども行われていて、修正したいところが増えてきたため、本格的に調査。

Xamarinの該当するソースコードを読んでみて、組み込んで実行してみると、どうもURLを指定する方法からリソースファイルを取ってくる方法に変わっている。で、いろいろ探っているとフォントを指定する新しい方法が紹介されていた。各プラットフォームでそれぞれフォントを指定していたのを、共通のプロジェクトで指定できるようになったらしい。これを設定したら表示されるようになった。

だったら、「(古い方法が使えなくなったのは)バグだから修正する」ではなく「新しい方法を使ってくれ」と言って欲しいのだが・・・。

HOKKAIDO esports FESTIVAL2022」でウェザータイピング企業対抗戦が開催された。元々は他のイベントとともに開催予定だったのだが、コロナの影響で延期になっていたもの。Youtubeでアーカイブしているので是非。ボンバーマンも面白かった。

企業対抗戦ということで、北海道のメディアや学校、IT企業などが参加していて、通常のeスポーツに比べて幅広い参加者。オフライン大会だったので、現地の盛り上がりが感じられて良かった。

最初開始に手間取っていたのは何だろう。サーバはちゃんと動いていたので、操作的なものかな。あと例えば、文字が小さくて読みづらかったので、文字拡大してもらえると良かった気がする。この辺、大会のときはこういう風にやるといいよ、的なTipsを公開すればいいんだろうけど。

ということでタイピングeスポーツ専用のソフトってことで作っている「Typing Field Online」だけど、2月から副業の会社員が休みなし状態なのでなかなか進まない。

夏休み以降ついに作業時間がとれたので開発を再開。もうそろそろこっち一本に専念したいところ。

で、UnityのAIエンジンであるBarracudaが2.2.1になっていたので試してみたところ、以前の日記で書いていた問題が解決した。修正ソースコードを見てもズバリここが直っていたわけではなく、いろんなところが直っていてよく分からないが、「Fixed GPU Flatten when channel order is NHWC」この辺りの修正なんだろうか。ともあれこれでBarracudaのソースコードに自力でパッチを当てなくてもよくなった。

もう一つ修正待ちのXamarin Formsは5.0.1が出る気配はない。5.0.0だとWPFのフォントが文字化けしてしまうのでウェザタイのバージョンアップもできないまま。

Warriors of Typing S3 -夏の陣- の配信を見ていた。一通り動いてはいるのだが、やっぱりいろいろ直したいところがありますね。

実はXamarin 5.0.0にアップデートしたらカスタムフォントが使えなくなってしまい、5.0.1で直るらしいのだが、まだまだ時間がかかるようでウェザタイも更新できないという状況だったりする。このままMAUIになってしまうのだろうか・・・。今更Unityにするのは辛いし。

で、Twitterで検索しているとWarriors of Typing以外にも最近ウェザタイを扱っている方が何人かいる模様。今のウェザタイは20年分のしがらみがいろいろとあって分かりにくい箇所が多いですよね。ワード1とワード4って何が違うんだ、とか。

ワード自動生成を試している動画もあったけど、別件でいろいろ問題が見つかっていて、打てない文字があったり不適切な単語が混じっていたりする。この辺も直したいんだけどいつになるかなあ。

タイピングオンライン(仮)の進捗。

前回までやっていた「タイピングして相手のワードを打つ」というルールだと全然面白くなかったので、ゲームデザインの本を読みあさりつつずっとルールを考えている。

で、少しずつ面白くなりかけてるバージョン。ワードの種類をいくつか用意して、自分が宣言したワードを打つと相手にダメージが入るようにしてみた。自分が打ち終わる前に相手がワードを宣言して打ち終わるとダメージは入らない。多少かけひき、戦略が生まれると思うんだけど。まだ単調な気もするので、さらにジャンケン要素が入るともっと面白くなりそうかな。ただCPU戦だといまいちどう戦うのがよいのか分からないので、早く対人戦をやってみたいところ。やってみたいですよ、ねえ。

とりあえずワードは「単語」「短文」「文章」を選んで、長いワードを打ち終われば大きなダメージが入るようにしている。早い人相手でも単語をたくさん打てばダメージを入れられるわけだけど、そうなると泥仕合になったりして、どっちが勝つか分からなくなるかな。当然ノーミスコンボとかあるだろうし。あとは、数値多めワードとか、カタカナ多めワードとか、入力困難ワードとか、アイテムで取れるようにするつもり。ウェザタイでワード自動生成とワード難易度判定を研究したからこそ可能な話。

デバッグ版だとディープラーニングが結構遅いので動画がカクカクしてるけど、この辺は調整次第でなんとかなりそうかな。

【視聴者参加型】即打!タイピング勝負!【鈴木勝/にじさんじ】を視聴。配信者が視聴者とWeather Typingで対戦する企画。第4回目くらいですかね。いつも使って頂いてありがたい。そういえば打鍵王も隔年開催という噂が。

やっぱりワードの組合せが面白くていつまでも飽きないのがいいですね。完全自動生成でもこのくらい面白くなればいいんだけど。

対戦について。我慢できず自分もこっそり参加してみたけど楽しかった。2ポイントしかとれなかったけど。同じくらいのレベルの人と対戦するのが一番面白い。ので、今作っているやつはアイテムとかコンボで何かを溜めるとかそういうのを考えているけど結構むずい。

それはおいておいて課題をメモ。

  • グラフで数千kpmになっていることが。昔たにごんさんがレベル57相当を出して修正したんだけどまだ何かあるのか→かり~さんから、ラグがあるときに1フレームで数文字打って次の問題へいった場合という情報をもらいました。
  • 「ゲームキーを毎回変更する」オプションはゲーム終了ごとに変更するという意味。ゲーム中には変更できない
  • 誰かの反応がなくなった場合などホスト側で強制終了したい。現状は全員ESCがいるのでデッドロック
  • 最大人数を制限しているとき、同時にアクセスしすぎると最大人数を超えてしまう→8人はサーバで制限しているので超えないが、それ未満はゲーム毎に違うのでホストからサーバへ通知している。排他制御がうまくいっていない。
  • 対戦開始画面で名前が黒くなってしまうことがある。ゲーム開始すると色が出る。
  • スマホ vs PC。実際対戦しているのは初めて見たけど、通信環境的に厳しそうだった。ワード取得後の判定は全員の結果を待つので、スマホの人がボトルネックになって遅れることが結構あった。遅延が大きいのかパケットが詰まってしまうのかは不明。

ウェザタイも今年で20年ということでリーフレットを作ってみた。

せっかくなので、印刷も。今は個人向けに小数でも印刷してくれるので便利。

オフ会や大会なんかがあれば配れるんだけど、今はそういうものできないのでとりあえず手元においておくしか。

プロeスポーツチーム「DetonatioN Gaming」による対戦動画 「Q・W・E・Rしか打てない人たち(DFM)でタイピング対決をしてみるとこうなる」が公開されている。少し前にメールで動画利用について問い合わせがあったもの。eスポーツとして認知度が上がるならどんどん使って欲しいところですね。

速度的には平均すると500くらいなので今の私でも勝てるくらい。ということは、これからeスポーツタイピングが流行るとして、今から頑張れば誰でも活躍できるということですね。動画を見る感じ、プレイだけでなくトーク力も重要に見えるけど。

てな感じで、やはり見た目が地味ですね。今作っている3Dのタイピングソフトの完成が臨まれる。

Unityの練習に作っているやつ。

地形はZENRIN City Asset SeriesのJapanese Otaku City、モデルデータはAdvanced People Pack 2を使ってみた。

データを持ってきて配置して少しコードを入れるだけでここまでできてしまうのか。

Weather Typing Android版4.2.1を公開。Android対応で、ロビー等にプラットフォームを表示させるようにしたので他よりバージョンを上げている。Windows版もテストしたらバージョンアップ予定。

Xamarin Android。Windows版に比べてユーザも多いからそこまでひどいバグはない。けど、一つ、画面下のナビゲーションバーの戻るボタンでアプリを終わる(Sleep)と、そのまま次回起動したときにNavigationPageのナビゲーションで落ちる。まあ前のバージョンからそうなんだけど。

Xamarinのソースまで追ってみたけど、Xamarin側のページスタックとネイティブ側のページスタックがずれてしまうことまでしか分からず。仕方がないので戻るボタンで終わった場合、Sleepでなく強制終了するようにした。

あとは、前、x86版をビルドすると何故かx64版も一緒に同梱されていてしまったが、今回はx86版だけが同梱されるようになった。2つを統合できる気もしないでもないが、直ったのかどうなのか調べるのも面倒なのでまだ2つのパッケージのまま。

【視聴者参加型】タイピング対決第4回~負けたら罰ゲーム~【鈴木勝/にじさんじ】をリアルタイム視聴。していたのだが、最後の対戦、凄く重くなっていた。

基本的には、対戦相手の内の誰かが重いとワードを打ち終わったときに待ちが発生するので全員が重くなるというのはあるが、それともちょっと違う感じ。以前から、長く対戦をしていると段々重くなるという報告があり、それなのかな? ということでちゃんと調査してみた。

とりあえず原因と思われる箇所は2箇所発見したので直して開発版にアップロードしてみた。他のテストを全くしていないのでどこかバグってるかもしれないが、重さが気になっていた方は試してみて欲しい。

  • デバッグ用に、入力オートマトンをmapに登録しているのだが、本体側のドメインでは削除していたがプラグイン側のドメイン上で削除されてなかった。段々mapの検索に時間がかかるようになって遅くなる
  • 結果表示画面を毎回作ってずっと残っていた。これは他の画面同様、画面を使い回すことでメモリ消費量を抑えるようにした。

まだ対戦を繰り返していくと微妙にメモリが増えていくのだが、とりあえずここまでで100回プレイしても500kpmくらいなら平気だったので公開。1000kpmとかだとまだ少し重くなる感じ。

あと、Windowsストア版も気になっていた効果音再生を改善。普通のMediaPlayerクラスを使っていたのだが、ゲーム用のXAudio2を使うようにしたらだいぶパフォーマンスが上がった。全体的なパフォーマンスはWindowsデスクトップ版よりもいいと感じる。こちらもテスト終わったら正式公開予定。

WT4.1の進捗。一通り開発項目は完了。あとはテストツールを直してテストすれば終わり。主に文章の自動生成とシミュレーションベースのCPU。

で、マイナーバージョンアップなのでXamarinを4.5から4.6にアップデートしたが、今回のバグはLabelが使い物にならなくなったこと。マージンを指定すると文字が切れるし改行できないし描画が更新されない。今日は試行錯誤でいろいろ変えてみてたまたまうまくいったら全てのラベルに適用という不毛な作業をやっていた。

しばらく研究していたウェザタイの新CPUがなんとなくできた。ニューラルネットワークを使う方法をずっと研究してたんだけど、結局普通にモデル化した。ニューラルネットワークも、Seq2Seqでひらがな-ローマ字変換するところまでは作ったんだけど、そこからコストを反映させて学習させるのが難しいというか、普通にモデル化するのとあまり変わらない感じがして。

モデル化としては、1打鍵ごとに指の配置を決めてコストを計算して最適な指の動きをするようにしてみた。以下の動画のように、勝手にNNの代わりにXNを使うようになったり「ー」を間違えやすかったりでちょっと人間っぽくなってる気がする。もう少し高速化とチューニングすれば、もっと人と対戦してるような感じになるかも。ちなみにコスト計算は「タイピング Professional」の記事をだいぶ参考にさせてもらってます。

てことで、ウェザタイ3~ウェザタイ4で未だレガシーな実装が残っていた部分、文章自動生成とCPU戦をモダンにする目処が立った。これと配信等で分かったUIの問題点を直してバージョンアップって感じかな。

最後の結果表示、結構人間と似たグラフになっているのが面白い。

Weather Typing、ワード完全自動生成版をテスト公開。まだ精度が低かったのでしばらく公開するつもりはなかったんだけど、いろいろ工夫したらだいぶよくなって公開したくなってしまった。

この前動画を上げたときからの変更点:

日本語WordNetをコーパスにしたこと。この前はWikipediaをコーパスとして使ってたんだけど、だいぶ単語が特殊なのと文章が長くなってしまってあまり良くなかった。Wordnetは、例文が簡単で短文が多いので試してみたらずいぶんウェザタイっぽくなった。あとはライセンス的にWikimediaはCC-BY-SAでちょっと使いづらい。日本の著作権法上はディープラーニングの学習に使うならよさそうだけど。

あとは、ウェザタイっぽくなるように文章をできるだけ短く生成するようにしてみた。やり方はまだ秘密。「ゼロから作るDeep Learning 2」そのままではあるが、C#に移植して内部をちゃんと理解したのでこういう細かいところをいじったりできる。


前からウェザタイのワードを増やそうと思って、記号ワードとか数字ワードとか考えてたんだけど、なんか違うな、と思っていた。で、自動生成はそれっぽい。極端な話、5chコーパス使って5chぽいワードとか使ったら面白そう。

学習するアプリも公開すれば、例えば各自好きな小説を学習して、そのワードで対戦しあうこともできるわけで、それも面白そう。

英語もこの方式なら大量に文章が生成できるので、ついに海外に向けて公開してもよいかも。

昨日のブログ、TwitterにURLを載せたら直後に公式で触れられてしまい、アクセス数が爆発。アクセス負荷でdenasu.comが開けなくなるなんて初めてだ。あ、いや、「逆襲のもげぇたん」のときはもう一桁多かったか。

ロビーも大会中エラーでまくってたのだが、最後ブログにとどめをさされて落ちていた。後で見たらランキングもそこから落ちていた。

ウェブサイト負荷が大会中とかに起きたりすると大会運営できなくなってしまうわけで、かといってそのためにウェブサイトと対戦サーバを分けるのもサーバ代の無駄になりそうだし。スケールアップの手順でも確かめるか。

で、Windowsストアのアクセス数が更新されたので、ダウンロード数を集計。昨日の配信前後のウェザタイのダウンロード数がWindowsだけで約4000。最初にVectorのニュースに載ったときより多いかも。ちなみに昨日のブログのアクセス数が約2200。ウェザタイのページに至っては10000を超えていた。これがインフルエンサーの力。。

にじさんじ打鍵王を観戦。Weather Typingとしての経緯は以前の日記を参照。

その後、REALFORCE TYPING CHAMPIONSHIP(RTC)でお世話になっている東プレさんが協賛することになり、準優勝にはREALFORCEキーボードとREALFORCEマウスが付くことに。REALFORCE MOUSEは最近出たばかりなので、宣伝になるとよいですね。同時視聴3.8万くらいまでいって打鍵王がTwitterトレンドにも入ってたみたいだし。RTCの注目度も上がるといいな。

大会の内容について

前回の日記にも書いたとおり、参加者が分からないと面白さが半減する、と思って何人かのライバーの方が配信していたWeather Typing練習を見たりした。さすがに誰を応援する、とまではいかなかったけどそれでも面白さが増した気がする。

タイピング的には、200-600kpmくらいで差が大きかったけど、同じような速度でブロック組合せを作ってたのでそれほど一方的にならず、最終戦に向かってだんだん盛り上がっていてよかった。RTCはガチ対戦で魅せる感じだけど打鍵王はキャラクターで魅せる感じ。どちらもよい。

サーバ運営的に

抽選会が1万人以上の同時視聴になっていたのである程度予想してたけど、大会中にかなりの人がサーバに接続して対戦をしていた。だいたい常時40人以上がつないで、30人くらいが対戦していたのだが、大会の方はラグもなく、まずまず快適だった。CPUも4%くらいでメモリも全然余裕。このくらいは余裕で堪えられるってことか。ただ、ゾンビプレイヤーが結構発生していて、ずっとエラーが出続けていて怖かった。今もエラー出てるので、どこかのタイミングで再起動しないと。

あとは50分くらいのところで、サーバにつながらないトラブルがあり、後でログを確認したらサーバが落ちていた。1分で自動再起動されるのと運営さんが落ち着いて対処して頂けたので大きなトラブルにはならなかったけど。

Weather Typing的に

2年ほど前に、今回主催者の鈴木勝さんがタイピング対決~負けたら台詞読み~を配信していた。そのとき、これからはもっと配信向けに改善しないと、と思って以下改善した。

  • 対戦できる最大人数の設定
  • 観戦、ホスト観戦
  • ラグ対策

概ねうまく働いていた気がする。ラグについてはさすがにVTuberの人はいい回戦を使っているからかも知れないけど、LAN対戦と遜色ないレベルで観戦できたように思う。

まだちょいちょい画面が変になるので直さないといけないかな。名前と☆が重なってたり。

あと今日のために急いでMacOS版を作って公開したけど、特定の環境で動かないとかがありそうかな。情報が欲しいところ。

ずいぶん前から研究していたワードの完全自動生成がだいぶ進んだ。

これで毎回全く別の文章が生成されるようになっている。今は7単語で切っているので文章が途中で切れている感じになってるし、いまいち面白いかは分からないけど。この後形態素分析入れて日本語の実験をするつもりだが、日本語だと面白くなるかなあ。

基本的には「ゼロから作るDeep Learning 2」のRNNLMなのだが、Xamarinで動かすためにC#で組み直した。パープレクシティ135なのでまだそこまで精度が高いわけではないが、これでも割とそれなりに見える。

4/4土曜日、Youtubeで「にじさんじ打鍵王」が開催される。にじさんじさん所属のVTuberがトーナメント形式で対戦するというもので、その抽選会が配信されたので見てみた。主催の鈴木勝さんは以前も何度かWeather Typingで配信をしていた方。

タイピング界隈でもにじさんじ内で大会してほしいという話題があったり(パソ活ラボ【にじさんじ杯】タイピング王決定戦をやったら面白いんじゃないかという話)。その辺りが関係しているのかは分からないけど、ちょっと前ににじさんじさんから配信に使わせて欲しいという依頼があったので是非、と。

で、タイピングの大会と言えばタイピング日本一を決めるREALFORCE TYPING CHAMPIONSHIPが有名。こちらは3年開催してようやく選手が知られてきて、タイパー界以外の人も見て楽しめるようになってきたかな、というところ。なんだけど、こういう形だと最初から視聴者が参加者を知っているのでその辺は有利だな、と思った。逆に言うと、私もにじさんじさんの動画を見ていかないと本当の意味で楽しめないってことか。1週間で。

日テレ「ヒルナンデス」で「REALFORCE TYPING CHAMPIONSHIP」3連続優勝者のmiriさんが出演されていた。アナウンサーの方とWeather Typing対決をされていたが、意外にも結構早かった。いっそこのままアナウンサー界でタイピングが流行らないかな。

最近いろいろウェザタイ関連のイベントがあるので、過去のイベントをまとめた。私宛に連絡が来ているものの中で、学校、団体、個人を省いた上で、載せても大丈夫そうなもののみ。こうしてみるといろいろありましたね。ちなみに雑誌系もリンクしようとしたらことごとくなくなってるのでやめた。

Warriors of Typing #4 -冬の陣-が開催された。知る限りWT4になってから初めての大会なので、ラグ問題とか配信映えとかが気になってリアルタイムで配信を視聴。

WT4開発時、大会用に複数のゲームが観戦できる機能を用意しようと思ったけど、作るのが大変すぎて見送った。でも今回、ジェイさんしろさんαさんも同時配信していて、なるほど、ゲーム配信ってこういう仕組みでみんなでたくさんの画面を配信して、それぞれ見たい配信を見るのか、って納得。

ラグについては公式だと少しラグが目立っていて、他の配信だとLAN対戦と遜色ない感じだった。公式配信は3人対戦になるから少し重いのか、他に何か原因があるのか。確かに3人以上のラグ評価はしていない。

あと、ジェイさんのところで、ワード途中で打てなくなる問題があったが、おそらく入力ミスでTAB、Enterの組合せが押されたものだと思う。見た目どのボタンを押せるかも分からないのでEnter禁止したいけど、そういうことはできるのかな。

あと、ルール画面表示の時に結構時間がかかってるなあ、と思ったけど、何百回もゲームをやって記録が多くなってくると重くなっているのか。この辺りも直したい。

WT4.0.1 Windowsデスクトップ版をリリース。4.0で報告があったバグと、UWP版Mac版実装で気になった部分の修正。