I'm KUITARIDER.

がりゅうさんのサイキックミラクルブログ

SSレア [トリック☆ジョーカー] 堀裕子

「…というわけで、新入社員のみなさんはこれらの金融機関を有効活用して、賢くお金を使っていきましょう。」

 

ぼく「心に残る良い講義であった。 これからも自身の更なる発展のために何が必要か、考え続けなければと感じた。今日はしっかり休んで次の業務に備えたい。 #つくたび」

 

 

 

 

〜帰宅後〜

f:id:shingaryu:20171111082538p:image

ムン!?

 

 

f:id:shingaryu:20171111085514j:image

 

 

f:id:shingaryu:20171111083707p:image

f:id:shingaryu:20171111084312j:image

 

 

 

f:id:shingaryu:20171111083732p:image

f:id:shingaryu:20171111084328j:image

 

 

 

f:id:shingaryu:20171111083741p:image

f:id:shingaryu:20171111084353j:image

 

 

 

f:id:shingaryu:20171111083750p:image

f:id:shingaryu:20171111084410j:image

 

 

 

f:id:shingaryu:20171111083755p:image

 

 

 

 

 

 

 


f:id:shingaryu:20171111084008p:image

 

 

 

 

 

 

 

f:id:shingaryu:20171111084458j:image

今回のユッコはニーソとスカートの部分がすごく好きです。

 

 

Pokemon Showdown用のAIを発掘した

こんばんわ!城ヶ崎美嘉だよ!

 

がりゅうです。

ちなみにデレマスで一番好きなアイドルは堀裕子です。

 

東京都、ラジオネーム「オオアリクイ」さんからのお便りです。

「がりゅうさん、どうもこんばんは。突然ですがぼくは最近ポケットモンスターサン・ムーンにハマっています。プレイしていて思ったのですが、同じ対戦ゲームでも将棋とか囲碁のAIは人間が勝てないくらいすごく強いのに、ポケモンのCPUはとても単純で、ゴリ押すだけで勝ててしまいますよね。がりゅうさんはポケモン対戦のAIって聞いたことありますか?」

 

ということでポケモン対戦のAIプログラムをまた試してみたので紹介します。

 

「また」っていうのは、こういうこと。

shingaryu.hatenablog.com

 

 

それでは、

 

 

 

今回ご紹介するポケモン対戦AIはこちら! 

github.com

笑顔がステキですね。なんかスタンフォード大の学生らしいですよ。

 

ここではshowdownbotという名前になっていますがReadmeを読むとPercymonという名前にしたいらしいです。それでは今からPercymonと呼ぶことにしましょう。

 

-----

PercymonはPokemon Showdown※サーバー上で動くポケモン対戦AIです。

セットアップは簡単で、

npm install

で必要なモジュールをインストールしたあと、

{
    "username" : "sillybot",
    "password": "arbitrary password",
    "message" : "gl hf"
}

のようなログイン情報を記したファイルを作り、

node bot.js --startchallenging 

で実行だ! Yo!

-----

(忙しい人のための意訳です、内容は理解しなくていいです)

 ※PokemonをShowdownするやつです。適当にググってください

 

 

 

なるほどね。

 

 

 

 

 

いいねぇ~~~~

 

 

 

 

(ソースコードをダウンロードする音)

(ログインファイルを入力する音)

node bot.js --startchallenging  ポチ

 

Uncaught SyntaxError: Unexpected end of input

 

 

 

 

 

 

は?

 

 

 

 

 

 

動かんやんけ

 

 

 

 

 

それもそのはず、なんとこのプログラム、最終更新が大体3年前とかである。

f:id:shingaryu:20171028231434p:plain

 

一応今年4月にちょこっと更新してあるのだが、実際今動かないのだから困る。

本当にFixed some incompatibilities with the lastest versions of Node and Pokemon Showdown したのだろうか。extraなsemicolonをfixしている場合ではないぞ。

f:id:shingaryu:20171028231527p:plain

 

 

 

 

 

まあ、

 

 

 

 

自力でアップデート&修正した。

 

そこらへんの苦労はなんかまた別の機会に書きましょう

showdown側のファイル構成が2017年5月頃に大きく変わっているのでとりあえずその前までの変更に対応しました。サンムーンが発売して一段落経っている時期なので十分でしょう。

 

 

それではお待ちかね、動作の様子(^^)/~~~

 

