2DレーシングゲームのAIを構築するためのヒント


10

2Dレーシングゲーム用のAIを構築するための学校プロジェクトがあり、他のいくつかのAIと競合します(衝突なし)。

レーストラックの白黒のビットマップイメージが提供されます。マップを受け取った後、車の基本的な統計(ハンドリング、加速、最大速度、ブレーキ)を選択できます。AIはゲームのサーバーに接続し、現在の加速とステアリングの秒数を数回与えます。ちなみに私が選んだ言語はC ++です。質問は次のとおりです。

最高の戦略またはアルゴリズムは何ですか(私が試して勝ちたいので)?私は現在、ネット上で見つけたアイデアと自分のアイデアの1つまたは2つを念頭に置いていますが、コーディングを始める前に、私の見方が最高のアイデアの1つであることを望みます。そのことに関してどんな良い本がありますか?どのサイトを参照すればよいですか?

2d  c++  ai  racing 

1
物理シミュレーションの精度に依存します。物理演算がない場合は、常にフルスピードで移動します。それ以外の場合は、各ターンの前にスローダウンを開始し、ターンの2/3の速度を上げます。
ネイト

回答:


2

基本的なAIをセットアップしてから、自分の車を処理するAPIをセットアップします。打ち負かすことができるなら、AIを確実に強化できる記録アルゴリズムをセットアップする必要があります。これは、AIのアクションを微調整するニューラルネットワークになる可能性があります。コーナーへの緩やかなブレーキングなど。

プロジェクトで外部ライブラリを使用することは許可されていますか?もしそうなら、FANNをご覧になることをお勧めします。これは高速ニューラルネットワークライブラリです。あなた自身を書くことを保存します。ソースコードが必要な場合は、いつでも自分で作成できますが、多少時間がかかる場合があります。


1
私にはやりすぎのようです。
o0 '。

2
@ Lo'oris確かに、これはおそらく、ソリューションを作成するための限られた時間のあるかなり単純な学校プロジェクトであるため、教師付き学習は、実用性のためだけにこれを行う方法ではないと思います。
レイデイ

設定はそれほど難しくなく、OPが実行しているサブジェクトのレベルによっては、このアプローチは必ずしも過剰ではない場合があります。それは私がする(そしてやった)ことであり、その楽しみであり、効果的な結果を達成するのは非常に簡単です。最も難しいのは、前処理で何をすべきかを決定することです...
deceleratedcaviar

2

AIを実行する前にマップを前処理できる場合は、マップのセグメントを通じて最高のレーシングラインを計算します。

GameDev.netのこの投稿には、いくつかの提案があります。

AIウィズダムの本には、AIのレースに関する記事がたくさんあります。私は間違いなくそれらをお勧めします。特に、AI内でデータ構造としてマップを表現する方法を説明する記事がある最初の記事はおすすめです。

私が見たもう1つの方法は、単純な強化学習(Q学習)です。これは、最適なパスを取得するためにおそらく数千回の反復が必要です。これはこのペーパーで説明されています:http : //www.cs.ubc.ca/~zhijin/540report.pdf


1

以下は、AIの運転に関する優れたリファレンスです:自律キャラクターのステアリング動作。みんなの参考のためにここに投稿しました。始めるための情報はたくさんありますが、情報もたくさんあるので、詳細に行き詰まってはいけません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.