• 締切済み

無敵の格闘ゲームAI

現代の一般的な格闘ゲームにおいて、 「人間が絶対に勝てない」というCPUキャラのAIをプログラムすることは可能なのでしょうか?

みんなの回答

  • chrsc2
  • ベストアンサー率100% (3/3)
回答No.11

人間はまさかキャラの動作を完全に無駄無しに動いているなんてこあり得ませんよね。まあ、私も格闘ゲームと言うものをプログラミングした経験があるからこんなことが言えるのですが••• まず人間が上に書いたようなもの程度なのは明らかです。実際操作入力毎に理論的に必要のない空き時間があるんですね。それは人間の判断時間だったり目玉の動く速度の限界だったりコントローラーを操作するための人間の指や腕の速度の限界だったりが関わって出来るものなんですがね。操作ログを見ると分かりますがしっかり空き時間あります。で人間と同時までが限度であっても同時に回避動作やガード動作をすれば良いわけです。そうすれば人間の攻撃入力などほとんど当たらなくなります。で同時とは言っても厳密には後なわけですから人間の動きがスローに見えているも同然なAIにとって人間の操作ごときただの間抜けに過ぎません。今の時代AIはマルチスレッドが主流ですからグラフィックの描画よりも高いフレームレートでシステムが動作してますしほぼ同時で時間が短くてもフレームレートが高ければその短い時間の中でたくさんの演算が出来るので。これをフル生かされたら人間なんかが勝てるものでは無くなります。それに今はGPUで演算出来るNVIDIAのCUDAなんて言う化けものもありますしね。で答えとしては、今まで発売されたものはやってないだけです。また、今の技術で可能です。 でも本当に今のですよ。今からですね。どんな戦術や作戦を使っても思考スピードが断然速いコンピュータの勝ちですね。おまけモードであっても開発者の考えによって変わってきます。最強のおまけモードがあることによって本編は手加減だらけだと分かってしまうとそのゲームが嫌われてしまうのでは無いか?と考える人もいると思いますよ。まあ、人間が絶対勝てないほどのものを作れるようになってからまだ2~3年って所ですし完全にはなんとも言えないですが。まあ、開発者たちが無難過ぎるといつまで経っても最強モードは出来ないでしょうけど。私たちが最近手掛けているものでは出来てますよ。テストプレイヤー達が誰も勝てないAI。そもそもこのテストプレイヤー達は想像を絶するほと上手い集団です。まあどこの会社のテストプレイヤーも想像を絶するほど上手いでしょうけど。まあ今の私達のAI開発方針は出来るだけ完璧なAIを作って後は人間に合わせて手加減することで釣りあいを取ろうと言うのですからね。ですがやっぱり上の方々が最終的には観るしテストプレイヤー達の意見によって判断するのでおまけの最強モードは製品に含まれるかどうかと言うと厳しい所ですね。やっぱ上の方々が無難な心構えですと厳しいものですね。もっとチャレンジングな会社になって欲しいものです。 私は欲しいと思いますよ最強おまけモード。挑戦しまっくてるとどんどん上手くなりますよ。もしかするとテストプレイヤーの育成なんかに最適かもですね。

回答No.10

可能です。 格闘ゲームにおいては必ず「打撃にはガード」や「飛込みには対空」といった最適な行動が設定されています。 いわゆる「待ち」の状態からプレイヤーの処理に対して必ず最適な行動を取れば、絶対に負けません。 もちろんお互いに何の行動も取らなければ引き分けにしかなりませんが、 少なくとも人間が絶対に「勝てない」AIをプログラミングすることは可能です。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.9

先に書いたように、現在市場にあるゲームは「負ける」ように調整してあります。「絶対に勝てない」なんて無理ゲー、誰が金出してまでやるんですか? これをして「『人間が絶対に勝てない』は無理」と結論付けるのは間違いです。 「人間vsAI 勝った方に賞金」のようなイベント用に本気で勝ちにいくのだったら、今あるような「必勝パターン」等は徹底的に対策するでしょう。

