トップページ⇒tech
449コメント119KB

ぷよぷよで強いAIってどうすんの?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/05/12(土) 21:20:32.67
単純に連鎖狙いするようにすると
例えば4連鎖あたりでぷよをなかなか消すことが出来なくなり
たまにおじゃまぷよを送ってやるだけで楽に勝てる
塊を積み重ねていくやり方だと運要素も強くなってくるし
0002デフォルトの名無しさん2012/05/12(土) 21:50:21.29
草板でやれ
0003デフォルトの名無しさん2012/05/12(土) 23:42:34.19
ランダムに見えてすべての出現パターンを
ゲーム開始時に決定していれば良い。
0004デフォルトの名無しさん2012/05/13(日) 00:03:16.02
>3
最近のシリーズは知らないけど、初代は本当にそうだったよ。
0005デフォルトの名無しさん2012/05/13(日) 00:40:17.89
強い人間と同じ「情報収集方法&戦略」をすればいいのでは?
囲碁や将棋と違って、それほど難しくはないと思うが。

ゲームのAIって、どちらかと言えば思考法そのものよりも、
1フレーム内に決定できない思考をさせる場合に、
思考を継続するためのデータ構造や継続方法を考える方が難しくない?
0006デフォルトの名無しさん2012/05/13(日) 02:53:14.08
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0007デフォルトの名無しさん2012/05/13(日) 03:41:09.92
今はniimaとかikafinityとか全国トップとタメ以上のAIがあるからな
0008デフォルトの名無しさん2012/05/13(日) 12:14:59.53
>>1
ヒント:目の前の勝利(その時点の最善手、途中の優先度)ではなく、最終的
な勝利を確定するアルゴリズムにしろ。
先読みするのではなく、先を縛れ落とし込め。
敵が強いほど相手の行動を縛るのが簡単だと気が付いたとき
本当の意味が理解できるだろう。

まあその前に敵が弱い相手なら通常の定石や技術に沿った合理的な方法こそ
最高だと知っている前提はある。
0009デフォルトの名無しさん2012/05/13(日) 12:29:30.75
ぷよは攻撃がテトリスとちがい 上に降る分即影響するから
とこぷよとは違うんですよ

消える間の時間差が実際重要だしな
0010デフォルトの名無しさん2012/05/13(日) 13:40:11.06
途中で相手側と自分側で出すぷよをちょろまかせば余裕だろ
というか常に先に出して自分に有利なぷよで確定させてしまえばいい
0011デフォルトの名無しさん2012/05/13(日) 13:56:47.14
>>10
> 出すぷよをちょろまかせば

すぐばれるよ
0012デフォルトの名無しさん2012/05/13(日) 14:31:53.98
>>1
ttp://sengiken.web.fc2.com/html/AI/vsAI201205.html
0013デフォルトの名無しさん2012/05/13(日) 15:47:58.10
!> 隠しボリュームなど隠したソフトが隠されている何かを検出できる時点で
!> 存在を検索するのはできるでしょう。
!鍵がわからなけりゃ検出できないでしょ。
!実際、今のところ誰もそれを公表できてないし
そう思いたいよな。無線LANも最後の砦がAESだけみたいな状態だし
DVDもBDもあっというまだったわけで。
過信しすぎてないか?
0014デフォルトの名無しさん2012/05/13(日) 16:27:10.10
中の人を作って人にやらせればいい
0015デフォルトの名無しさん2012/05/14(月) 07:26:04.66
対戦させてゆけばそのうち強くなるさ、1万年後
0016デフォルトの名無しさん2012/05/14(月) 12:39:02.72
みんな、ここはマ板だよ

