Интерфейс для поля, а не для офиса
Во время игры нет времени разбираться в сложной панели. Поэтому основной экран собран вокруг карты, радара и коротких действий. Важные состояния видны сразу, второстепенные настройки убраны глубже.

Радар
Показывает ближайших союзников относительно текущего направления: азимут, дистанцию и возраст позиции. Это быстрый режим для движения, когда подробная карта не нужна.
Карта
Показывает всю сторону, маршруты, точки, зоны и задачи. Свежая позиция, старая позиция и отсутствие данных выглядят по-разному.
Крупные действия
Кнопки рассчитаны на короткое нажатие в движении. Опасные действия, включая SOS и смену состояния игрока, требуют удержания.
Понятная деградация
При потере связи последняя точка не исчезает. Рядом показывается её возраст, чтобы командир не принял старую позицию за текущую.
Панель состояния
Bluetooth, узел, очередь, качество координат и заряд собраны в одном месте. Видно, где именно возникла проблема.
Полевая типографика
Короткие подписи, высокий контраст и ограниченное число уровней вложенности уменьшают число ошибок на ходу.
Командные функции
Каждое действие превращается в событие с автором, временем, адресатом и сроком жизни. Такой формат можно сохранить, повторно отправить и безопасно применить после восстановления связи.
Сообщения
Общий чат и адресные сообщения. Адресный пакет не обязан рассылаться всей сети, если известен маршрут к получателю.
Приказы
Задача игроку, группе или стороне. Приказ может содержать точку, область, срок и подтверждение получения.
Тактические объекты
Точки, маршруты, зоны и временные отметки. У объекта есть автор и срок действия, поэтому карта не заполняется устаревшими метками.
SOS и состояние игрока
События высокого приоритета. Они проходят впереди обычной телеметрии и требуют защищённого подтверждения в интерфейсе.
Избранные участники
Командир может закрепить нужных людей, чтобы не искать их в длинном списке во время движения.
Журнал
Локальная история позволяет восстановить последовательность приказов, сообщений и изменений состояния даже после перезапуска.
Позиция проходит проверку до появления на карте
Телефонный GPS иногда прыгает, запаздывает или даёт слишком грубую точку. Приложение не отправляет каждую координату без разбора.
Координата должна иметь допустимый возраст, точность и корректные значения широты и долготы.
Новая точка сравнивается с предыдущей, датчиками движения, направлением и короткой историей.
Точка принимается, сглаживается либо удерживается. Явно невозможный скачок не уходит в радиоэфир.
Позиция передаётся при заметном движении, изменении направления, улучшении точности или по интервалу.
Приложение использует идеи из навигации дронов: сравнивает GNSS с движением устройства, историей, созвездиями, уровнем сигнала, AGC и временной согласованностью. Оно может предупредить о возможной помехе или подмене, но не называет эвристику криптографическим доказательством.
PDR по шагам
Когда GNSS временно ухудшается, приложение может продолжить приблизительное движение от последней надёжной точки по шагам и направлению. Неопределённость постепенно растёт и явно учитывается.
Внешний GNSS
Архитектура предусматривает внешние NMEA-приёмники по Bluetooth или USB. Входные строки проверяются по контрольной сумме, времени, качеству фикса и HDOP.
Offline-first означает, что телефон не ждёт сеть
Сообщение или приказ сначала попадает в базу телефона, затем в очередь ПМ-1. Потеря Bluetooth не стирает действие.
Событие имеет устойчивый идентификатор. Повторно полученный пакет не создаёт вторую точку или второе сообщение.
Комната, привязка узла, очередь и журнал восстанавливаются из локального хранилища.
Подложка и игровые объекты загружаются заранее. Работа карты не зависит от мобильного интернета на полигоне.
Почему функции разделены между телефоном и ПМ-1
Телефон делает сложную работу
Карта, база данных, GNSS-анализ и интерфейс требуют памяти и вычислений. Android уже имеет экран, датчики и аккумулятор, поэтому дублировать всё это в радиомодуле бессмысленно.
ПМ-1 отвечает за надёжный транспорт
Узел держит радиопротокол, очереди, ретрансляцию и связь с соседями. Он продолжает обслуживать радио независимо от того, открыт ли экран карты.
