Як телефон рахує власні лупінги

Looping не потрібні ні камера, ні суддя: телефон сам вимірює свій кидок. Ось що відбувається між миттю, коли він покидає твою руку, і миттю, коли з'являється результат.

Два датчики, які є в кожному телефоні

Акселерометр вимірює сили, що діють на телефон. Коли той лежить на столі, акселерометр показує земне тяжіння — близько 9,8 м/с². Гіроскоп вимірює, як швидко телефон обертається навколо кожної зі своїх трьох осей, у градусах за секунду.

Обидва з'явилися в телефонах, щоб повертати екран, рахувати кроки та стабілізувати фото. Looping читає їх через браузер десятки разів на секунду.

Як розпізнати політ

Тієї миті, коли телефон покидає руку, його вже ніщо не штовхає. Він у вільному падінні — і дорогою вгору, і дорогою вниз, — тож акселерометр майже нічого не показує. Ця раптова тиша і є підписом польоту. Закінчується він різким піком, коли телефон зупиняє рука або матрац.

Обертання розмиває картину: акселерометр стоїть не точно в центрі телефону, тож саме обертання на нього тисне. Тому гра шукає не просто нуль. Вона перевіряє, що покази акселерометра точно пояснюються обертанням, яке виміряв гіроскоп. Телефон, який трясуть у руці або крутять на столі, цієї перевірки не проходить.

Щоб політ зарахували, він має тривати щонайменше 0,3 секунди: це близько одинадцяти сантиметрів угору — досить, щоб відрізнити кидок від посмикування руки.

Як рахуються оберти

Під час польоту гіроскоп багато разів на секунду видає швидкість обертання. Помнож кожне вимірювання на час, який воно охоплює, додай усе — і отримаєш повний кут, на який повернувся телефон, байдуже, навколо якої осі: через край (сальто), навколо довгої осі (бочка) або плазом, як дзиґа (плоске обертання).

Один лупінг — це 360°. Число на екрані — кількість повних обертів, а оберт зараховується від 80 %. Ті, хто дивиться на кидок, бачать приблизно на п'яту частину оберту більше, ніж є у вільному польоті: телефон починає крутитися ще в руці й продовжує, коли його ловлять. А рейтинг рахується за повним кутом, з точністю до градуса.

Звідки береться висота

Гра не бачить стелі: вона засікає час польоту. Предмет, який підкинули вгору і зловили на тій самій висоті, половину часу польоту піднімається, а половину падає — звідси й висота: 0,5 с у повітрі — це близько 30 см, 0,75 с — близько 70 см, одна секунда — близько 1,2 м.

Це оцінка. Зловиш телефон нижче, ніж кинув, — і цифра тобі трохи підлестить.

Коли датчик не встигає

Кожен гіроскоп має межу: швидкість обертання, вище за яку він щоразу видає те саме число. Ми наміряли близько 1150 °/с на одних Android-телефонах, 2300 °/с на інших і 4000 °/с на новому iPhone — це одинадцять обертів на секунду.

Коли кидок перевищує межу, гра не вигадує обертів, яких бракує. Вона залишає мінімум, який справді виміряла, і пише про це в результаті — або не зараховує кидок, якщо нічого не може гарантувати. Результат може бути нижчим за правду; вищим — ніколи.

Чому результат рахує сервер

Твій телефон записує кидок, але не судить його. Сирі вимірювання йдуть на сервер гри: він рахує результат за однаковими для всіх правилами і перевіряє, що вимірювання описують справжній вільний політ. Один запис можна зарахувати лише раз.

Тому рейтингу можна довіряти: ніхто не може надіслати число — лише кидок. Без мережі кидок зберігається на телефоні (до дванадцяти кидків, сім днів) і зараховується, коли зв'язок повернеться.

Що гра читає, а що ні

Looping читає датчики руху, і нічого більше: ні камери, ні мікрофона, ні місцезнаходження. Що записується і як довго зберігається, написано у правовій інформації.

Грати в Looping

Дізнатися більше

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