本文へ進む
attrip.知りたいを、つくって確かめる
メニュー

息子に野球ゲームを作ってと言われた

公開日 · 更新日 · 10 MIN READ · 理解の記録

RECORD / 2026

息子から「野球ゲームを作って」と言われた。

そこから作り始めたのが、ブラウザーで遊べる野球ゲーム「Home Runs」です。

本格的な野球シミュレーターを目指したわけではありません。投手が投げた球を見て、タイミングを合わせて一度だけ振る。うまく当たって飛んだら、隣にいる人と一緒に「おお!」と言える。最初に作りたかったのは、その短い時間でした。

Home Runsを遊ぶ

公開されたHome Runsの開始画面。10球のプレイボタンと打席が表示されている

10球、1ボタン、約60秒に絞った

操作はできるだけ減らしました。

パソコンならSpaceかEnter。スマートフォンなら画面をタップする。それだけです。投球ごとに一度だけスイングでき、長押しや二重入力では何度も振れないようにしました。

1ゲームは10球、約60秒です。

長く遊び続けるゲームではなく、一度終わってから「もう1回」と思える長さにしたかった。球数を決めたことで、途中で目的を見失いにくくなり、結果画面まで作り切ることもできました。

結果にはヒット数とホームラン数が残ります。10球が終わると、ニックネームと感想を投稿し、参考ランキングを見ることもできます。ただし、これは端末から送られた記録を使う参考ランキングです。本人確認を伴う厳密な競技ランキングではありません。

空振りしても、もう一度振りたくなるようにした

簡単すぎると、当たった喜びがなくなる。難しすぎると、最初の数球でやめてしまう。

この間をどう作るかが、ゲームらしさの中心でした。

芯に近いタイミングならホームラン、その少し外側ならヒット、ファール、ゴロ、フライになります。大きく外れると空振りです。結果をランダムにするのではなく、振った時刻がそのまま打球へつながるようにしました。

一方で、2球続けて空振りした後は、その次の2球だけ少し当たりやすくしています。9球を終えてホームランが0本なら、最後の1球では芯の幅も少し広げます。

必ずホームランにするわけではありません。失敗を消さず、「次なら当たるかもしれない」と思える程度のおまけです。

ゲームを五つの仕組みに分けて組み込んだ

作りながら分かったのは、野球ゲームは「投げる絵」と「振るボタン」だけでは動かないということでした。

Home Runsでは、仕組みを大きく五つに分けました。

  1. Space、Enter、クリック、タップを一つのスイングとして受け取る入力
  2. 振った時刻から、ホームラン、ヒット、ファール、ゴロ、フライ、空振りを決める判定
  3. 投手、打者、バット、ボールを同じ時刻で動かす3Dモーション
  4. 投球、スイング、打球、歓声、結果を順番に鳴らす音
  5. 10球の結果、再挑戦、コメント、参考ランキングを扱う終了後の画面

入力と判定はゲームの中心に置き、見た目や音から切り離しました。見た目を直してもホームランの判定幅が変わらず、音を差し替えても10球の進行が壊れないようにするためです。

3D表示には既存の人物モデルを使い、投手と打者を別々に動かしました。ブラウザーで3Dを初期化できない場合は、注意を出して2D表示へ戻る仕組みも入れています。

公開ページはWordPress側で専用URLを受け持ち、ゲームのHTML、CSS、JavaScriptを読み込みます。結果のコメントと参考ランキングは、ゲーム専用のAPIへ分けました。他のゲームの記録やデータベースへ混ぜないためです。

何でも一つのファイルへ足すのではなく、判定、描画、音、コメント、英語表示を分けた。この分け方が、後から一か所ずつ直すための土台になりました。

いちばん苦労したのは、投げ方と振り方だった

最初は、AIに投手と打者の動きを作らせれば、すぐ野球らしくなると思っていました。

実際には、それらしい姿勢はできても、気持ちいい動きにはなりませんでした。

投手の体が立ちすぎる。踏み込んだ足が落ち着かない。投げ終わった腕が不自然な場所を通る。打者の手が届かない位置へ動き、肘が一瞬で大きく折れる。静止画では野球に見えても、連続して動かすと違和感が出ました。

ここは、AIへ「もっと自然に」と言うだけでは直りませんでした。

投球とスイングを細かい時刻に分け、手首や足首が目標へ届いているか、関節が短時間で飛んでいないかを計測しました。実際に描画する3Dモデルを641時点で確認し、手の届かない軌道、前足のずれ、肘の急な移動を一つずつ修正しました。

それでも、現在のフォームはゲーム用に作った動きです。実在選手のモーションキャプチャでも、本人と一致することを証明した動きでもありません。この線を越えて言い切らないことも、制作記録では大切でした。

失敗の理由は、AIへ完成形を言えていなかったこと

今回、AIにはかなり多くの作業を頼みました。

最初は「野球らしい投球」「自然なスイング」と伝えれば、動きを組み立ててくれると思っていました。でも、この言い方には、どこを見て合格にするのかがありません。

一枚の姿勢がそれらしくても、前後をつなぐと腕が飛ぶ。手をバットへ近づけると、今度は前足がずれる。上体を起こすと、別の関節へ無理が出る。一つ直すたびに別の場所を確認する必要がありました。