onioni1999
質問者

お礼

普通の家庭用格闘ゲームのオマケモードとして存在する分には誰でもやると思いますが? そのうえで、これまで数百という格闘ゲームが開発されてきたのに、 ただの一つとして無敵またはそれに近いAIすら一度も存在してない理由は? 必勝パターンを対策するなどと言葉で言うだけなら簡単です。 すべての技に対応する「超反応」と呼ばれるAIはかなり昔からあります。 しかし人間側はその穴をついて勝つ方法をいつも見つけてきました。 結局、将棋などと同じで「理論上はAIが無敵」であっても、 時間内に判断を下さなければいけないという制約があるため現実には無敵にはなれない という現代の技術的な限界があるのではないかと考えています。 将棋なら1手につき1分前後の判断時間があって、 それでもいまだにアマチュア大会ベスト8程度の実力が現代科学の限界です。 10年前だとCPUが1手うつのに毎回1分ほど使って、 それでもちょっと強い素人程度のレベルでした。 それが格闘ゲームだと0コンマ1秒単位で判断をし続けなければいけないわけですよ。 パターン数が将棋よりずっと少ないとしても、 この思考時間の短さはCPUにとって決して簡単ではないと思います。 いくら現代のCPUでも0コンマ1秒で出来ることって限度がありますよね。

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.8

格闘ゲームには詳しくないので、プログラムのことについてだけ回答することにします。 今までの流れを整理すると、あなたの質問は3つありますよね。つまり「プログラムすることは可能か」と「現在の技術で可能か」そして「実際にどう動かせばいいのか」の3つです。 前の2つについては、純粋に技術的な問題です。 1つ目の質問については、Yesです。これは既に納得されているものと思います。 つまり、格闘ゲームにいくら複雑な戦術があろうと、チェスや将棋などと比べればたかが知れており、十分な計算資源さえ与えられればいくらでも強いAIを作ることができます。 2つ目の質問についても、既に答えたとおりです。 しかしこういった技術的な問題に興味が無いのであれば、質問される場所を間違えていると思います。格闘ゲームでとるべき戦術は、人間とAIとでは反応時間という前提が変わっただけで、何も違いはありません。つまり「キャラの動きがものすごくゆっくりに見えたらどうするか」という考えです。格闘ゲームの戦術について質問したいのであれば、ゲーム系の場所で質問されたほうがいいと思います。

onioni1999
質問者

お礼

なるほど、おっしゃるとおりですね。 「キャラの動きがものすごくゆっくりに見えたらどうするのが最善か」をゲーム好きに聞いて、 そのうえで可能かどうかを聞くべきですね。 ただ、 >チェスや将棋などと比べればたかが知れており、 これが本当かどうかが疑問なんですよね。 本当にたかがしれてるのなら無敵のAIが出来るという結論で間違いないです。 しかし将棋ゲームはかなりAIが進化していますが、 格闘ゲームがたかがしれてるのなら格闘ゲームももっと強いのを作ってるはずです。 なのに、私の知る限りでは性能差の無いキャラ同士の対戦なら、 難易度を最大にしても人間側がそれなりに簡単に勝ててしまうゲームしか見たことがありません。

回答No.7

>いわゆる削りが出来るような必殺技系はこれをやられると確実に反撃されてしまいます。 逆に言えば、削りが出来る必殺技は人間は出せない、出せば反撃を確実にくらう、ということですよね。 赤ブロありなら、人は全くもって手をだせないということになりますよね。 人が攻撃できて、反撃をくらわない状況ってなんでしょうか? 小足の上段下段の揺さぶり?最強AIなら全部ブロッキングしてスパコンにもっていかれそうですね。

onioni1999
質問者

お礼