その方法の疑似プログラムやフローチャートですら示せないの?
そんなんで提案する意味あんの?
0017デフォルトの名無しさん2012/05/14(月) 14:47:18.42
>>16
お願いします><
0018デフォルトの名無しさん2012/05/14(月) 19:03:39.94
>>17
悪いが俺自身は
疑似プログラムやフローチャートですら示せない人間なんで、
そんな俺が提案する意味は全くこっぽっちも無いと断言できる
0019デフォルトの名無しさん2012/05/15(火) 15:57:01.59
>>18
誇らしげにそんな事を言う奴がこの板で何やってんだ
0020デフォルトの名無しさん2012/05/15(火) 18:29:01.93
2ちゃんねるですることと言ったら
決まってるだろ?

不まじめに対応するんだよ?
0021デフォルトの名無しさん2012/05/15(火) 19:04:16.06
>>19
プログラムを書くよう皆に促している
0022デフォルトの名無しさん2012/05/16(水) 01:38:16.38
>>21
プログラムなど素人でも書ける、
習得した奴がプログラムを作りたいが何も作れないという状況が
物語るわけな。

つまり設計も仕組みの創作もできない物がコード化する技術を学んでも
何もできない。
0023デフォルトの名無しさん2012/05/16(水) 04:32:27.87
す〜ぱ〜ぷよぷよ通リミックスの敵AIに詳しい人いませんか?
敵の3列目を7段目まで積ませたいんだが中々上手くいかない
0024デフォルトの名無しさん2012/05/18(金) 12:30:17.39
対人できるところで対戦させるボットつくろうと思うんだが
手続き型でつくるなら下みたいな構造だと思うんだがどうかな

自動でゲーム開始させる|
      ↓                                    
フィールドやぷよや連鎖状態など必要な情報を読み込む←---------|
      ↓                                    |
あつめた情報からどこにおくか決める←ここにAI実装           |
      ↓                                    |
その場所におくように自動で操作する                     |
      ↓                                    |
 勝敗が付いたか調べる-----(勝敗がついていない)--------------|
      ↓
   ゲーム終わり

連鎖wikiってぷよAIのページ見たんだけどフィールド上に今のぷよ、ネクスト、ネクストネクストから読める全パターン読んでそのひとつひとつに評価関数計算して割り出すみたいだね
3手先まで読むと通常22*22*22の10648通りもあるらしい。
まあ将棋や囲碁と違ってぷよの場合置く場所決めるのに時間かかっちゃいけないだろうから(積む速度遅くて負けるだろうから)すべての手読む前に枝切りやアルゴリズムの工夫が必要だろうね。
0025デフォルトの名無しさん2012/05/18(金) 14:58:23.60
とりあえず言語はUWSCでつくろうか

多分AIで評価関数計算する辺りから速度で問題でてくるだろうがまあ試作作るにはちょうどいいだろう
画面から色とか画像認識させるの手軽だし

まあそこまでいったら真剣に言語選ぼう
0026デフォルトの名無しさん2012/05/18(金) 14:58:31.33
連鎖の定型にあわせてファジーにくみこんで行くことくらいしか思いつかんな
暴発は計算で取りのぞけるし

対人戦の発火タイミングとか考えるとすごく難しそうだ
0027デフォルトの名無しさん2012/05/18(金) 20:57:22.59
ニコ動の人とは違うけどぷよクラでやってるけど9~10連鎖で飽和する
どうしたらいいんだろう
0028デフォルトの名無しさん2012/05/18(金) 20:58:22.31
9~10連でだいたいいっても3~4万くらいだから伸ばされると対人戦で負けるんだよなあ
0029デフォルトの名無しさん2012/05/19(土) 18:41:12.84
誰かにいなたんのソース調べて
0030デフォルトの名無しさん2012/05/20(日) 16:47:14.35
思った以上に難しくてあきらめた
誰か頼む
0031デフォルトの名無しさん2012/05/20(日) 19:25:02.42
ボトムアップ思考には無理。
0032デフォルトの名無しさん2012/05/20(日) 23:03:11.41
>>31
どうしてそんなこといえんの?
じゃあトップダウンならつくれんの?
0033100%2012/05/21(月) 09:52:47.75
>>32
設計というのはトップダウンからの設計も同時に必須だってこと。
何故?
トップダウン設計が100%できない奴がほぼ100%だから。
0034デフォルトの名無しさん2012/05/21(月) 12:28:52.13
>>32とは違う者だがなるべく日本語を使うよう心がけてくれ
まるで理解できん

