LoginSignup
0
1

More than 3 years have passed since last update.

[ゲーム] 野球の守備と走塁について

Last updated at Posted at 2019-05-26

[1]概要

野球の守備と走塁について記載します。

守備についてもCPU同士の対戦を想定しています。
守備選手の意思決定、走塁選手の意思決定も自動で行われます。

バッターとピッチャーのバッティング勝負についてはこちら↓
[ゲーム] 野球のバッターとピッチャーの勝負について


[2]ポジションと守備の能力について

▼ポジションについて
投手:ピッチャー(投)
捕手:キャッチャー(捕)
内野:ファースト(一)、セカンド(二)、ショート(遊)、サード(三)
外野:レフト(左)、センター(中)、ライト(右)

▼守備の能力について
・走力
・肩(投げるスピード)
・総合的な守備能力(判断の速さ、キャッチから投げるまでの動作スピード)
などを所持しているとします。


[3]守備の処理の流れ

  1. バッターがボールを打つ

  2. アウト情報の作成(→[4-2])

  3. 守備状況の作成(→[4-3])

  4. ボールとランナーの各塁への到達時間を算出(→[4-4])

  5. 守備選手全員の役割を設定(→[5])

  6. 守備選手の動き(→[6])

です。
2~6を毎フレーム繰り返します。


[4]守備の情報を用意します

[4-1] 守備の役割

主な役割は以下の通りです

・捕球メイン(メインでボールを捕りに行く選手)
・捕球サポート
・ベースカバー(1塁、2塁、3塁、ホームベース)
・中継
・基本守備位置で待機
・捕球メインその2(捕球メインの2人目以降)
・ボール所持者の行動

[4-2] アウト情報を作成

・(スタート状況)ランナーなし→1塁がフォースアウト
・(スタート状況)ランナー1塁→1塁、2塁がフォースアウト
・(スタート状況)ランナー2塁→1塁がフォースアウト
・(スタート状況)ランナー3塁→1塁がフォースアウト
・(スタート状況)ランナー1,2塁→1塁、2塁、3塁がフォースアウト
・(スタート状況)ランナー1,3塁→1塁、2塁がフォースアウト
・(スタート状況)ランナー2,3塁→1塁がフォースアウト
・(スタート状況)ランナー満塁→1塁,2塁,3塁、ホームベースがフォースアウト
(フォースアウトはタッチアウトの必要がないアウトです。塁にボールを送るだけでアウトになります。)

・各ランナーのタッチアウト
・フライを捕ってからの戻りアウト

守備中のランナーの走塁状況によってこれらの情報が更新されるようにします。
(例.バッターが打って、1塁に到達したら、1塁のフォースアウトは消える)

[4-3] 守備状況の情報を作成

○1.ボールが初めて地面に着くまで
地面に着いたときに以下の判定を行います
・ホームランかどうか
・ファールかどうか
・守備選手のグローブの中→アウト
・フェンス、地面のバウンド

○2.ボールが外野エリアor内野エリアにあるかどうか
・一塁線、三塁線のファール判定に使用します。
ボールが1回以上地面に着いた状態で、ボールが外野エリアにある場合は、ボールがファールゾーンにあってもファールになりません。(内野エリアで、ファールゾーンの場合はファールになります)

・中継が必要かどうかの判定に使用します
・ランナーの走塁に影響します(ボールが内野エリアにある場合は必要以上に走塁を狙わない)

○3.守備選手の誰かが1回でもボールを拾った
・ランナーの走塁に影響

○4.守備終わり、ピッチャーへボールを戻す
・ランナーの動きがなければ、ピッチャーへボールを戻します。

[4-4] ボールとランナーの各塁への到達時間の情報を作成

・ボールの各塁への到達時間を計算
(時間=ボールをとるまでの時間+
    捕ってから投げるまでの時間+
    投げてから塁に到達するまでの時間)

・各ランナーの全ての塁への到達時間を計算(2つ以上の塁を進む場合あり)


[5]守備選手の役割設定について

まず、ボールの軌道から誰が捕球するかを決定します。
追いつかないとわかっていても、守備選手にボールを追わせると見栄えが良くなるので複数設定します。
→捕球メイン
→捕球メインその2

次にベースカバーを設定します。
ベースに近い選手が設定されます。
→ベースカバー(1塁、2塁、3塁、ホームベース)

必要であれば中継も設定します。
残りの選手は基本守備位置や、捕球者のサポート(周りをうろつく)を設定します。
→中継
→捕球サポート
→基本守備位置で待機

最初の捕球者が決まれば、あとの役割の設定は簡単です。
ほぼ決め打ちでいいと思います。

例1.ライト前ヒット

coat01.png

守備ポジション 役割
ピッチャー ベースカバー_1塁
キャッチャー ベースカバー_ホームベース
ファースト 捕球メイン
セカンド 捕球メインその2
ショート ベースカバー_2塁
サード ベースカバー_3塁
レフト 基本守備位置で待機
センター 捕球サポート
ライト 捕球メインその2


例2.右中間への2ベースヒット

coat04.png