条件として「引き分けは人間の勝ち」としているので 人間側は必ずしも攻撃する必要はないですよね。 それに対してCPUはどのような動きを見せるのが最善でしょうか?

回答No.6

凄く興味深いので、私の意見を…。 (穴は沢山あると思います。) というか、回答者よりも質問者の方が論理的ですね。 同キャラ対戦という前提で言えば、演算装置の性能を無視すれば理論的には可能ではないでしょうか? まず、攻撃判定の遅い攻撃は総じて人が出すことは出来ません。全て潰されるからです。 ガード確定の場合も、ガードされた場合に反撃されるような間合いでは人は攻撃出来ませんよね。CPUは100%ガードし、反撃しますから。 当然、CPU側もそのような間合いでは攻撃しません。 次に削りなどでダメージを与えた上、反撃されない間合いの場合、同キャラなので間違いなくCPUが先に手を出せるはずです。最低でも同時なので相打ちでしょうが、毎回相打ちできるようなら、それはもう人間じゃないでしょうね。 壁際などCPUが追い込まれないことが前提ですが、まず追い込まれることはありません。開始から不利な状況に持っていかれることはありませんから。

onioni1999
質問者

お礼

何の格闘ゲームを想定するかによってもだいぶ違ってくるかもしれませんね。 ストリートファイターのようなゲームだと、ブロッキングシステムという 「必殺技をガードしても削られない&防御時のモーションをほとんど無しに出来る」 というテクニックが存在しています。 まあそれでも弱Kのような攻撃に対して反撃することは出来ないですが、 いわゆる削りが出来るような必殺技系はこれをやられると確実に反撃されてしまいます。 なので、CPUは近距離で必殺技を使うわけにはいかないですよね。 かといって、遠距離で使ったらプレイヤーは十分避ける余裕があります。 あと、最速の攻撃を上回るスーパーコンボの存在も重要かもしれません。 通常の最速が弱Kだとしても、 それが発生してから当たる前にスーパーコンボを出せば通常は勝ってしまいます。 となると、ゲージの獲得はかなり重要になってきますよね。 しかしゲージを獲得するためには必殺技など大技を使ったほうが断然早い。 では離れた位置でゲージを溜めまくるという作業が必要になってくる? 近距離でも、プレイヤーの出した必殺技に対してCPUが弱攻撃で迎撃した場合、 プレイヤーのほうがゲージが溜まるのが早くなって結果的にプレイヤー有利になる可能性も? そう考えると膨大なパターンを考える必要が出てきますね。 もちろん理論上では、同キャラならCPUが勝つのは間違いないと思いますが。

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.5

格闘ゲームのことについてすこしずつ分かってきました。 いままでに開発された対戦格闘ゲームのAIには、必ず勝ててしまうパターンがあるとのことですが、これには様々な理由があるでしょう。 まず、ゲームに搭載するAIとして、絶対人間には勝てないAIを搭載することにどんな意味があるのか、ということです。そんなモードがあったとして、誰がコインを入れるでしょうか? せいぜい一回やってみて「確かに勝てないな」ということを確認して終わりです。そんなものを実装することは、商品として無駄ですし、仮に作れたとしても作ってみようともしないでしょう。 お金の話は抜きにして、既存のAIを改良する方法がないか考えてみましょう。既に、相手の行動を予測しなくても迎撃可能な技は全て迎撃できるAIがあるものとします。 この場合考えるべきことは、無予測迎撃不可能な技(以下、AIハメと呼ぶことにします)に対してどのように対処するかだけで済みます。考えられる対処方法は次の通りです。 1. AIハメを出させないようにする 2. AIハメを出されても大丈夫なようにする 格闘ゲームのルールについて詳しくないので、これですべてだとは思いませんが、想像する範囲で具体的な方法を考えてみますと、 1-1. AIハメを出せないようにする(常に当たらない位置にいるなど) 1-2. 先制攻撃する 1-3. フェイントを出す 1-1については、可能ならば最上の策ですが、実際必ずしもそれだけではうまくいかないのでそういうパターンが出来てしまうのでしょう。 となると、1-2, 1-3あるいはそのほかの人間同士の対戦と同様の戦術が必要になってきます。 そうなってくると、重要なのは戦術研究とその適用です。 ここで、ゲームに付属のAIはかなり不利になります。なぜなら、AIを作るときにはゲームはまだ完成しておらず、戦術研究などろくに進んでいません。また、コンピュータはゲームを動かすだけで精一杯で、AIに複雑な戦術を駆使させることができません。 またお金の話に戻ってしまいますが、ゲームを作るときには、CPUパワーを使ってまでAIを強力にすることが求められるのはシミュレーションゲームやパズルゲームくらいで、格闘ゲームだったらゲームそのものをスムーズに動かすこと、あるいは演出を豪華にしたりすることのほうが重要視されるでしょう。 疲れてきたのでこのへんにしておきますが、技術的に可能かどうかで言えば十分可能だろうと思います。ただ、誰もそれをやろうとしないのには理由があるのです。まとまってなくてすみません。