面白いテーマだと思うけど伸びないね
建設的な提案ができないのがなんとも
0035デフォルトの名無しさん2012/05/21(月) 12:44:07.77
ある強いAIと言われるもののソースや設計図が公開されていれば、
それについて改善点はあるかとか、この考え方は巧いなとか、
そういう議論はできると思う。

しかし、そういうのがない状態で、
ここで何かぷよぷよAIについて提案することは非常に難しいと思う。

たいていは設計の一部だけ考えて提案してもあまり意味が無いが、
ぷよぷよAIの場合、意味のある一塊を提案するとなると、
かなり大きなものになるような気がする。

数レスくらいで提案できるように無理にコンパクトにしても、
今度はあまりに抽象的になって具体性に乏しいものになってしまうと思う。


と、提案できない言い訳を考えてみた。
0036デフォルトの名無しさん2012/05/21(月) 12:48:40.24
あまり強くはないけど崩珠のAIなら公開されてるよ
http://www.jaist.ac.jp/is/labs/ikeda-lab/poje/
0037デフォルトの名無しさん2012/05/21(月) 15:02:08.91
>>35
正論だな
でもこの板で強いAIを作れていったらすごく面白そう

ちなみに>>34で提案ができない〜と書いたのは自分の力量不足を嘆いたもので
他の人を貶める意図があったわけじゃないよ
0038デフォルトの名無しさん2012/05/21(月) 16:12:27.84
面白そうだけど、ぷよぷよって勝てる気がしない程度にしかやってないから何をやっていいのやら。
>36は切り口を明らかにしている分だけ取っ掛かり易いけどねぇ。
0039デフォルトの名無しさん2012/05/22(火) 08:41:43.84
>>33
そんなデータどっからもってきたの?
おまえの勝手な思い込みだろ?
0040デフォルトの名無しさん2012/05/22(火) 15:57:42.66
あの作者はtwitterで優越感にひたってないでソース晒せや
0041デフォルトの名無しさん2012/05/25(金) 11:53:53.58
堂々とtwitterで作者とか書いてるあたり自分スゲーとか思ってるのは間違いなと思うが、ソース晒せはおかしい
0042デフォルトの名無しさん2012/05/25(金) 23:51:54.56
だからあれでしょ
すべてのパターン読んでそれぞれに評価関数計算して一番高いのを選ぶんでしょ?
でもその実装がうまくできないってのがおまえらなんでしょ?
0043デフォルトの名無しさん2012/05/25(金) 23:57:37.81
>>40,41
作ってもソース公開するメリットなんてないからな
おまえらの意見なんか参考にもならんと思うんだけど
おまえらプログラム自体ソース読めないゴミでしょ?
0044デフォルトの名無しさん2012/05/26(土) 00:00:50.31
>>34
理解できないのはおまえが頭悪いからじゃね
トップダウンとボトムアップくらいいみわかんなきゃやばいだろ
0045デフォルトの名無しさん2012/05/26(土) 00:54:00.59
>>42
問題になってるのは実装ではなく、その評価関数計算をどうするか、だと思うが。

どういう状況の時に、次の手がどれだけあって、
それぞれの手に何点付けるのが強いAIと言えるのか。

例えば・・・

相手にちまちまとおじゃまぷよを送れる状況を作る方が評価が高いのか、
それとも、一発の大きな連鎖を組める状況を作る方が評価が高いのか。

