無駄ロボット研究所

【UiPath】RPAで超難易度ゲーム「QWOP」を自動操縦で完走 ~爽快! QWOP自動クリアロボの巻

10cmずつコツコツ進んで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分ほどかかるので、昼休み前にでもセットして、帰ってきたら確認するといいでしょう。次の画面のようなゴール画面を拝めるはずです。

 なお、途中にハードルがあるのですが、これもズルズルと押し込んでゴールします。