onioni1999
質問者

お礼

>せいぜい一回やってみて「確かに勝てないな」ということを確認して終わりです。そんなものを実装することは、商品として無駄ですし、仮に作れたとしても作ってみようともしないでしょう。 いえいえ、格闘ゲームはゲームセンターだけではないですから。 家庭用ゲームソフトの格闘ゲームで「おまけ」として最強AIに挑戦するモードを用意したら 何百回何千回と挑戦する人がたくさん出て話題にもなると思いますよ。 >1-1については、可能ならば最上の策ですが、実際必ずしもそれだけではうまくいかないのでそういうパターンが出来てしまうのでしょう。 実際にはボクシングのリングのようになっていて移動出来るスペースに限界があり、 後ろに「壁」があるので逃げ続けることは不可能です。 距離があったらあったで今度は飛び道具という選択肢も出てきます。 飛び道具は隙が大きい大技ですが、相手と距離があれば迎撃されることはなく どれだけ距離が離れていても届きます。 避けることも出来ますが、その避ける動作中は移動や攻撃が制限されますから、 その次の攻撃に対応できなくなる可能性が生じてきます。 そのため 飛び道具→避けた相手に追撃 というのは格闘ゲームでは定番パターンになっています。 このように、思っている以上に最適行動の分岐パターン数は多いのです。 ですから、理論上は可能でも、将棋のように 「現代の科学ではまだ不可能」という可能性も十分あるのではないかと思った次第です。

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.4

「一般的な格闘ゲーム」とやらをあまりやった事が無いので、軽くルールをググッて調べてみた感想なのですが、 ほとんどの格闘ゲームでは、キー入力をしてから技が出るまでに時間差があります。 「見てから回避余裕でした」なんて言葉もありますが、人間には不可能な反応もCPUには可能ですから、人間には勝ち目はないでしょう。 一方、先読みしないと絶対回避できないというルールのゲームであれば、他の方が仰っているとおり最終的にはただのジャンケンになってしまいますから、人間同士の対戦でもあまり面白くならないでしょう。 全体的に、「強いほうが勝つ(勝ちやすい)」というルールでないと「対戦」ゲームとして成り立たず、格闘ゲームのような将棋やチェスなどと比べてはるかに単純なゲームではCPUに有利すぎ、かといってルールを複雑にすると人間がついていけなくなってしまうのではないでしょうか。

onioni1999
質問者

お礼