今は高く積もっている所でぷよを回して時間を稼ぎ相手の出方を見る方がいいのか、
それとも、多少ゴミになってもさっさと落とした方がいいのか。
0046デフォルトの名無しさん2012/05/26(土) 10:55:15.14
実装もできないろくにプログラム書けない奴らだっていいたいんじゃね
アイディアあるのに全然実現できてないじゃんてことじゃね
0047デフォルトの名無しさん2012/05/26(土) 14:09:41.37
>>46
アイデア(できる、やればできる)→中間→中間→中間→中間→中間→コード

プログラム書けない以前にアイデアが妄想すぎる。
機能仕様:平均的人間と同じ動作をすること以上
これでは無理。

>>44
一般的なPGはボトムアップしかできない。
0048デフォルトの名無しさん2012/05/26(土) 21:54:24.52
>>47
普通に頭の使い方を知っている人間はプログラムをかけなくてもトップダウン思考ができる。
つまり、一般的なPGとやらはプログラムを書けるという一点以外は何の取柄もないんだな。
0049デフォルトの名無しさん2012/05/27(日) 01:11:29.41
>>47
ボトムアップでプログラム作るってどういうことか説明して
0050デフォルトの名無しさん2012/05/27(日) 07:10:38.42
崩珠(Poje)のAIがオープンソースらしい
ターン制のぷよぷよだけど
0051デフォルトの名無しさん2012/05/27(日) 09:37:30.40
>>36==>>50
はいはい、ステマステマ
0052デフォルトの名無しさん2012/05/29(火) 22:23:29.21
誰かこう思ってこう作ったらこうなったとかねーのかよ
0053デフォルトの名無しさん2012/05/30(水) 07:59:53.76
ただ連結多くして、相手が連鎖したりこっちがめいっぱいになったら適当に発火するプログラム作ったら意外にも平均3連鎖程度しかできなかった(4色)
ただたくさん連結多くしてもだめなんだなって思った
0054デフォルトの名無しさん2012/05/30(水) 20:46:29.09
>>52
俺ならできると思ってとりあえず作ったら難しくて挫折した
0055デフォルトの名無しさん2012/05/31(木) 00:08:42.17
>>52
俺はそこらの馬鹿じゃねーからできるだろうと思って作ったけど難しくて挫折した
0056デフォルトの名無しさん2012/06/01(金) 02:53:30.53
挫折禁止
0057デフォルトの名無しさん2012/06/01(金) 13:06:35.33
>>52
もう10年以上知識集めているが、毎年挫折を感じる
0058デフォルトの名無しさん2012/06/01(金) 20:30:01.95
>>53
クラでつくったの?
あと何言語か教えて
0059デフォルトの名無しさん2012/06/02(土) 00:25:04.44
>>58
クラだよ
言語はC++

クラの画面読み込んでフィールドとかツモとかスコアとか読み取る
んで、これらを材料にしてAI実装するだけの単純な作り
0060デフォルトの名無しさん2012/06/02(土) 12:12:15.99
>>59
ぷよを認識するのってテンプレートマッチングでやった?
落ちてるぷよを認識するとこで躓いてるんだけどなんかいい方法ある?
0061デフォルトの名無しさん2012/06/02(土) 13:19:07.33
>>60
そんなたいそうっぽい技術じゃないよ、難しく考えすぎではw

まずゲームのウィンドウの左上の位置を読み取って基準点にする
ぷよぷよの場合フィールドとかツモの場所とか固定だから、その基準点からのフィールドの位置を指定してマスの色を点で読み込むだけ

画面の色読み取るライブラリとかはたくさんあるっしょ
フィールドだと13(縦)*6(横)*2(自分と相手)ととかあとツモの色とかもろもろ読み込んでも1msもかからんよ
0062デフォルトの名無しさん2012/06/02(土) 13:26:04.46
もちろん見えない13段目のマス読むのは差し替えで透けるやつつかってね
0063デフォルトの名無しさん2012/06/08(金) 09:42:54.38
どうやってスコアとか読み取るの?
0064デフォルトの名無しさん2012/06/08(金) 12:44:57.88
簡単なOCRだろ