まず、プログラムの起動とは関係なく、先にブラウザでshowdownにログインしておきます。これは対戦の様子を実際に確認するために必要で、Percymonは裏でshowdownサーバーとの通信(対戦相手検索、コマンド選択、、)のみを行います。

f:id:shingaryu:20171028234741p:plain

 

 

f:id:shingaryu:20171028234112p:plain

Percymonは、いわゆるコンソールプログラムです。ソースコードのあるディレクトリ上で起動コマンドを打ちます。

(ディレクトリにたどり着くまでに上の方でめっちゃ間違えてますが気にしないでください。)

 

 

f:id:shingaryu:20171028235432p:plain

数秒程度でログイン完了(Successfully logged in)の表示が現れ、同時に対戦相手の検索が始まります。

対戦相手の検索とは、showdownの「unrated random battle」と呼ばれるルールで現在対戦募集しているユーザーを検索します。showdownのルール区分は未だによく分かりませんが、要はフリーの6vs6シングルです。

PTはどこで用意した?と疑問に思うかもしれませんが、このルールでは、PTはランダム生成されます。

 

 

f:id:shingaryu:20171029000042p:plain

マッチング成立後はすぐに対戦が始まります。このとき、あらかじめ開いておいたブラウザ上のshowdownで、対戦画面が開かれます。

技および交代のボタンは通常通り表示されていますが、コマンド選択はPercymonが自動で行うためこれらのボタンは一切触りません。

 

 

f:id:shingaryu:20171029000405p:plain

同時にPercymonを起動しているコマンドプロンプトではAIの最善手探索が始まり、ものすごい勢いでログが流れていきます。

デフォルトの2手探索だとだいたい数秒程度で終わり、同時にサーバーにコマンドが送信されます。

 

f:id:shingaryu:20171029000558p:plain

その後も全自動で対戦が進みます。対戦の状況が逐一Percymonに送信され、それを元に計算された最善手がサーバーに送信されるような仕組みになっています。

 

 

 

まあ、とにかくこんな感じですよ

っていうのを見せるためにshingaryu(Percymon AI、手前) 対 sayuri1024(ぼく、奥) のテスト対戦のリプレイを載せます。

replay.pokemonshowdown.com

 

中盤のカプ・ブルルの活躍ような、適切な受け出しと正確なダメージ感覚に感心します。特に今回は6 vs 6なのでダメージ計算のパターンが多く、コンピュータに有利な状況だと思います。

f:id:shingaryu:20171029001708p:plain

f:id:shingaryu:20171029001720p:plain

f:id:shingaryu:20171029001728p:plain

 

とりあえず今はここまで。テスト対戦までシュッといけたように書いてありますが実際はソースコードの改修に2週間かかっています。

でも埋もれた化石を発掘したような感じで気分がいいのと、これから以前の自動PT生成のような応用が期待できます。

 

 

乞うご期待