画像を作る。動きへ置き換える。画面を見る。「違う」と伝える。また作る。

この往復を続けたため、AIの利用枠もかなり消費しました。Home Runsだけで何%使ったかは分けて計測していません。ただ、完成条件を決めないまま生成と修正を繰り返す使い方が、消費を増やしたことは残しておきたいです。

途中から、「自然にして」ではなく、確認する項目を決めました。

  • 手首が指定した位置へ届いているか
  • 接地した足が大きく滑っていないか
  • 5ミリ秒の間に関節が飛んでいないか
  • 投球、入力、接触、打球音の順序が崩れていないか
  • PC、375px、320pxで同じ操作ができるか

さらに、次のモーション候補は公開ゲームから分離しました。比較画面で動きを確認し、テストと監査を通した候補だけを本体へ入れる。これで、研究途中の修正が遊べるゲームを壊す危険を減らせました。

AIの回数を増やしたことが成功ではありません。何を直すかを一つに絞り、同じ条件で測り直せるようになったことが、ようやく前進でした。

音を付ければ完成、ではなかった

投球、スイング、打球、歓声、結果。それぞれに短い音を用意しました。

ただ、音声ファイルから区間を切り出せたことと、ゲームの中で気持ちよく聞こえることは別です。無音区間を使って機械的に境界を見つけても、声が途中で切れていないか、効果音へ別の声が混ざっていないかは、最後に耳で判断する必要があります。

長い曲をそのままBGMとして流さず、必要な瞬間だけ短い音を鳴らす形にしました。ホームランでは打球音のあとに歓声と表示が続きます。

ただし、現在の音声ファイルは完成ではありません。切り出す位置を調整するだけでなく、投球音、打球音、歓声、短い実況をゲーム用に作り直し、音量、長さ、鳴る間をもう一度磨く余地があります。映像と判定がよくなっても、音が遅れたり長すぎたりすると、一振りの気持ちよさが崩れるからです。

作ってよかったのは、親子で同じ瞬間を見られること

このゲームでよかったのは、説明することが少ない点です。

ボールを見て、ここだと思ったら押す。当たらなければ次の球を待つ。当たったら、どこまで飛ぶかを見る。

複雑な操作を覚えなくても、同じ画面を見ながら同じ瞬間を待てます。「ホームランを何本打ったか」だけでなく、「いまのは早かった」「次はいけそう」と話せる余白ができました。

公開後はPC、375px、320pxの画面で、ゲーム開始、スイング、休憩と再開、結果、再挑戦まで確認しました。画面幅からのはみ出しやブラウザーのエラーも出ていません。

公開時点では、判定、表示、音、コメントを含むテストが42件通り、3Dモデルは641時点の監査で計算不能な状態がないことを確認しました。その後の投球修正でも、対象テストと公開画面を確認してから反映しています。

これは「本物の野球と同じ動きになった」という成功ではありません。

一つのボタンを押すと、判定、身体の動き、ボール、音、結果が同じ時間の流れでつながり、10球を最後まで遊んで再挑戦できる。今回確認できた成功は、そこです。

ただし、息子が初めて遊んだときに何球当てられるか、どの補助がちょうどよいかは、まだ十分に記録できていません。「親子向けに完成した」と言うのではなく、ここから本人の反応を見て調整したいと思っています。

まだ残る課題は、音と大人向けの難しさ

現在のHome Runsには、もう一つ課題があります。

タイミングに慣れた大人が遊ぶと、ホームランを連発できてしまうことです。子どもが最初の10球を楽しめる当たりやすさと、大人が何度も挑戦したくなる難しさを、一つの判定幅だけで両立するのは難しいと分かりました。

そこで、現在の遊びやすさは通常モードとして残し、別に難しいモードを用意したいと思っています。

難しいモードでは、球速を一定にしません。速球のあとに遅い球を混ぜ、投げる間にも緩急を付ける。さらに、まっすぐだけでなく、途中で軌道が変わる変化球も入れる。毎回同じ時刻でボタンを押せばホームランになる状態を崩します。

ただ判定幅を狭くするだけでは、難しいというより不親切になります。球の速さや曲がり方を見てタイミングを変えられるようにし、失敗したときも「早かった」「遅かった」「曲がった」と理由が分かる難しさにしたいです。

次に残すべき検証は、次の三つです。

  1. 作り直した音が、投球と打球の瞬間に気持ちよく合うか
  2. 子どもが通常モードを説明なしで始め、もう一度押したくなるか
  3. 大人が緩急と変化球のあるモードで、ホームランを連発せず挑戦を楽しめるか

最後に、見つけてもらう入口を直した

ゲームを作った後で気づいたのは、公開しただけでは遊んでもらえないことでした。

Home Runsはトップページのゲームメニュー、ツール一覧、固定の「あそぶ」導線へ追加しました。共有されたときに内容が伝わるよう、OGP画像、タイトル、説明、画像URLも確認しました。

これは制作の中心ではありません。でも、息子の一言から始めたゲームが、見つけられ、開かれ、実際に遊べるところまでつなぐ最後の作業でした。

作って終わりではない。遊んだ人の「もう1回」が出るかを見る。

次は、息子がどこで迷い、どの球で笑い、もう一度スタートを押すのかを記録する。同時に、音声ファイルを作り直し、大人向けの緩急と変化球を試します。

コメントを残す