無駄ロボット研究所
【UiPath】RPAで超難易度ゲーム「QWOP」を自動操縦で完走 ~爽快! QWOP自動クリアロボの巻
10cmずつコツコツ進んで30分かけて走り抜ける!?
2019年7月18日 10:30
『無駄ロボット研究所』ではRPA(Robotic Process Automation)ツール「UiPath Studio」を使って役に立たない、無駄なロボットを作っていきます。業務を効率化するという本来RPAで実現すべき目的とは真逆のロボットたちをお楽しみください。
あの、理不尽なほどの難易度を持つ「QWOP」というゲームに、ついに勝利する日が訪れました。極限まで距離を刻みつつ、絶対に転ばない姿勢で、絶対にバランスを崩さないように、着実にゴールへと足を運ぶアクションは、まさにロボットでの自動操作ならでは。あなたは、見ているだけで、夢のクリア画面を拝むことができます。
人にはムリ! でもロボならできる!
誰もが一度は体験したことがある理不尽ゲーム「QWOP」――。
キーボードの[Q][W][O][P]キーを使って、キャラクターの足を操作し、100m先のゴールを目指すというシンプルなゲームですが、2~3回プレイするだけで、完全に心が折られる驚異的な難易度のゲームです。
しかし、今日、あなたは、ついに、このゲームに勝利することができます。それも、見ているだけ。操作は、すべてロボットが肩代わりします。
大手ITベンダーの研究開発部門なら、AIでキャラの動作を検知させる、なんてこともできそうですが、今回のロボットの動作は極めてシンプルで、ロボットならではの地道な操作の繰り返しだけでクリアします。
クリアのためのルールは2つです。
- 絶対にころばない姿勢を保つ
- 絶対にバランスを崩さない動きを繰り返す
これにより、10cmずつ、地を這うように、じわじわと100m先のゴールへと移動します。ゴールタイムは30分(!)です。
人間でも、同じ方法でクリアできるかもしれません。しかし、それには、驚異的な忍耐力が要求されますが、ロボは飽きることも、疲れることもありません。淡々と操作を繰り返し、100回中100回、確実にゴールします。
これぞ、ロボットの真骨頂とも言える芸術的な操作をご堪能ください。
シンプルな繰り返し処理で構成
さあ、勝利へ向けてロボットを作っていきましょう。
今回のロボットは、非常にシンプルです。ゲームをスタートするまでの操作も含むので、そこそこの長さはありますが、基本的には、キー入力を単純に繰り返しているだけに過ぎません。
代入
最初に配置するのは、[代入]アクティビティです。左辺に[Ctrl]+[K]キーで“counter”という変数を作り、右辺に“1”を代入します。
「UiPath Studio」であれば、ゴールしたときの画像を検知して、繰り返し処理を止めることも可能ですが、今回は、シンプルにカウンターを使って、処理を一定回数繰り返します。
ブラウザーを開く
ゲームを開始するには、まずWebブラウザーを起動する必要があります。[ブラウザーを開く]アクティビティを配置して、URLにQWOPのサイト“"http://www.foddy.net/Athletics.html"”を指定します。
ちなみに、利用するブラウザーはIEです。「Firefox」、「Google Chrome」、「Microsoft Edge」も利用できますが、これらは拡張機能のインストールが必要なので、「UiPath Studio」では、基本的にIEを操作するのが簡単です。
画像をクリック
ここからは、ゲームの操作となりますので、しばらくの間、[ブラウザーを開く]の内側に処理を記述していきます。
最初の操作はゲームのスタートです。「QWOP」というタイトル画面が表示されるので、ここを[画像をクリック]アクティビティを使ってクリックします。
ブラウザー(Internet Explorer)を手動で起動し、QWOPの画面を表示後、[画像をクリック]アクティビティの[ブラウザー内で要素を指定]をクリックして、クリックする場所を指定します。
ここでは、わかりやすく“QWOP”というエリアを範囲指定して、ここをクリックさせます。
ホットキーを押下でスペースを入力
ゲームのスタートですが、とりあえず[ホットキーを押下]アクティビティを配置して、“" "”とスペースの入力を指定します。
これは、念のための処理です。初回は、上記のクリック操作で、すぐにゲームが開始されますが、ユーザーの手動プレイが間に挟まった場合、[press space to restart]という画面が表示されます。
この[ホットキーを押下]は、この画面が表示された場合の処理です。
ホットキーを押下で姿勢を作る
いよいよゲームをプレイします。まずは、絶対に転ばない姿勢を作ります。
[ホットキーを押下]アクティビティを配置し、“キー”に“"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"”と指定します。左ふとももを前に投げ出すことで、大股を開いた安定姿勢を取ります。
繰り返し(後判定)
安定姿勢を取れたので、ここから徐々に進んでいくことにします。
[繰り返し(後判定)]アクティビティを配置し、“condition”に“counter < 1050”と入力し、処理を1,049回繰り返させます。1回の操作で約10cm進むので、1,000回以上の繰り返しで、トータル100m進むという計算です。
ホットキーを押下
繰り返す処理を記述していきましょう。[ホットキーを押下]アクティビティを配置して、キャラクターの動きを指定します。
動きはシンプルで、“"wowowowowowowowowowowowowowoppppp"”です。ふとももとふくらはぎを交互に動かすことを繰り返し、最後に反対の足のふくらはぎを伸ばします。
正直、なぜ、これで徐々に進めるのかを、筆者は論理的に説明できませんが、じわじわと前に進みます。
代入でカウンターアップ
最後に、[代入]アクティビティを配置し、カウンターをひとつ上げます。
これでロボットは完成です。実行すると、安定姿勢を取ったあと、キャラクターが徐々に進む姿が見られます。30分ほどかかるので、昼休み前にでもセットして、帰ってきたら確認するといいでしょう。次の画面のようなゴール画面を拝めるはずです。
なお、途中にハードルがあるのですが、これもズルズルと押し込んでゴールします。