守備ポジション 役割
ピッチャー 基本守備位置で待機
キャッチャー ベースカバー_ホームベース
ファースト ベースカバー_1塁
セカンド 中継
ショート ベースカバー_2塁
サード ベースカバー_3塁
レフト 捕球サポート
センター 捕球メイン
ライト 捕球メインその2

中継があるパターン


例3.ショートゴロ

coat02.png

守備ポジション 役割
ピッチャー 基本守備位置で待機
キャッチャー ベースカバー_ホームベース
ファースト ベースカバー_1塁
セカンド ベースカバー_2塁
ショート 捕球メイン
サード ベースカバー_3塁
レフト 捕球メインその2
センター 捕球サポート
ライト 基本守備位置で待機


例4.ファーストゴロ

coat03.png

守備ポジション 役割
ピッチャー ベースカバー_1塁
キャッチャー ベースカバー_ホームベース
ファースト 捕球メイン
セカンド ファーストのサポート
ショート ベースカバー_2塁
サード ベースカバー_3塁
レフト 基本守備位置で待機
センター 捕球サポート
ライト 捕球メインその2

ファーストがボールを捕りに行く場合はピッチャー(もしくはセカンド)が1塁のベースカバーに入ります。


[6]ボール所持者の行動について

○選択肢について
・1塁or2塁or3塁orホームベースor中継地点 へ投げるor移動する
・走塁中の選手にタッチアウトを狙う
・待機する
・特にランナーの動きがなければ、ピッチャーにボールを戻して守備シーンを終わらせる

○意思決定の方法について
やり方は、全ての選択肢に評価値をつけて、一番高い選択肢を選択するやり方です。

※参考
サッカーの行動決定

○評価値の算出について
フォースアウトやアウトにできる可能性の高いところは評価を高くします。
よりホームベースに近い塁も、得点を防ぐ行動として評価を高くしています。

また、
1アウト1塁2塁で、ショートゴロの場合、
3塁に投げてアウトを狙うより、2塁→1塁のダブルプレーを狙ったほうがいい場合もあります。

同じように、
1アウト満塁で、内野ゴロで、
ホームベース→3塁(塁の評価を優先した場合)でダブルプレーを狙うより、2塁→1塁のダブルプレーの方が失点を防ぐ確率が上がりそうです。

獲得できるアウト数や、全体の動作時間も考慮した方がいいです。

※補足
・アウト情報は[4-2]
・ランナーの到達時間とボールの到達時間は[4-4]
ボール所持者はどこにボールを投げればアウトになるかを知っているとします。


[7]守備シーンの調整について

[7-1]調整項目について

○バッター
・1.移動速度
・2.打ったボールの速度、落下までの時間
・3.(盗塁用)リード幅
・4.(盗塁用)盗塁のスタートwait

○守備選手
・1.打った直後のwait(反応の速さ)
・2.打った直後のボール落下位置の誤差情報(守備選手の落下位置の見誤り。短い時間で0に収束します。多少あったほうがいいです)
・3.捕球位置までの移動速度
・4.ボールをキャッチする動き
・5.ボールを捕ってから次の動作の意思決定するまでのwait
・6.ボールを投げる動き
・7.投げたボールの速度
・8.投げたボールのブレ率

それぞれ、守備能力が高くなるほど、動作スピードの向上、判断スピードの向上などで守備が洗練されるようにします。
項目が細かいですが、ちゃんと実装していくとそれっぽく見えてきます。

[7-2]調整の注意点、念頭に入れておくこと

・現実の野球のイメージに合わせる(内野ゴロ、ヒット、2ベースヒット、バントなど)
・ライトゴロは発生させたくない(極端な能力差であれば発生してOK)
・内野安打を多くしすぎない
・ダブルプレー(ゴロをキャッチ→2塁→1塁のダブルプレー)を発生するようにしたい
 ・バッター:バッターBOXから一塁へ
 ・守備:ゴロをキャッチ→2塁へ送球→1塁へ送球→アウト
 守備側がバッターの1塁到達時間より速くなるようにする

・能力が最小値のとき、最大値のときで、それぞれ破綻しない(内野ゴロにならないorヒットにできないなどとならないようにする)
・成長幅を大きく実感できるように序盤と終盤で動作に差をつけたい。けど序盤もそれなりに見栄えがあるようにする

[7-3]盗塁について

盗塁は、
バッター側は、上の1,3,4
・1.移動速度
・3.(盗塁用)リード幅
・4.(盗塁用)盗塁のスタートwait

守備側(キャッチャー)は、上の4~8
・4.ボールをキャッチする動き
・5.ボールを捕ってから次の動作の意思決定するまでのwait
・6.ボールを投げる動き
・7.投げたボールの速度
・8.投げたボールのブレ率

の項目で調整します。
ちなみにCPU同士の対戦なので、盗塁はCPUが勝手に実行する仕様です…。(詳細は[9]の走塁へ)
2塁への盗塁の他に、3塁への盗塁もあるのでご注意ください。
守備側の4~8の調整で送球の到達時間を大分調整できます。


[8]その他細かいところ

[8-1] ファール判定について

