LoginSignup
1
0

More than 5 years have passed since last update.

[ゲームAI] バドミントンのゲームのCPUの出足のウェイト設定について

Posted at

概要

ユーザーとCPUの1対1のバドミントンの対戦ゲームで、ユーザーがショットをした直後のCPUの出足のウェイト設定を行います。

CPUがユーザーのショットを予想して動いているように見せるのが目的です。
予想が当たると速く動くことができて、逆に外れると長めにウェイトを設定します。

ユーザーとCPUは以下の3つの選択肢を実行できるものとします。移動は自動です。

  • A:クリアー
  • B:スマッシュ
  • C:ドロップ

○導入目的
同じショットだけで攻略できないようにするために導入しました。
・ドロップばかり打ってるとCPUに読まれて強いショットで返される。
・クリアー(後ろ)→クリアー(後ろ)→ドロップ(前)を打つとフェイントっぽくなってCPUの反応が遅れる 
などを同時に実現したかったです。

初期化

CPUにそれぞれのショットの「印象値」を持たせます。

例、
A:600
B:300
C:100
で初期値を設定します(0~1000を想定)
work01.png

※説明用のパラメータです。通常最初は500,500,500でいいと思います。

1.CPUの印象値からユーザーのショットを予測します

A:600
B:300
C:100
割合=600:300:100→60%,30%,10%
(割合値は調整してOKです)

例.
CPUはユーザーのショットは「A」(クリアー)が来ると予想します
work02.png

2.ユーザーがショットを打ちます+ウェイトの設定

ユーザーが打ったショットと、予想した情報をもとにCPUの出足のウェイトを設定します

・Aだった場合→○:予測が当たったので早く反応できる
・Bだった場合→△:ちょっと反応が遅れる(印象値が中央値の500より低いので)
・Cだった場合→×:予測が外れ、かつ印象値が低いので大きく反応が遅れる

※ウェイトの設定は、予想の当たり外れのほかに印象値(0~1000)によっても影響が出るようにしています。

3.ユーザーのショットからCPUの印象値を更新します

  • 打たれたショット→+200(印象が高まる)
  • それ以外のショット→-100(印象が薄まる)

で印象値を更新します(値は調整してください)

例1.クリアー(A)が打たれた場合

A:600+200→800
B:300-100→200
C:100-100→0
work03.png
クリアー(A)の印象がより高まります

例2.スマッシュ(B)が打たれた場合

A:600-100→500
B:300+200→500
C:100-100→0
work04.png
クリアー(A)とスマッシュ(B)の印象が同じくらいになり、ドロップ(C)の印象がなくなります

以降は「1」へ戻ってループ

まとめ

○メリット
・実装が簡単
・CPUの予想と意思決定の要素が入っている
・印象値の幅(0~1000)でリアクションに強弱がつけられます

○デメリット
・ユーザーに気づかれない!?

○その他
・説明上省略しましたが、実際は「1」の予測の後に仮の印象値を作成して、リアクションが大きくなるようにしています
例.Aを選択後の印象値、ウェイトの計算は加算後の値を使用します
A:600+200→800
B:300-100→200
C:100-100→0



以上です。

1
0
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
1
0