(写真左側はアトミックモンキー所属、新人女性声優の青木瑠璃子

 f:id:shingaryu:20171029010754j:plain

クイタランオンリーシングル3on3! 使用構築(クイタランクイタランクイタラン)

I'm KUITARIDER. I'm always full throttle.

というキャッチコピーをぼくが売りにしていることはあまり知られていませんが、Twitterのアイコンの通り自他共に認めるクイタラン好きであるので、タイトルにあるクイタラン統一大会に参加しました。

 

chanmiss.blog.fc2.com

タイトルが全てを表しています。クイタランオンリーの3 on 3 シングルバトルです。

 

f:id:shingaryu:20171011224910j:plain    f:id:shingaryu:20171011224928j:plain

こんな感じです。e-sportsですね。

 

こんな感じの環境予想をしてからPTを組みました。クイタラン環境ってなんだ

・仮想敵がクイタラン(炎タイプ)しか居ないので、攻撃技は水・地面・岩のどれか1つを持てば十分

・特性:しろいけむり の存在のため、能力ランクを下げる技はあまり有効ではない

・火力が乏しく、積み技も少ないため耐久型が相対的に有利

ポケモン自身の能力がカスなので持ち物がめちゃくちゃ重要

 

実はポケモンで真面目にPTを考えて育成するのは軽く1年ぶりとかだったので、意味不明なクイタランを3匹育て上げるだけで社会人の貴重な土日を潰してしまい軽く鬱病になりました。

というかいざ育成を開始してみたら、こんなアイコンしてるぼくが第6世代で一匹もクイタランを育てていなくてキレました。

 

~~~構築紹介~~~

f:id:shingaryu:20171011215320g:plainf:id:shingaryu:20171011215430g:plainf:id:shingaryu:20171011215452g:plain

 

 

f:id:shingaryu:20171011220345g:plain

クイタラン(NN: ホリタラン) ♂ @ジメンZ

しろいけむり

ようきAS 161-149-86-×-86-128

・あなをほる

・はたきおとす

・ちょうはつ

ギガインパクト

ジメンZ芸人。実はジメンZあなをほるは今大会のルール上唯一確1をとれる超人気技である。そのため6回の対戦中半分くらいは最速ジメンZ同士のアツイ決闘を見ることができた。

初手で同速勝ちして1匹落とせたらほぼ勝ち。身代わりとかで適当にかわされたときや、1匹落としたあとの2匹目には はたきおとすorちょうはつを打って起点にならないように後続に繋ぎます。 

単発のあなをほるのメタられ方がハンパなかったので、がんせきふうじと両立させた方が動きやすかったと思いました。

 

 

f:id:shingaryu:20171011220345g:plain

クイタラン(NN: ヒロイタラン) ♂ @ウイのみ

くいしんぼう

ひかえめBCベース  160-×117-172-86-87

・めざめるパワー岩

・リサイクル

・どくどく

・まもる

最初に環境を予想したとき、「みんなこんなアリクイのためにめざパ粘んないだろうし物理技環境やろーー」と思ったのでB振りです。実際はみなさんクイタランに真剣だったのでそんなことありませんでした。あとは同族意識でSに12振っています。

どんな相手にもそこそこ対応できるオールラウンダー、あるいはミッドフィルダー(真ん中にいるので)。タイマンではまずどくどくから入り、まもるで様子を見た後普通に打ち勝てそうであればめざパ、持ち物ありめざパなど超火力相手にはまもるリサイクル連打と後続への交代でなんとかターンを稼ぎます。

2番目に置いてましたが、相手の型が分かってからの方が動きやすいのと、交代ができないラス1相手にはどくまもが強いので、最後の方までとっておくことも多かったです。

個人的にはクイタランの特性と技をうまく活用できたベストな型だと思う。ただSはもう少し上げてもよかったかも

どうでもいいですがこいつを育て上げるためにサンムーンで初めてポケモンをレベル100にしてぎんのおうかんを使いました。時間と金をかけて子供を高等教育機関に送る親の不安な気持ちがよくわかりますね。

 

 

f:id:shingaryu:20171011220345g:plain

クイタラン(NN: ネムリタラン) ♂ @じゃくてんほけん

しろいけむり

わんぱくHBD 192-117-116-×-98-86

・がんせきふうじ

・ねむる

・ねごと

・たくわえる

本PTのラスボス。恐怖のアリクイ(みんなアリクイだが)。

舐めた火力の物理相手に繰り出して弱保を発動させた後、ねむるねごとたくわえるがんせきふうじで好き勝手に料理します。そもそも本ルールは基本的に抜群技しか使わないので弱保が強いです。それに加えてZ技以外の火力はせいぜい特化めざパで5割程度といったところなので、たくわえる一回積むだけでも抜群の安心感が生まれます。

努力値は持ち物なし特化めざパ確3調整、残りH→Bです。これにより大抵の技は2発耐えるのでねむるが間に合うようになります。

まあ実際はねごとでねむるが連発したり、、、Z技で葬られたりしたり、、、事故も多かったですが、先発のアタッカークイタランの補完として繰り出しが効く高耐久なクイタランは立ち回り上使いやすかったです。

実は通信対戦でNNが見えることを知らなかったのでめちゃくちゃネタバレなNNにしてしまいました。こんな名前してるのにどくどくを打ってくれた対戦相手の方、公平な対戦をしてくださりありがとうございます。

 

 

 

一応回し方みたいなのは

ルート1: 先発ジメンZ→(動いて1匹落とせたらまあ勝ち)

ルート2: 先発ジメンZ→(同速負けして落とされる)→ネムリタランで起点にして2匹ぐらい落とす→最後にヒロイタランで確殺

です。クイタランミラーでの立ち回りを考慮しないといけないのなんて今大会くらいなんじゃないでしょうか

 

-----------------------

結果は以下にまとめてくださっていますが4-2で全体3位でした。こんなカスポケモン相手に結構頑張って考察したので優勝したかった… 悔しさをバネに来年(是非開催してくださいお願いします)も頑張ります。本当に楽しかったです。

chanmiss.blog.fc2.com

 

 

I'm KUITARIDER !!

f:id:shingaryu:20171011225728j:plain