>ほとんどの格闘ゲームでは、キー入力をしてから技が出るまでに時間差があります。 それはおそらく「キー入力してから技が出るまで」ではなく、 「技の出始めから当たり判定が発生するまで」のことだと思います。 相手の技が発生してから当たり判定に到達する前に、 こちらが当たり判定の早い技を出すことで迎撃できるので、 「見てから余裕でした」となるのです。 ですからキー入力から技が出るまでに時間があるわけではないと思います。 厳密に言えば時間差はあるでしょうが、それはコンピュータが命令を受け取り指示するまでの時間であって、その間にAIキャラの動作を割り込ませるというのはゲームそのもののプログラムを変えない限りは不可能だと思います。 そして格闘ゲームだと、 同じキャラを使わない限りはその「最速の当たり判定技」が異なります。 極端な話で言えば、最強のAI同士で戦った場合には引き分けにはならないのです。 昔から高レベル設定のCPUのキャラは 「こちらの攻撃にあわせて攻撃を出す」というプログラムが組まれているものが多いです。 その場合には人間の出すほとんどの技は迎撃されてしまうのですが、 最速で技を出せる特定キャラにおいて最速の攻撃だけしていると、 相手の迎撃よりも早くこちらの当たり判定が到達するため、 それだけ使ってれば勝ててしまうなんてこともよく見られました。 だから迎撃プログラムにも限界があるのではないかとも思えるのです。 今まで何百何千という格闘ゲームが開発販売されてきたと思うので、 無敵AIが出来るのならもう一つぐらい現れてもいいと思うんですよね。 それが無いのはやはり無理だからなのかなぁと。 現状ではどんなに強い敵キャラでも、 ある一定の攻撃を一定のタイミングで出すと必ず食らってしまうパターンが存在していて、 人間はそこをついて倒すことが出来ています。

回答No.3

