Clicker)というJavaScriptを使ったブラウザゲームが流行っている。クリックするだけのゲームと聞いて、最初はあまり興味を持てなかったのだが、自分の周りであまりにもやっている人が多いので少し遊んでみることにした。Cookie)をクリックすることでさらに多量のクッキーが得られるので、それらを駆使してできるだけたくさんのクッキーを作るというゲームだ。このようにとてもシンプルなゲームなのだが、最初はちまちまとしか作れなかったクッキーが徐々に増えていき、様々なアイテムやイベントを通すことで、終盤では毎秒数千億クッキーを作れるというところに人々を惹きつける魅力があるらしい。自分は「人間の代わりにプログラムを働かせることでどこまで効率が良くなるか」という目的のために自動化プログラムを作成したくなった。コンピュータは人間を楽にさせるために存在するべきだ。このゲームはJavaScriptで作られており、そのコードや変数を修正すれば簡単にチートを行うことができる。自分はそれについては全く興味がない。元のシステムには全く手を入れずに人間が操作する部分のみをプログラムで最適化したいのだ。最初に考えついたのは自動クリックだ。これは様々なツールが世に溢れているのでそれを使っても良いのだが、プログラマだったら、このぐらいは自分で作りたい。そこで、Pythonとpymouseを使って自動クリックプログラムを作成した。これで、毎秒100~200クリックすることができるようになった。これ以上の速度にするとブラウザがついて行けずプチフリーズを頻繁に起こし逆に生産性が落ちてしまう。因みに画面上のエフェクトなどは設定で消しておくほうが良いだろう。次に、ゴールデンクッキーへの対処だ。ゴールデンクッキーはランダムな間隔でブラウザ上のどこかに出現する。そのクッキーをクリックすると溜まっているクッキーの1割分の枚数が貰えたり、一定時間現在の7倍の効率でクッキーを焼けるようになったりする。この効果はかなり大きく是非ともこれを自動化したい。最初は一般的なテンプレートマッチングにより検出しようと思ったが、ゴールデンクッキーは360度ランダムに回転した状態で出現するので、それに対処しようとすると、PILで簡単に済ませるには処理時間が掛かってしまいそうだし、OpenCVを入れるのも面倒だし、クッキー1枚ごときの検出で手間を掛けたくない。そこで、ゴールデンクッキーだけに使われている色を検出することにした。PILでデスクトップのキャプチャを行い、ブラウザの領域のみをクロップし、その領域内でゴールデンクッキーで使われている色を検出できれば、その位置がクリックする位置になる。検出されなければクリックを行わない。以上の自動化でかなり効率よく稼げるようになり、最終的に作ったクッキーの約7割がクリックによる生産になった。1回目は10京個以上のクッキーを作ったあとにResetを行い、2回目でアップグレードが100%になるまでに要した時間は「リサーチ」の待ち時間を含めて9時間程だった。途中で一時的に中断したり、効率的にアップグレードしたわけではないので、その辺を考えてクッキーを焼けばもっと早く100%になったと思う。9時間と言っても自動化プログラムが動いている間は席を離れていても良いので、自分で操作したのはアイテム購入ぐらいだったが。いうわけで、自分はクッキークリッカーをそれなりに楽しんだ。楽しんだ部分は主に自動化プログラムを作成したところなので、一般にプレイされている方とは楽しみ方が違うのかもしれないけど。最後に作成したプログラムを以下に示しておく。Engineメッセージボード*当ブログに関する意見や要望などにお使いください。Googleアカウントでログインすることで書き込みができます。Twitterへの送信を同時に行うこともできます。ストリートビューで散歩*Googleマップのストリートビューを利用して散歩をするWebアプリです。ストリートビューとマップを分割してマーカーを視界タイプに変更することで使いやすくしてあります。APIを利用したグラフ・チャート作成ウェブアプリです。クリック一つで簡単にグラフを作成できます。ブログ記事への貼り付けなどにどうぞ。OpenIDテスト*OpenIDによるログインのテストを行います。mixiであればクリック一つで、他のOpenIDアカウントであればそのURLを入力することでテストできます。一言コメント表示機能付きです。HTML文字変換*テキストで使われているHTML特殊文字をウェブで表示できるようにするための文字変換ウェブアプリです。プログラムのソースコードなどをブログ記事に貼り付けるときなどに便利です。短縮URLチェッカー*フィッシングサイト判別機能付き短縮URLチェッカーです。テキストボックスに変換したいURLを入力すればbit.lyの短縮URLが表示され、bit.lyの短縮URLを入力すればもとのURLが表示されます。展開されたURLがリンク付きで表示されますが、もしフィッシングサイトの疑いがある場合は警告が表示されます。Trendsの急上昇ワードをランキング順に表示します。Googleでのキーワード・画像検索やWikipediaによる用語の説明もあります。※GoogleがAPIの提供を終了したため、現在停止中です。自己紹介noxゲームを楽しむだけの余裕と感性は失いたくないnoxです。