スマホが自分のループを数えるしくみ

Loopingにはカメラも審判もいりません。スマホが自分の投げを自分で測ります。手を離れた瞬間からスコアが表示されるまでに何が起きているのか、順に見ていきましょう。

どのスマホにも入っている2つのセンサー

加速度センサーは、スマホにかかる力を測ります。テーブルに置かれているときは重力を読み取り、その値は約9.8 m/s²です。ジャイロスコープは、スマホが3つの軸それぞれのまわりをどれだけ速く回っているかを測ります。単位は度/秒(°/s)です。

どちらも、もともとは画面を回転させ、歩数を数え、写真の手ぶれを抑えるためにスマホに入れられたものです。Loopingはこの2つをブラウザ経由で、1秒間に数十回読み取ります。

飛行を見つける

スマホが手を離れた瞬間、スマホを押すものは何もなくなります。上がっていくときも落ちてくるときも自由落下の状態で、加速度センサーの値はほぼゼロになります。この突然の「静けさ」が飛行のしるしです。そして、手やマットレスがスマホを受け止めると鋭いピークが出て、飛行は終わります。

ただ、スマホが回っていると話はややこしくなります。加速度センサーはスマホのちょうど中心にあるわけではないので、回転そのものがセンサーに力をかけるからです。そこでゲームは、単純な「ゼロ」を探すのではなく、加速度センサーの値が、ジャイロスコープで測った回転でぴったり説明できるかどうかを確かめます。手の中で振っただけのスマホや、テーブルの上でコマのように回したスマホは、このチェックを通りません。

飛行としてカウントされるには、0.3秒以上続く必要があります。高さにして約11cm。投げと、手がピクッと動いただけの動きを見分けるには十分です。

回転を数える

飛行中、ジャイロスコープは回転の速さを1秒間に何度も知らせてきます。それぞれの値に、その値が受け持つ時間を掛けて、すべて足し合わせる。すると、スマホが回った角度の合計がわかります。軸は問いません。コインのように縦に回っても(フリップ)、長い辺を軸に回っても(ロール)、コマのように水平に回っても(フラットスピン)同じです。

1ループは360°。画面に出る数字は完全に回った回数で、80%まで回れば1回転として数えます。投げを見ている人の目には、実際に空中で回った分より5分の1回転ほど多く見えます。スマホは手を離れる前からすでに回っていて、キャッチの瞬間もまだ回っているからです。一方、ランキングは総回転で決まります。それも1度単位で。

高さはどこからわかるのか

ゲームに天井は見えません。測っているのは飛行の時間です。真上に投げて同じ高さでキャッチしたものは、滞空時間の半分を上昇に、残りの半分を落下に使います。ここから高さが割り出せます。空中に0.5秒なら約30cm、0.75秒なら約70cm、1秒なら約1.2mです。

あくまで推定値です。投げた位置より低いところでキャッチすると、数字は少しだけ甘くなります。

センサーが追いつけなくなるとき

どのジャイロスコープにも上限があります。回転がある速さを超えると、ずっと同じ数値しか返さなくなるのです。私たちの計測では、一部のAndroidで約1,150 °/s、別の機種で2,300 °/s、最近のiPhoneで4,000 °/s(1秒間に11回転)でした。

投げが上限を超えても、ゲームは足りない回転をでっち上げません。実際に計測できた最低値をスコアとして結果にその旨を表示するか、何も保証できないときは投げを無効にします。スコアが実際より低くなることはあっても、高くなることは決してありません。

スコアをサーバーが管理する理由

スマホは投げを記録するだけで、判定はしません。生データはゲームのサーバーに送られ、サーバーが全員に同じルールでスコアを計算し、そのデータが本物の飛行を表しているかを確かめます。ひとつの記録がカウントされるのは一度きりです。

ランキングが信頼できるのはそのためです。誰も「数字」を送ることはできず、送れるのは「投げ」だけ。ネットワークがないときは、投げはスマホに保存され(最大12回分、7日間)、接続が戻ったときにカウントされます。

ゲームが読むもの、読まないもの

Loopingが読むのはモーションセンサーだけです。カメラも、マイクも、位置情報も使いません。何がどれだけの期間記録されるかは、法的情報に書いてあります。

Looping をプレイ

もっと詳しく

English Français Español Português Deutsch Italiano Nederlands Polski Türkçe Русский Українська العربية हिन्दी বাংলা Bahasa Indonesia Tiếng Việt ไทย 日本語 한국어 中文