・1.最初の落下がフィールド内orホームランの場合はファールじゃない
・2.ボールが外野に行く前にファールゾーンにボールがある場合はファール。(1塁線、3塁線のファール判定)


[8-2] フォースアウト中の得点について

○フォースアウトとは?
ランナーに対して、タッチアウトじゃなくても、進行先の塁にボールを到達させることでアウトの判定になることです。
ボールをキャッチする選手は必要です。
ランナーは必ず進塁する必要があるので、タッチプレイが省略されます。

例.
・(スタート状況)ランナー1塁で、2塁に投げてフォースアウト。
・(スタート状況)ランナー1塁2塁で、2塁or3塁に投げてフォースアウト。
・(スタート状況)ランナー満塁でホームベースに投げてフォースアウト。

○フォースアウト前の得点について
・例1.(スタート状況)1アウトランナー1塁、3塁のとき、
ショートゴロ>2塁→1塁で、ダブルプレーが成立する(3アウト交代)前に、
3塁ランナーがホームに到達しても得点になりません。(一塁がセーフでダブルプレーが成立しなかったら得点になります。)

この場合のフォースアウトは2塁と1塁で、フォースアウトが存在しているときは、得点判定を一時待機させましょう。
フォースアウトがなくなったときに初めて得点になります。

・例2.(スタート状況)2アウトランナー2塁、3塁のとき
サードゴロ>2塁ランナーが3塁でタッチアウト、この前に3塁ランナーがホームに到達。(タッチアウトで3アウト交代)
この場合はフォースアウトは存在していないので得点になります。


[8-3] ボールの捕球方法について

○バッターの打ったボールの捕球方法について

以下の3パターンで捕球位置を決定します。
・①.ボールの移動の軌道上にいるとき
ボール方向へ近づいて、早くボールを捕るようにします

・②.軌道上の一番近いポイントに向かい、そこでボールを捕れるとき
到達後、余裕があれば1へ

※停止してボールを捕球したほうが次のアクションがスムーズになる場合(のような処理を入れている場合)
その場で捕るような何らかの判断処理を入れます。
このときは打球スピードが遅いバントなどに注意です、ボールを捕るまでの時間が遅くなってしまいます。

・③.2でボールがとれないとき、
後ろに後退しつつ、ボールの位置へ移動します。
coat05.png


○味方の送球の捕球方法について

・ベース上でボールを捕れる場合、そのまま待機します
・ベース上でボールを捕れない場合は、ベースからの距離が一番近い位置で捕るようにします


[8-4] その他の要素メモ

○エラーを入れる(ファンブル)
守備能力が高いほど、エラー発生率が低くなるようにする

○ダイナミックな動きを入れる
・スライディング、スライディングキャッチ
・ヘッドスライディング
・ダイビングキャッチ
・ジャンプキャッチ
などなど

○牽制球

○守備陣形の変更

○エンタイトル2ベース
地面にバウンドしたボールが、スタンドに入ってしまうこと。

○インフィールドフライについて
内野フライをわざと落としてダブルプレーを狙うプレー、
(フライアウトの場合、一度ベースに戻らないと行けないのを利用)
を防ぐために、自動的にフライアウトになるルールがあります。このとき、内野フライをキャッチする前に審判がアウトをコールします。


[9]走塁について

○ボールが最初に落ちるまでの進塁判断について

%は塁と塁の間の距離の割合です

・フライアウトにならないor確実にヒットになりそうな打球の場合は100%進塁
・3塁にいて、犠牲フライになりそうなら5%進行して待機(フライアウトで塁に戻らないとなので、ベース付近で待機させる)
・それ以外のフライの場合は、打球の距離によって進行位置を大きくする
・2アウトの場合は必ず進塁(3アウトでフライアウトの戻りアウトにはならない)
・自分がフォースアウトになる場合は必ず進行(例.打ってから1塁へ行くときなど)
・ファールは5%進行して待機(見栄え目的)

○通常の進塁判断について

次の塁へのランナーの到達時間と、ボールの到達時間を比較します。(ランナーがボールの到達時間を知っていることにします)

ランナーの到達時間がボールの到達時間より短いなら進塁しますが、
到達時間が長くても、ランナーの人数や、ボールとの距離によって、進塁しやすくなるように調整しています。(中継が入るなどで遅くなる)

あと進塁可能でも、ボールが近くにある場合は進塁を止めたりします。

進塁中で、進塁ができないと判断した場合は一つ前の塁に戻りますが、後ろのランナーと行先がかぶらないようにしましょう。

○盗塁のリードについて

カウントや球種(遅い球、変化球)を読んでリード幅を変えてもいいかもしれません。

3塁を狙う場合は牽制アウトの危険が少ないのでリード幅を少し多くとっています。

○盗塁を実行するかの判定(1球ごとに処理チェック)

・ランナー自身の走塁能力が高い(→確率UP)
・ランナー自身の走塁能力が他の自身の能力と比べて高い(走塁を優先して成長させている)(→確率UP)
・チーム平均より高い(→確率UP)
・2塁にいる場合は確率を1/2にする(三盗は成功率が低くなるので控える)
で計算しています。
どの選手も盗塁を実行する可能性があります。



以上です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1