読者です 読者をやめる 読者になる 読者になる

iOSコピペコーディング

できることは知ってるけど、コードってどうやって書くんだっけ?をコピペで解決

ポケモンGO「引きこもりトレーナーの散歩術」位置情報系開発者目線のPokémon GO #3

引きこもりトレーナーの散歩術です。
この方法を使えば家にいながらにして歩行距離を稼ぐことができます。
検証機材はiPhone iOS9のみ対応バージョンは1.3.1です。
(1.3.1でも動作を確認しました 8/14)

 

以下の方法でアバターを移動することができることがあります。
1.WiFiをOFFにする。
2.コントロールセンターをちょっとだけ出す
3.指を離してコントロールセンターを消す。
4.トレーナーのアバターが動いたら手順2と3を繰り返す。
実際の操作は動画を参考にしてください。

youtu.be



手順3のときに、画面上のトレーナーが動いた場合は連続的に同一方向に移動し続ける現象が発生します。
動かない時はWiFiをONにして、しばらく待ってから手順1からやり直します。

※一回の操作あたりのアバターの移動量が多い時は手順3の後に、アバターが停止して、少し時間をおいて手順2を実行するようにしないと速度オーバーの判定になりますので工夫が必要です。
※この裏技は高度に環境に左右されるため、できる場所はかなり限定されると思われます。
※何度かやっているうちに偶発的に成功します。確実な動作条件はわかりません。


cheero Power Plus 10050mAh DANBOARD version モバイルバッテリー

cheero Power Plus 10050mAh DANBOARD version モバイルバッテリー

 

 

技術的考察
以下技術的考察なので普通の人には面白く無い内容です
このブログはポケモンGOの遊び方を紹介することよりも、位置情報系技術の有効活用方法としてポケモンGOを捉え技術的にどのように今後役立てることができるかを検証することを主目的としています。なお検証はリバースエンジニアリングなどは行わずに、正規操作でどんな問題が起きるか?この技術はすごい!この仕組みは多分こうなっているので次回作に役立つ!ということを検証と妄想を交えて記事にしています。問題が確認できた場合はすぐにナイアンテックに報告し、その対処速度なども検証しています。

このバグは位置情報の受信状況とアバターのアニメーションの仕様の組み合わせによって発生しているものと思われます。

このため以下の条件が必要となると思われます。
GPS感度が微弱な状態にあること
WiFiがオフでA-GPSのアシストが効かない状態にあること
アバターの動作アニメーションが保持されていること

GPS感度が微弱な状態にあること
GPSが受信できないことはないが、かなりの時間更新されないような状態を保持する必要があるようです。新しいGPS電波の解析ができて、位置情報を取得すると、アバターは元の位置に強制送還されます。このため、裏技中はGPSがなかなか更新できない程度にGPS感度が低い場所でしか実行不可能と判断しています。
逆に言うと全く受信できない状態で赤い帯で「GPSの信号をさがしています」と出る場合もこの裏技は使えないようです。
引きこもり部屋の、窓から遠い、赤い帯で「GPSの信号をさがしています」と時々出るような場所が最適なようです。

WiFiがオフでA-GPSのアシストが効かない状態にあること
WiFiがONでアシストが効いている場合は位置情報が更新される可能性が高まるのでWiFiの設定はOFFでなくてはいけないようです。
実際ONではこの方法は成功した実例がありません。

アバターの動作アニメーションが保持されていること
位置情報の変化をアニメーションで示す場合は大抵新しい位置情報を受けてから、どの方向にどれだけの距離を移動するというアニメーションを作成するのが普通です。
リアルタイムで動いているように見える効果も実は1秒ほど遅延させることで、体感速度を稼いでるにすぎません。
このリアルタイムに見せる効果を実現するために、アバターのアニメーションは常に後出しじゃんけん状態でアニメーションを実行します。
コントロールセンターを出すことでアプリケーションは一時的に停止状態にするようにOSから指示されます。
ユニティーで作ったゲームアプリケーションは顕著にこのルールを守る仕組みになっているらしく、コントロールセンターを出すと全てのアニメーションが一時停止します。
そしてコントロールセンターを閉じると、アプリケーションは再開します。
ポケモンGOでは、この復帰処理の際にアバターの動作アニメーションを再動作させるようにして、位置情報を再取得しようと試みる対策が施されているようです。
ここで、前述のように新しい位置情報が取れず、アニメーションが保持されていると、前回アバターが移動したアニメーションを繰り返すことになります。

これらの複合結果として、ユーザが動かなくてもアバターは一定方向に移動し続けるという、このバグが成立するものと思われます。
この問題はナイアンテックに報告済みですので、近い将来封印されると思います。

ポケモンGOよくわかる攻略本1: 〜SNS・まとめ動画・LINE@まで大公開!〜

ポケモンGOよくわかる攻略本1: 〜SNS・まとめ動画・LINE@まで大公開!〜