# 早打ち決闘

> 同じ部屋に入った人どうしで、ローマ字タイピングで波動砲を撃ち合うオンライン対戦ゲーム。20打ごとに波動砲が飛び、相手のHPを0にしたら勝ち。CPUとの1対1もできる。

- 制作: [ワカメ](https://wakame.dev/)（個人で企画・開発）
- ステータス: 公開中
- 制作期間: 2026-11
- カテゴリ: Web, Game
- 使用技術: Cloudflare Durable Objects, WebSocket, Canvas, WebAudio, JavaScript
- 担当: 企画, ゲーム設計, ローマ字入力の判定, オンライン部屋の実装, 波動砲の演出, 効果音

## 概要

画面に出たお題（ことわざ、四字熟語、日常のひとことなど）をローマ字で打っていくタイピング対戦ゲームです。正しく打つたびに波動砲のゲージがたまり、20打ごとに相手へ波動砲が飛んでHPを削ります。ミスするとゲージが少し減り、ノーミスで40打つなぐと威力の大きい極太波動砲になります。HPが0になったらKOで、最後まで立っていた人が勝ち。90秒の時間切れではHPの多い人が勝ちです。部屋には誰でも入れる「みんなの広場」と、合言葉で入る部屋があり、1部屋に6人まで入れます。全員が「準備OK」を押すとカウントダウンが始まり、試合中は闘技場でお互いの波動砲が飛び交う様子とHPが見えます。3人以上のときは、まだ立っている人のうちHPがいちばん多い相手を狙います。結果には順位、残りHP、与えたダメージ、1分あたりの打鍵数、正確さが出ます。相手がいないときは、強さが4段階あるCPUと1対1で戦えます。「し」を shi でも si でも打てるように、お題はかなで持ち、打てるローマ字をその場で求めています。tsu / tu、ja / zya / jya、「ん」の n / nn、「っ」の子音重ねや xtu など、よく使われる打ち方はどれでも通ります。部屋はCloudflareのDurable Objectsで、WebSocketでつないでいます。お題はサーバーが選んで全員に配ります。波動砲は各端末から「撃った」という知らせと打鍵数だけを受け取り、ゲージがたまっていて人間に打てる速さのときだけ、サーバーが狙う相手とダメージを決めて全員に知らせます。

## どの打ち方でも通るローマ字判定

お題はかなで持ち、ローマ字の正解は1つに決めていません。いま打つべきかなの位置から「次に打てるローマ字」の候補をその場で作り、打ったキーで始まる候補が残っていれば正解、なければミスにしています。「きゃ」なら kya のほかに ki + xya のように分けた打ち方も候補に入ります。

「ん」は、次が母音・や行・な行でなければ n 1つで済ませられます。「っ」は次のかなの子音を重ねる打ち方と xtu / ltu の両方を候補にしています。画面には、いま打っている打ち方に合わせた残りのローマ字を出すので、shi と打ち始めても si と打ち始めても案内がずれません。

- shi / si / ci、chi / ti、tsu / tu、fu / hu、ja / zya / jya などに対応
- 「こんにちは」を konnichiha と打っても、2つめの n を「に」の頭として読み直す
- 日本語入力がオンのままだと、切り替えるよう画面で知らせる

## 部屋と波動砲の進め方

部屋は合言葉ごとのDurable Objectで、全員が「準備OK」を押すとサーバーがお題の順番を決め、開始時刻と一緒に配ります。各端末はサーバーとの時計のずれを直してから、同じ瞬間にカウントダウンを終えます。

端末から送るのは「波動砲を撃った」という知らせと、それまでに正しく打った数だけです。サーバーは、打鍵数が次の1発ぶんたまっているか、人間に打てる速さかを確かめてから、狙う相手（まだ立っている中でHPがいちばん多い人）とダメージを決めて全員に知らせます。最後の1人になるか制限時間になると、HPと与えたダメージで順位を決めて配ります。

画面では、撃った瞬間に光を集める「溜め」を見せ、波動砲が相手まで飛んでいって当たったときにHPを減らします。当たった側は画面が揺れて赤く光り、HPが0になるとK.O.が出ます。

## 成果

- 1部屋6人まで、同じお題でリアルタイムに波動砲を撃ち合える
- 20打ごとに波動砲、ノーミス40打で極太波動砲が出る
- shi / si、tsu / tu、n / nn など、どのローマ字の打ち方でも通る
- 順位・残りHP・与えたダメージ・1分あたりの打鍵数・正確さを結果に出す
- 相手がいなくても、4段階の強さのCPUと対戦できる

## リンク

- [サイト](https://wakame.dev/hayauchi/)

## このサイトについて

- [ワカメの詳細プロフィール](https://wakame.dev/ai-profile/index.html.md)
- [llms.txt](https://wakame.dev/llms.txt)