固定されたフォントで決められたサイズや位置の数字だけを読み取るのだから、
それほど難しいものでもない
(可変サイズでも倍率計算でいいと思う)

数字1文字に対して数カ所の点のピクセル値を調べれば済むんじゃないかな
0065デフォルトの名無しさん2012/06/08(金) 13:03:59.62
クラなら差し替えできるから数字の0~9すべての背景色を別々にするってのもいいかもね
そうすれば色とるのが一点で済むし対戦時も点数がわかる
0066デフォルトの名無しさん2012/06/08(金) 16:27:10.17
AIのなかのひとナルシストすぎてきもかった
0067デフォルトの名無しさん2012/06/08(金) 23:27:31.02
>>66
AI「あなたがセカンド7連鎖を打つ確率75%。しかし2連鎖分足りない。」
0068デフォルトの名無しさん2012/06/09(土) 00:39:12.12
そっとしておいてやれよ
0069デフォルトの名無しさん2012/06/10(日) 09:47:13.78
>>61
落ちてるぷよについて聞いてると思うんだが
それだと落ちてるぷよ読み込めない気が
0070デフォルトの名無しさん2012/06/10(日) 17:04:29.54
それくらいできなきゃAIなんてく組めない

てこともないけど そんな簡単なとこでつまづくなよw
0071デフォルトの名無しさん2012/06/10(日) 17:16:39.02
落ちてるぷよの認識において、何が原因で難しいと感じるのか、
的を絞って質問してくれないと、どんなアドバイスができるか考える事もできん
0072デフォルトの名無しさん2012/06/10(日) 19:00:06.22
>>70
>>71
だったら具体的な方法1つでいいからあげて教えてよ
どんなんでもいいから
0073デフォルトの名無しさん2012/06/10(日) 19:14:56.28
>>72
すでに >>61 で挙っている。
その方法で落ちてくるぷよを認識できない
問題点をもっと具体的に指摘してくれ。

それに対処する方法を私が知っている、
あるいは考案できたらちゃんとアドバイスする。

何の問題点をどう対処するのかも分らないまま方法を提案することなど、
私にはできない。
0074デフォルトの名無しさん2012/06/10(日) 21:28:12.15
だーかーらー

落ちてるぷよって変化してるんだからあらかじめ決めておいたポイントの読み込みじゃ無理でしょって

それできいてるんですよ?わかります?
0075デフォルトの名無しさん2012/06/10(日) 21:38:48.70
>>74
フィールドの全マスを調べればいいのでは?

ぷよってピクセル段位じゃなくてマス単位で落ちてくるから、
調べるのもそれほど難しくないと思うが。
0076デフォルトの名無しさん2012/06/10(日) 21:55:20.71
>>74
おまえのものすごい勘違いを是正してやってもいいが態度が気に食わない
0077デフォルトの名無しさん2012/06/11(月) 04:06:16.53
落ちているぷよは読み込む必要あるの?
色はネクストから分かるし
ネクスト出てから設置までの操作は場にあるぷよに依存する
人間なら落ちているぷよはほとんど見ないよ
0078デフォルトの名無しさん2012/06/11(月) 09:43:00.93
>>77
しばらく悩ませておけばいいのに
優しいな
0079デフォルトの名無しさん2012/06/11(月) 12:53:12.56
意図的に悩ませる意味が分らん
0080デフォルトの名無しさん2012/06/11(月) 14:59:53.08
普通に数手先の評価式つくって学習させればいいさ。
0081デフォルトの名無しさん2012/06/12(火) 00:40:34.38
起爆タイミングをはかるのに凝視は基本
0082デフォルトの名無しさん2012/06/14(木) 11:19:16.20
誰かAIできた?
AIに関する考えはあるんだけどプログラミングができないから強いのかわからない
誰か一緒に考えようぜ
0083デフォルトの名無しさん2012/06/14(木) 20:57:01.59
>>82
念能力をつけて、凝で見抜け。
0084デフォルトの名無しさん2012/06/15(金) 00:07:22.22
デスタワーAIを作るぜ
0085デフォルトの名無しさん2012/06/18(月) 13:43:58.49
ぷよぷよを操作するプログラム作ったんだけどSEGA的にはアウト?
ただ動かしてる分には平気だと思うけど公開するのはやめといたほうがいいかな
以前「ぷよぷよ」って名前出してプログラム公開してたところに警告送ってるあたり
そういうのに厳しいイメージがあるんだけど
0086デフォルトの名無しさん2012/06/18(月) 15:57:06.25
>>85
ぷよぷよって名前つかわなきゃ大丈夫
あとSEGAの音楽や画像は一切だめ