No.2 です。 >>だとすれば人間の操作に応じてそれに対応する技を >>人間のキャラの動きよりも先に出すようにすれば > >ただ、それってどんなに早くても「同時」が限度ですよね。 > >ボタンを押してから時間をおいて攻撃発動する仕様にしてたら別ですが、 >あくまでも既存の格闘ゲームでの話なのでボタンを押すのと同時に発動してるはずですし、 >それに対応するということは「それより先に攻撃を出す」というのは不可能だと思います。 いいえ、そうではなく、わたしの説明はあくまでも コンピュータが「ズル」をすることが前提です。 人間とコンピュータは対等ではありません。 コンピュータゲームの場合、 相手のキャラも自分のキャラも戦うステージも、 ダメージのコントロールも当たり判定も勝敗の判定も全て コンピュータの手のひらの上、なのです。 自分が操作していると思っているキャラも 実は人間の操作にしたがってコンピュータがそのように動かしてあげているダケに過ぎません。 だったらコンピュータが人間がパンチのボタンを押したのを確認してから CPU側のキャラを防御体勢にして、それから人間側のパンチの処理をする、 なんてこともできてしまうわけです。 それを毎回やってるとさすがにばれるので うまいことときどきパンチをもらってあげる、 なんてこともできてしまうわけで、 まさに、最後に私が書いた 「相手の手札もコンピュータが覗き見できる」 状態なわけです。 で、そんなズルをしないであくまでも対等に、 ということであればいろいろ変わってくるとは思います。 で、私はプログラマーでプログラミングオタクですが、 同時に武道/武術オタクでもあり拳法の有段者でもあります(笑 武術において必ず、もしくはほぼ勝てる方法とは、 相手の先を取る、、、というのがひとつあります。 突きにしろ蹴りにしろ必ず技が発生するまでに構えの変化、体重移動、目線の変化 などの予備動作が必ずあります。 それを察知して相手の技が発動する前に攻撃をする、 または防御をして相手の技を殺してから攻撃をする。 前者を先の先、後者を後の先、などといいます。 まぁこんな芸当、それなりの達人にでもならないとできっこありませんけどね。 これをコンピュータプログラムで実現しようとすれば 上のズルの例のようにインチキをするか、 人間の動作を記憶して解析しクセを見つけてそこに付け込むか ということになると思います。 さすがにゲーム機が人間の表情を読み取るのは不可能ですしね。 学習というのはムリだ、とすれば まぁ、格闘ゲームというのは、あくまでも全て対等でインチキをしない、 という前提であるのならば いわゆるジャンケンになると思います。 というか、そうなるざるを得ないでしょう。 インチキなし、学習なしなら 要素としては多少の運がからむだけの、 時間が切れるかダメージがなくなるまで続く じゃんけんポン

onioni1999
質問者

お礼

いやいや、さすがに既存ゲームの仕様の範囲内でお願いします。 「Aボタンを押したらパンチが出る」といった基本ルールすら変えられてしまうと インチキっていうかもう何でも有りになってしまうので(笑) というかそれって一般的なAIの概念を超えてますよね。 「プログラムを変えるAI」は無しで、あくまでも「ゲームキャラの動きのAI」です。 トランプゲームで例えるなら 相手の札を見ることは出来るし次のカードが何かもわかるけど カードの数字を自由に決めることは出来ないというところでしょうか。 これだと、ブラックジャックやポーカーなら確実に勝つことは不可能ですが、 ハイ&ローならAIが確実に勝てることになりますね。 >相手の先を取る、、、というのがひとつあります。 そうなんですよね。 AIにおいても「絶対に負けない」とするには「ギリギリまで攻撃しない」のが最善だと思います。 極端な話で言えば、人間とまったく同じ動きをしていれば負けることは絶対に無い。 それに気付いたので後から「引き分けは人間の勝ち」とさせて貰いました。 同じ動きだけされたら格闘ゲームとしてもつまらないですしね。 これにより、AIは先手を取る必要性が出てきます。 そうなると、後手の人間が先に攻撃を当てる可能性が出てくるような気がするのです。 とすればAIの確実な勝利は得られないのかな?と。

回答No.2

なぜそんな疑問が出てくるんのか 質問の意図がぜんぜん想像できないんですが 「ズル」をすれば可能ですよね。 CPUキャラ対人間操作キャラの場合、 忘れてはいけないのは自分が操作しているキャラも 実はコンピュータが操作しているという事実 ですから人間の操作もCPUには丸わかり。 だとすれば人間の操作に応じてそれに対応する技を 人間のキャラの動きよりも先に出すようにすれば 理屈ではまったく勝てないようにすることはできます。 ポーカーやマージャンのようなゲームでも同じですよね。 自分の手持ちのカードやパイの内容も 実はコンピュータは知っているわけですから 「盗み見」すれば人間はまったく勝てませんよね(ハハ

onioni1999
質問者

お礼

>だとすれば人間の操作に応じてそれに対応する技を >人間のキャラの動きよりも先に出すようにすれば ただ、それってどんなに早くても「同時」が限度ですよね。 ボタンを押してから時間をおいて攻撃発動する仕様にしてたら別ですが、 あくまでも既存の格闘ゲームでの話なのでボタンを押すのと同時に発動してるはずですし、 それに対応するということは「それより先に攻撃を出す」というのは不可能だと思います。 ということは、人間もそれがわかっていれば 「同時に攻撃した場合に負けない技」だけを使うという選択肢もあると思います。 あと、もう一つだけ条件を加えさせてください。 「HPが同等のまま時間制限を迎える『引き分け』になった場合は人間側の勝ち」とします。 これにより「人間側とまったく同じ動きをする」という手段は封じられます。

onioni1999
質問者

補足

補足です。 「理論上可能」というのが間違いないことは私もわかっています。 あくまでも「現代の技術で可能なのか」というのが論点です。 例えば将棋なんかも理論上でいえばコンピュータに勝てる人間はいないでしょう。 しかしあまりに膨大なパターンが存在しているため、今のところ一流のプロには勝てないのが現実です。 しかしチェスならすでにコンピュータが勝利しています。 だから格闘ゲームならどうなんだろうと思った次第です。 格闘ゲームもドット単位の動きとコンマ1秒単位の時間を考えると膨大なパターンが存在してますよね。