ゲーム性が同じものは別に違法にならない
0087デフォルトの名無しさん2012/06/18(月) 20:25:08.76
>>86
アルゴリズムはそうなんだけど、いわゆるマクロはどうなのかと思って
普通のネトゲだとマクロツールは禁止してるよね
ぷよぷよのオンライン対戦のときに、こちらのぷよを自動で操作するようなプログラムを作ったときに
それを公開したら怒られるのか気になった
0088デフォルトの名無しさん2012/06/18(月) 21:19:29.78
>>87
何故まず初めにセガに訊かない?

公式サイトに問い合わせページがあるだろ
0089デフォルトの名無しさん2012/06/18(月) 21:55:41.48
モラル的に公式はやめとけよ
0090デフォルトの名無しさん2012/06/18(月) 22:03:15.74
>>89
なんで?

ネットワークに介入するのはアリなのかダメなのか
マウスポインタを自動で操作させるのはアリなのかダメなのか
ロボットを組むのはアリなのかダメなのか

作る前に公式の見解を伺うのは、むしろ当然のマナーだと思うが
0091デフォルトの名無しさん2012/06/18(月) 22:11:37.89
>>90
公式がok出すわけないじゃん
たとえグレーで勝手にやってる分には文句ないと思ってたとしても
聞いてきたらダメって言うしかない
0092デフォルトの名無しさん2012/06/18(月) 23:06:29.98
>>91
だったらダメなんだろ

それでもやるのなら、それこそモラル的に問題だ
0093デフォルトの名無しさん2012/06/19(火) 02:24:05.13
もしかしてぷよぷよフィーバーってDirectInput使ってる?
sendkeysもkeybd_eventも入力を受け付けないんだけど
0094デフォルトの名無しさん2012/06/21(木) 22:14:07.83
うん
0095デフォルトの名無しさん2012/06/26(火) 02:54:51.43
>>87
作ったり公開したりすることを禁止できる根拠なんてない。
使ったのがバレたらアカBANかもしらんが、それは別問題。

法律的なところと別に、心情的に文字通り「怒る」かどうか、
怒ったとして君に怒りを表明するかどうかは、どうだろう。
試してみたら?
0096デフォルトの名無しさん2012/06/26(火) 23:07:39.40
AIの積み方って見た目でわかるけど結局人が積んだかどうかってその人のPCしらべなきゃわからんよな
0097デフォルトの名無しさん2012/06/27(水) 00:43:40.12
ぎこちない動きもAIにパターンとして実装はできるが、
そんなの必要?
0098デフォルトの名無しさん2012/06/27(水) 02:16:06.31
だれかアルゴリズム公開してないの?
0099デフォルトの名無しさん2012/06/27(水) 07:27:29.50
>>97
目的による。

スレタイみたいに、とにかく強いAIを作る目的なら不要。

人間が相手をして楽しめるAIという目的ならアリかもしれん。
0100デフォルトの名無しさん2012/06/27(水) 15:41:37.65
>>98
ちょっとぐぐればあるよ
ただ強いかどうかは別として基本として参考にできるよ
0101デフォルトの名無しさん2012/06/27(水) 17:39:08.70
>>100
未来もググレたらいいんだろうけどな。
■ このスレッドは過去ログ倉庫に格納されています